+++ /dev/null
-diff -urN monit-4.0.org/process/sysdep_LINUX.c monit-4.0/process/sysdep_LINUX.c
---- monit-4.0.org/process/sysdep_LINUX.c 2003-09-08 19:20:44.000000000 +0200
-+++ monit-4.0/process/sysdep_LINUX.c 2003-09-08 19:26:46.000000000 +0200
-@@ -84,24 +84,38 @@
- * @file
- */
-
--#define PAGE_TO_KBYTE_SHIFT PAGE_SHIFT-10
-+#define PAGE_TO_KBYTE_SHIFT PAGE_SHIFT-10
-+#define FREEMEM "MemFree:"
-+#define FREESWAP "SwapFree:"
-
- int init_process_info_sysdep(void) {
-
-- struct stat buf;
--
-+ int memfd;
-+ char buf[1024], *ptr1, *ptr2;
-
-- /* I hope this is okay hack to get the total memsize. (-: */
-+ if ((memfd = open("/proc/meminfo", O_RDONLY)) == -1) {
-+ return FALSE;
-+ }
-
-- if ( stat("/proc/kcore", &buf) != 0 ) {
-+ /* read the file */
-+ if (read(memfd, buf, sizeof(buf)) < 0) {
-+ close(memfd);
-+ return FALSE;
-+ }
-
-- return FALSE;
-+ close(memfd);
-+
-+ ptr1 = strstr(buf, FREEMEM);
-+ ptr2 = strstr(buf, FREESWAP);
-
-+ if (!ptr1 || !ptr2) {
-+ return FALSE;
- }
-
-- num_cpus= sysconf(_SC_NPROCESSORS_CONF);
-+ /* we only care about integer values */
-+ mem_kbyte_max = atoi(ptr1+strlen(FREEMEM)) /* + atoi(ptr2+strlen(FREESWAP)) */ ;
-
-- mem_kbyte_max = buf.st_size>>10;
-+ num_cpus= sysconf(_SC_NPROCESSORS_CONF);
-
- return TRUE;
-