[git commit master] ps: make "ps -o BAD" emit list of good -o params

Denys Vlasenko vda.linux at googlemail.com
Sat May 22 22:34:42 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=9e07219c7814972893d1f3bb67b43108fe83212a
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

also make ps help more informative

function                                             old     new   delta
find_out_spec                                         58     103     +45
packed_usage                                       27039   27079     +40

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 include/usage.h |    8 ++++----
 procps/ps.c     |   22 ++++++++++++++++++----
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/include/usage.h b/include/usage.h
index 8f695f8..d53b867 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -3574,11 +3574,11 @@
 #if ENABLE_DESKTOP
 
 #define ps_trivial_usage \
-       ""
+       "[-o COL1,COL2=HEADER]" IF_FEATURE_SHOW_THREADS(" [-T]")
 #define ps_full_usage "\n\n" \
-       "Report process status\n" \
+       "Show list of processes\n" \
      "\nOptions:" \
-     "\n	-o col1,col2=header	Select columns for display" \
+     "\n	-o COL1,COL2=HEADER	Select columns for display" \
 	IF_FEATURE_SHOW_THREADS( \
      "\n	-T			Show threads" \
 	)
@@ -3594,7 +3594,7 @@
 #define ps_trivial_usage \
        ""
 #define ps_full_usage "\n\n" \
-       "Report process status\n" \
+       "Show list of processes\n" \
 	USAGE_PS \
 	IF_SELINUX( \
      "\n	-Z	Show selinux context" \
diff --git a/procps/ps.c b/procps/ps.c
index c3b2008..a3220a9 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -232,7 +232,6 @@ static void func_tty(char *buf, int size, const procps_status_t *ps)
 		snprintf(buf, size+1, "%u,%u", ps->tty_major, ps->tty_minor);
 }
 
-
 #if ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS
 
 static void func_rgroup(char *buf, int size, const procps_status_t *ps)
@@ -250,9 +249,10 @@ static void func_nice(char *buf, int size, const procps_status_t *ps)
 	sprintf(buf, "%*d", size, ps->niceness);
 }
 
-#endif /* FEATURE_PS_ADDITIONAL_COLUMNS */
+#endif
 
 #if ENABLE_FEATURE_PS_TIME
+
 static void func_etime(char *buf, int size, const procps_status_t *ps)
 {
 	/* elapsed time [[dd-]hh:]mm:ss; here only mm:ss */
@@ -278,6 +278,7 @@ static void func_time(char *buf, int size, const procps_status_t *ps)
 	mm /= 60;
 	snprintf(buf, size+1, "%3lu:%02u", mm, ss);
 }
+
 #endif
 
 #if ENABLE_SELINUX
@@ -337,11 +338,24 @@ static ps_out_t* new_out_t(void)
 static const ps_out_t* find_out_spec(const char *name)
 {
 	unsigned i;
+#if ENABLE_DESKTOP
+	char buf[ARRAY_SIZE(out_spec)*7 + 1];
+	char *p = buf;
+#endif
+
 	for (i = 0; i < ARRAY_SIZE(out_spec); i++) {
-		if (!strncmp(name, out_spec[i].name6, 6))
+		if (strncmp(name, out_spec[i].name6, 6) == 0)
 			return &out_spec[i];
+#if ENABLE_DESKTOP
+		p += sprintf(p, "%.6s,", out_spec[i].name6);
+#endif
 	}
-	bb_error_msg_and_die("bad -o argument '%s'", name);
+#if ENABLE_DESKTOP
+	p[-1] = '\0';
+	bb_error_msg_and_die("bad -o argument '%s', supported arguments: %s", name, buf);
+#else
+	bb_error_msg_and_die("bad -o argument '%s'");
+#endif
 }
 
 static void parse_o(char* opt)
-- 
1.6.3.3



More information about the busybox-cvs mailing list