top: provide command line sort field override switches
This commit adds two new command line switches dealing with the potential need to automate/script the setting of top's current sort field independent of the rcfile. The -o (lower case) switch requires a lone valid field name as an argument, from among the 42 currently used. Then, it overrides the config file's Curwin->sortindx. And since field names are now translatable, they could diverge from those reflected in the documentation. So, a 2nd switch of -O (upper case) is also provided which outputs all names as translated and understood by top. (now that we know a '.' + 2 spaces is squeezed to one) (everything's perfectly justified, but it's just luck) Reference(s): Bug-Redhat: https://bugzilla.redhat.com/871844 http://www.freelists.org/post/procps/PATCH-Allow-core-file-generation-by-ps-command-rhbz871825-rhbz512857,9 http://www.freelists.org/post/procps/PATCH-Allow-core-file-generation-by-ps-command-rhbz871825-rhbz512857,15 http://www.freelists.org/post/procps/PATCH-Allow-core-file-generation-by-ps-command-rhbz871825-rhbz512857,16 Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
23
top/top.c
23
top/top.c
@@ -3177,6 +3177,7 @@ static void parse_args (char **args) {
|
||||
static const char numbs_str[] = "+,-.0123456789";
|
||||
float tmp_delay = MAXFLOAT;
|
||||
char *p;
|
||||
int i;
|
||||
|
||||
while (*args) {
|
||||
const char *cp = *(args++);
|
||||
@@ -3212,8 +3213,8 @@ static void parse_args (char **args) {
|
||||
break;
|
||||
case 'h':
|
||||
case 'v':
|
||||
fprintf(stdout, N_fmt(HELP_cmdline_fmt)
|
||||
, procps_version, Myname, N_txt(USAGE_abbrev_txt));
|
||||
puts(fmtmk(N_fmt(HELP_cmdline_fmt)
|
||||
, procps_version, Myname, N_txt(USAGE_abbrev_txt)));
|
||||
bye_bye(NULL);
|
||||
case 'i':
|
||||
TOGw(Curwin, Show_IDLEPS);
|
||||
@@ -3226,9 +3227,25 @@ static void parse_args (char **args) {
|
||||
if (1 != sscanf(cp, "%d", &Loops) || 1 > Loops)
|
||||
error_exit(fmtmk(N_fmt(BAD_niterate_fmt), cp));
|
||||
break;
|
||||
case 'o':
|
||||
if (cp[1]) cp++;
|
||||
else if (*args) cp = *args++;
|
||||
else error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch));
|
||||
for (i = 0; i < P_MAXPFLGS; i++)
|
||||
if (!STRCMP(cp, N_col(i))) break;
|
||||
if (i == P_MAXPFLGS)
|
||||
error_exit(fmtmk(N_fmt(XTRA_sortopt_fmt), cp));
|
||||
OFFw(Curwin, Show_FOREST);
|
||||
Curwin->rc.sortindx = i;
|
||||
cp += strlen(cp);
|
||||
break;
|
||||
case 'O':
|
||||
for (i = 0; i < P_MAXPFLGS; i++)
|
||||
puts(N_col(i));
|
||||
bye_bye(NULL);
|
||||
case 'p':
|
||||
if (Curwin->usrseltyp) error_exit(N_txt(SELECT_clash_txt));
|
||||
do { int i, pid;
|
||||
do { int pid;
|
||||
if (cp[1]) cp++;
|
||||
else if (*args) cp = *args++;
|
||||
else error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch));
|
||||
|
Reference in New Issue
Block a user