severity 275875 important
severity 255111 important
merge 276990 255111 275875 
thanks

Patch allowing use on 2.6 kernels, and correcting a bug in the
reported size of the kernel (was <<10).  This patch should be used
instead of the one on rtfo.org (which is not presently accessible, so
I cannot update it).

Justin
--- proc.c.old  2005-01-16 11:49:25.000000000 -0500
+++ proc.c      2005-01-16 20:31:34.000000000 -0500
@@ -23,6 +23,9 @@
 /*
  * Set values for various memory usages
  */
+#define MemTotalLine   "MemTotal:"
+#define        MemFreeLine     "MemFree:"
+#define        BuffersLine     "Buffers:"
 static void
 SetMemInfo ( void )
 {
@@ -63,12 +66,28 @@
    {
       if ( !strncmp ( buf , MemLine , MemLineLen ) )
       {
+        /* Linux 2.4 (and earlier?) */
         /* Mem: total used free shared buffers cached */
         sscanf ( buf , "%*s %d %*d %d %*d %d" , &totalmem , &freemem ,
                  &buffermem ) ;
         break ;
+
+      /* Linux 2.6 (and later?) */
+      } else if (!strncmp(buf, MemTotalLine, strlen(MemTotalLine))) {
+             sscanf(buf, "%*s %d", &totalmem);
+      } else if (!strncmp(buf, MemFreeLine, strlen(MemFreeLine))) {
+             sscanf(buf, "%*s %d", &freemem);
+      } else if (!strncmp(buf, BuffersLine, strlen(BuffersLine))) {
+             sscanf(buf, "%*s %d", &buffermem);
       }
    }
+
+   if (!totalmem) {
+          fprintf(stderr, "Fatal error reading /proc/meminfo\n");
+          exit(1);
+   }
+
+   sysmem /= 1024 ;
    sysmem /= 1024 ;
    totalmem /= 1024 ;
    freemem /= 1024 ;

Reply via email to