last_patch_69, 8 bit clean and other fixes from Vladimir N. Oleynik
[oweals/busybox.git] / libbb / procps.c
index 9ac5be092274fd7b6580c43f47db8584532baee6..2d2a9665f613088e7bbceb194181d462c654af12 100644 (file)
@@ -8,8 +8,6 @@
  *
  */
 
-#include "libbb.h"
-
 #if ! defined CONFIG_FEATURE_USE_DEVPS_PATCH
 #include <dirent.h>
 #include <string.h>
@@ -17,6 +15,7 @@
 #include <unistd.h>
 #include <asm/page.h>
 
+#include "libbb.h"
 
 extern procps_status_t * procps_scan(int save_user_arg0)
 {
@@ -111,10 +110,17 @@ extern procps_status_t * procps_scan(int save_user_arg0)
                if(save_user_arg0) {
                        if((fp = fopen(status, "r")) == NULL)
                                continue;
-                       if(fgets(buf, sizeof(buf), fp) != NULL) {
-                               name = strchr(buf, '\n');
-                               if(name != NULL)
-                                       *name = 0;
+                       if((n=fread(buf, 1, sizeof(buf)-1, fp)) > 0) {
+                               if(buf[n-1]=='\n')
+                                       buf[--n] = 0;
+                               name = buf;
+                               while(n) {
+                                       if(((unsigned char)*name) < ' ')
+                                               *name = ' ';
+                                       name++;
+                                       n--;
+                               }
+                               *name = 0;
                                if(buf[0])
                                        curstatus.cmd = strdup(buf);
                                /* if NULL it work true also */