Fixes so "make allnoconfig" works again.
[oweals/busybox.git] / libbb / procps.c
index e76e1ac364c16b0a74d193422e9d670a5d413623..72f627f15e3f22ad870291e38cc562be186ffed5 100644 (file)
@@ -8,7 +8,6 @@
  *
  */
 
-#if ! defined CONFIG_FEATURE_USE_DEVPS_PATCH
 #include <dirent.h>
 #include <string.h>
 #include <stdlib.h>
@@ -35,7 +34,7 @@ extern procps_status_t * procps_scan(int save_user_arg0)
        if (!dir) {
                dir = opendir("/proc");
                if(!dir)
-                       error_msg_and_die("Can't open /proc");
+                       bb_error_msg_and_die("Can't open /proc");
        }
        for(;;) {
                if((entry = readdir(dir)) == NULL) {
@@ -51,12 +50,15 @@ 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, sizeof(curstatus.user));
+
                sprintf(status, "/proc/%d/stat", pid);
+
                if((fp = fopen(status, "r")) == NULL)
                        continue;
-               if(fstat(fileno(fp), &sb))
-                       continue;
-               my_getpwuid(curstatus.user, sb.st_uid);
                name = fgets(buf, sizeof(buf), fp);
                fclose(fp);
                if(name == NULL)
@@ -104,10 +106,14 @@ 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
 
-               sprintf(status, "/proc/%d/cmdline", pid);
                if(save_user_arg0) {
+                       sprintf(status, "/proc/%d/cmdline", pid);
                        if((fp = fopen(status, "r")) == NULL)
                                continue;
                        if((n=fread(buf, 1, sizeof(buf)-1, fp)) > 0) {
@@ -115,7 +121,7 @@ extern procps_status_t * procps_scan(int save_user_arg0)
                                        buf[--n] = 0;
                                name = buf;
                                while(n) {
-                                       if(*name < ' ')
+                                       if(((unsigned char)*name) < ' ')
                                                *name = ' ';
                                        name++;
                                        n--;
@@ -131,8 +137,6 @@ extern procps_status_t * procps_scan(int save_user_arg0)
        }
 }
 
-#endif /* CONFIG_FEATURE_USE_DEVPS_PATCH. Else this file is empty */
-
 /* END CODE */
 /*
 Local Variables: