From: Denys Vlasenko Date: Mon, 21 Sep 2009 21:58:43 +0000 (+0200) Subject: ps: conditionally enable -T on non-DESKTOP build too X-Git-Tag: 1_16_0~472 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d75295c80bcfa577b124328f09e75ea15facf67f;p=oweals%2Fbusybox.git ps: conditionally enable -T on non-DESKTOP build too function old new delta ps_main 253 274 +21 Signed-off-by: Denys Vlasenko --- diff --git a/procps/ps.c b/procps/ps.c index b35b49c04..d86ac6d2f 100644 --- a/procps/ps.c +++ b/procps/ps.c @@ -479,7 +479,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv) // Select which columns to display /* We allow (and ignore) most of the above. FIXME */ opt_complementary = "o::"; - opt = getopt32(argv, "Zo:aAdefl" IF_FEATURE_SHOW_THREADS("T"), &opt_o); + opt = getopt32(argv, "Zo:aAdefl"IF_FEATURE_SHOW_THREADS("T"), &opt_o); if (opt_o) { do { parse_o(llist_pop(&opt_o)); @@ -528,56 +528,56 @@ int ps_main(int argc UNUSED_PARAM, char **argv) int ps_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) { - procps_status_t *p = NULL; + procps_status_t *p; int len; - IF_NOT_SELINUX(const) int use_selinux = 0; - IF_SELINUX(int i;) + int psscan_flags = PSSCAN_PID | PSSCAN_UIDGID + | PSSCAN_STATE | PSSCAN_VSZ | PSSCAN_COMM; #if !ENABLE_FEATURE_PS_WIDE enum { terminal_width = 79 }; #else unsigned terminal_width; - int w_count = 0; #endif #if ENABLE_FEATURE_PS_WIDE || ENABLE_SELINUX -#if ENABLE_FEATURE_PS_WIDE + int opts; +# if ENABLE_FEATURE_PS_WIDE + int w_count = 0; opt_complementary = "-:ww"; - IF_SELINUX(i =) getopt32(argv, IF_SELINUX("Z") "w", &w_count); + opts = getopt32(argv, IF_SELINUX("Z")IF_FEATURE_SHOW_THREADS("T")"w", &w_count); /* if w is given once, GNU ps sets the width to 132, * if w is given more than once, it is "unlimited" */ if (w_count) { - terminal_width = (w_count==1) ? 132 : MAX_WIDTH; + terminal_width = (w_count == 1) ? 132 : MAX_WIDTH; } else { get_terminal_width_height(0, &terminal_width, NULL); /* Go one less... */ if (--terminal_width > MAX_WIDTH) terminal_width = MAX_WIDTH; } -#else /* only ENABLE_SELINUX */ - i = getopt32(argv, "Z"); -#endif -#if ENABLE_SELINUX - if ((i & 1) && is_selinux_enabled()) - use_selinux = PSSCAN_CONTEXT; -#endif +# else /* only ENABLE_SELINUX */ + opts = getopt32(argv, "Z"IF_FEATURE_SHOW_THREADS("T")); +# endif +# if ENABLE_SELINUX + if ((opts & 1) && is_selinux_enabled()) + psscan_flags = PSSCAN_PID | PSSCAN_CONTEXT + | PSSCAN_STATE | PSSCAN_COMM; +# endif +# if ENABLE_FEATURE_SHOW_THREADS + if (opts & (1 << ENABLE_SELINUX)) + psscan_flags |= PSSCAN_TASKS; +# endif #endif /* ENABLE_FEATURE_PS_WIDE || ENABLE_SELINUX */ - if (use_selinux) + if (psscan_flags & PSSCAN_CONTEXT) puts(" PID CONTEXT STAT COMMAND"); else puts(" PID USER VSZ STAT COMMAND"); - while ((p = procps_scan(p, 0 - | PSSCAN_PID - | PSSCAN_UIDGID - | PSSCAN_STATE - | PSSCAN_VSZ - | PSSCAN_COMM - | use_selinux - )) != NULL) { + p = NULL; + while ((p = procps_scan(p, psscan_flags)) != NULL) { #if ENABLE_SELINUX - if (use_selinux) { + if (psscan_flags & PSSCAN_CONTEXT) { len = printf("%5u %-32.32s %s ", p->pid, p->context ? p->context : "unknown", diff --git a/procps/top.c b/procps/top.c index dbaaca14f..9e8ad1d1f 100644 --- a/procps/top.c +++ b/procps/top.c @@ -895,7 +895,7 @@ int top_main(int argc UNUSED_PARAM, char **argv) int lines_rem; unsigned interval; char *str_interval, *str_iterations; - IF_NOT_FEATURE_TOPMEM(const) unsigned scan_mask = TOP_MASK; + unsigned scan_mask = TOP_MASK; #if ENABLE_FEATURE_USE_TERMIOS struct termios new_settings; struct pollfd pfd[1]; @@ -1080,13 +1080,13 @@ int top_main(int argc UNUSED_PARAM, char **argv) sort_function[2] = time_sort; # endif } -#if ENABLE_FEATURE_SHOW_THREADS +# if ENABLE_FEATURE_SHOW_THREADS if (c == 'h' IF_FEATURE_TOPMEM(&& scan_mask != TOPMEM_MASK) ) { scan_mask ^= PSSCAN_TASKS; } -#endif +# endif # if ENABLE_FEATURE_TOP_CPU_USAGE_PERCENTAGE if (c == 'p') { IF_FEATURE_TOPMEM(scan_mask = TOP_MASK;)