diff options
-rw-r--r-- | procps/ps.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/procps/ps.c b/procps/ps.c index d86ac6d2f..e94004541 100644 --- a/procps/ps.c +++ b/procps/ps.c @@ -303,7 +303,7 @@ static const ps_out_t out_spec[] = { { 8 , "user" ,"USER" ,func_user ,PSSCAN_UIDGID }, { 8 , "group" ,"GROUP" ,func_group ,PSSCAN_UIDGID }, { 16 , "comm" ,"COMMAND",func_comm ,PSSCAN_COMM }, - { 256 , "args" ,"COMMAND",func_args ,PSSCAN_COMM }, + { MAX_WIDTH , "args" ,"COMMAND",func_args ,PSSCAN_COMM }, { 5 , "pid" ,"PID" ,func_pid ,PSSCAN_PID }, { 5 , "ppid" ,"PPID" ,func_ppid ,PSSCAN_PPID }, { 5 , "pgid" ,"PGID" ,func_pgid ,PSSCAN_PGID }, @@ -383,7 +383,7 @@ static void parse_o(char* opt) print_header = 1; } -static void post_process(void) +static void alloc_line_buffer(void) { int i; int width = 0; @@ -393,6 +393,12 @@ static void post_process(void) print_header = 1; } width += out[i].width + 1; /* "FIELD " */ + if ((int)(width - terminal_width) > 0) { + /* The rest does not fit on the screen */ + //out[i].width -= (width - terminal_width - 1); + out_cnt = i + 1; + break; + } } #if ENABLE_SELINUX if (!is_selinux_enabled()) @@ -497,7 +503,6 @@ int ps_main(int argc UNUSED_PARAM, char **argv) } parse_o(default_o); } - post_process(); #if ENABLE_FEATURE_SHOW_THREADS if (opt & OPT_T) need_flags |= PSSCAN_TASKS; @@ -511,6 +516,7 @@ int ps_main(int argc UNUSED_PARAM, char **argv) if (--terminal_width > MAX_WIDTH) terminal_width = MAX_WIDTH; } + alloc_line_buffer(); format_header(); p = NULL; |