Jens Michaelsen pointed out that Linksys' firmware download side moved.
[oweals/busybox.git] / procps / ps.c
index 6b5a4a908641d792f363010cbb913dc570c481f6..9dc68395ae1996117251e8d06f4431cc884a4074 100644 (file)
@@ -7,6 +7,7 @@
  * Licensed under the GPL v2, see the file LICENSE in this tarball.
  */
 
+#include "busybox.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <string.h>
 #include <termios.h>
 #include <sys/ioctl.h>
-#include "busybox.h"
 #if ENABLE_SELINUX
 #include <selinux/selinux.h>  /* for is_selinux_enabled()  */
 #endif
 
-extern int ps_main(int argc, char **argv)
+int ps_main(int argc, char **argv)
 {
        procps_status_t * p;
        int i, len;
+
 #if ENABLE_SELINUX
        int use_selinux = 0;
        security_context_t sid=NULL;
 #endif
+
 #if ENABLE_FEATURE_PS_WIDE
        int terminal_width;
        int w_count = 0;
-       bb_opt_complementally="ww";
+
+       bb_opt_complementally="-:ww";
 #else
-# define terminal_width 80
+# define terminal_width 79
 #endif
 
 #if ENABLE_FEATURE_PS_WIDE || ENABLE_SELINUX
@@ -43,7 +46,7 @@ extern int ps_main(int argc, char **argv)
 #if ENABLE_FEATURE_PS_WIDE && ENABLE_SELINUX
        i = bb_getopt_ulflags(argc, argv, "wc", &w_count);
 #elif ENABLE_FEATURE_PS_WIDE && !ENABLE_SELINUX
-       i = bb_getopt_ulflags(argc, argv, "w", &w_count);
+       bb_getopt_ulflags(argc, argv, "w", &w_count);
 #else /* !ENABLE_FEATURE_PS_WIDE && ENABLE_SELINUX */
        i = bb_getopt_ulflags(argc, argv, "c");
 #endif
@@ -51,10 +54,10 @@ extern int ps_main(int argc, char **argv)
        /* if w is given once, GNU ps sets the width to 132,
         * if w is given more than once, it is "unlimited"
         */
-       if((i & 1)) {
+       if(w_count) {
                terminal_width = (w_count==1) ? 132 : INT_MAX;
        } else {
-               get_terminal_width_height(0, &terminal_width, NULL);
+               get_terminal_width_height(1, &terminal_width, NULL);
                /* Go one less... */
                terminal_width--;
        }
@@ -108,14 +111,14 @@ extern int ps_main(int argc, char **argv)
                if(namecmd && namecmd[0]) {
                        if(i < 0)
                                i = 0;
-                       if(strlen(namecmd) > i)
+                       if(strlen(namecmd) > (size_t)i)
                                namecmd[i] = 0;
                        printf("%s\n", namecmd);
                } else {
                        namecmd = p->short_cmd;
                        if(i < 2)
                                i = 2;
-                       if(strlen(namecmd) > (i-2))
+                       if(strlen(namecmd) > ((size_t)i-2))
                                namecmd[i-2] = 0;
                        printf("[%s]\n", namecmd);
                }