Larry Doolittle writes:
[oweals/busybox.git] / libbb / procps.c
index fbb05532a8c00a3d18437845d9545d32dbe5b788..46e982766d3374b36e17868477caa32a8b9dfe16 100644 (file)
 
 #include "libbb.h"
 
-#ifndef
-#define PAGE_MASK              (~((getpagesize())-1))
-#endif
-
 extern procps_status_t * procps_scan(int save_user_arg0
 #ifdef CONFIG_SELINUX
        , int use_selinux , security_id_t *sid
@@ -58,6 +54,11 @@ extern procps_status_t * procps_scan(int save_user_arg0
                pid = atoi(name);
                curstatus.pid = pid;
 
+               sprintf(status, "/proc/%d", pid);
+               if(stat(status, &sb))
+                       continue;
+               my_getpwuid(curstatus.user, sb.st_uid);
+
                sprintf(status, "/proc/%d/stat", pid);
                if((fp = fopen(status, "r")) == NULL)
                        continue;
@@ -69,9 +70,6 @@ extern procps_status_t * procps_scan(int save_user_arg0
                }
                else
 #endif
-               if(fstat(fileno(fp), &sb))
-                       continue;
-               my_getpwuid(curstatus.user, sb.st_uid);
                name = fgets(buf, sizeof(buf), fp);
                fclose(fp);
                if(name == NULL)
@@ -119,7 +117,11 @@ extern procps_status_t * procps_scan(int save_user_arg0
                else
                        curstatus.state[2] = ' ';
 
+#ifdef PAGE_SHIFT
                curstatus.rss <<= (PAGE_SHIFT - 10);     /* 2**10 = 1kb */
+#else
+               curstatus.rss *= (getpagesize() >> 10);     /* 2**10 = 1kb */
+#endif
 
                if(save_user_arg0) {
                        sprintf(status, "/proc/%d/cmdline", pid);