ps: make "ps -o BAD" emit list of good -o params

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@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-05-23 00:34:42 +02:00
parent 765b0eed3e
commit 9e07219c78
2 changed files with 22 additions and 8 deletions

View File

@ -3574,11 +3574,11 @@
#if ENABLE_DESKTOP #if ENABLE_DESKTOP
#define ps_trivial_usage \ #define ps_trivial_usage \
"" "[-o COL1,COL2=HEADER]" IF_FEATURE_SHOW_THREADS(" [-T]")
#define ps_full_usage "\n\n" \ #define ps_full_usage "\n\n" \
"Report process status\n" \ "Show list of processes\n" \
"\nOptions:" \ "\nOptions:" \
"\n -o col1,col2=header Select columns for display" \ "\n -o COL1,COL2=HEADER Select columns for display" \
IF_FEATURE_SHOW_THREADS( \ IF_FEATURE_SHOW_THREADS( \
"\n -T Show threads" \ "\n -T Show threads" \
) )
@ -3594,7 +3594,7 @@
#define ps_trivial_usage \ #define ps_trivial_usage \
"" ""
#define ps_full_usage "\n\n" \ #define ps_full_usage "\n\n" \
"Report process status\n" \ "Show list of processes\n" \
USAGE_PS \ USAGE_PS \
IF_SELINUX( \ IF_SELINUX( \
"\n -Z Show selinux context" \ "\n -Z Show selinux context" \

View File

@ -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); snprintf(buf, size+1, "%u,%u", ps->tty_major, ps->tty_minor);
} }
#if ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS #if ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS
static void func_rgroup(char *buf, int size, const procps_status_t *ps) 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); sprintf(buf, "%*d", size, ps->niceness);
} }
#endif /* FEATURE_PS_ADDITIONAL_COLUMNS */ #endif
#if ENABLE_FEATURE_PS_TIME #if ENABLE_FEATURE_PS_TIME
static void func_etime(char *buf, int size, const procps_status_t *ps) static void func_etime(char *buf, int size, const procps_status_t *ps)
{ {
/* elapsed time [[dd-]hh:]mm:ss; here only mm:ss */ /* 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; mm /= 60;
snprintf(buf, size+1, "%3lu:%02u", mm, ss); snprintf(buf, size+1, "%3lu:%02u", mm, ss);
} }
#endif #endif
#if ENABLE_SELINUX #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) static const ps_out_t* find_out_spec(const char *name)
{ {
unsigned i; 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++) { 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]; 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) static void parse_o(char* opt)