Date: Sun, 10 Jun 2018 08:59:57 +0000 (UTC) From: Eitan Adler <eadler@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r334919 - head/usr.bin/top Message-ID: <201806100859.w5A8xvlO082115@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: eadler Date: Sun Jun 10 08:59:57 2018 New Revision: 334919 URL: https://svnweb.freebsd.org/changeset/base/334919 Log: top(1): bring some structure to commands Right now this is only used for help text but it'll eventually be used to build up long options array, dispatch commands, etc. Modified: head/usr.bin/top/commands.c head/usr.bin/top/commands.h head/usr.bin/top/top.h Modified: head/usr.bin/top/commands.c ============================================================================== --- head/usr.bin/top/commands.c Sun Jun 10 06:33:49 2018 (r334918) +++ head/usr.bin/top/commands.c Sun Jun 10 08:59:57 2018 (r334919) @@ -51,61 +51,56 @@ static int str_addarg(char *str, int len, char *arg, b * either 'h' or '?'. */ +static const struct command all_commands[] = +{ + {'C', "toggle the displaying of weighted CPU percentage", false }, + {'d', "change number of displays to show", false}, + {'e', "list errors generated by last \"kill\" or \"renice\" command", false}, + {'H', "toggle the displaying of threads", false}, + {'h', "show this help text", false}, + {'i', "toggle the displaying of idle processes", false}, + {'j', "toggle the displaying of jail ID", false}, + {'J', "display processes for only one jail (+ selects all jails)", false}, + {'k', "kill processes; send a signal to a list of processes", false}, + {'q', "quit" , false}, + {'m', "toggle the display between 'cpu' and 'io' modes", false}, + {'n', "change number of processes to display", false}, + {'o', "specify the sort order", false}, + {'p', "display one process (+ selects all processes)", false}, + {'P', "toggle the displaying of per-CPU statistics", false}, + {'r', "renice a process", false}, + {'s', "change number of seconds to delay between updates", false}, + {'S', "toggle the displaying of system processes", false}, + {'a', "toggle the displaying of process titles", false}, + {'T', "toggle the displaying of thread IDs", false}, + {'t', "toggle the display of this process", false}, + {'u', "display processes for only one user (+ selects all users)", false}, + {'w', "toggle the display of swap use for each process", false}, + {'z', "toggle the displaying of the system idle process", false }, + {0, NULL, true} +}; +/* XXX: eventually remove command_chars, but assert they are the same for now */ + void show_help(void) { - printf("Top version FreeBSD, %s\n", copyright); - fputs("\n\n\ -A top users display for Unix\n\ -\n\ -These single-character commands are available:\n\ -\n\ -^L - redraw screen\n\ -q - quit\n\ -h or ? - help; show this text\n", stdout); + const struct command *curcmd; - /* not all commands are available with overstrike terminals */ + printf("Top version FreeBSD, %s\n", copyright); + curcmd = all_commands; + while (curcmd->c != 0) { + if (overstrike && !curcmd->available_to_dumb) { + ++curcmd; + continue; + } + printf("%c\t- %s\n", curcmd->c, curcmd->desc); + ++curcmd; + } if (overstrike) { - fputs("\n\ -Other commands are also available, but this terminal is not\n\ -sophisticated enough to handle those commands gracefully.\n\n", stdout); - } - else - { - fputs("\ -C - toggle the displaying of weighted CPU percentage\n\ -d - change number of displays to show\n\ -e - list errors generated by last \"kill\" or \"renice\" command\n\ -H - toggle the displaying of threads\n\ -i or I - toggle the displaying of idle processes\n\ -j - toggle the displaying of jail ID\n\ -J - display processes for only one jail (+ selects all jails)\n\ -k - kill processes; send a signal to a list of processes\n\ -m - toggle the display between 'cpu' and 'io' modes\n\ -n or # - change number of processes to display\n", stdout); - if (displaymode == DISP_CPU) fputs("\ -o - specify sort order (pri, size, res, cpu, time, threads, jid, pid)\n", - stdout); - else - fputs("\ -o - specify sort order (vcsw, ivcsw, read, write, fault, total, jid, pid)\n", - stdout); - fputs("\ -p - display one process (+ selects all processes)\n\ -P - toggle the displaying of per-CPU statistics\n\ -r - renice a process\n\ -s - change number of seconds to delay between updates\n\ -S - toggle the displaying of system processes\n\ -a - toggle the displaying of process titles\n\ -T - toggle the displaying of thread IDs\n\ -t - toggle the display of this process\n\ -u - display processes for only one user (+ selects all users)\n\ -w - toggle the display of swap use for each process\n\ -z - toggle the displaying of the system idle process\n\ -\n\ -\n", stdout); + Other commands are also available, but this terminal is not\n\ + sophisticated enough to handle those commands gracefully.\n", stdout); } } @@ -352,17 +347,17 @@ show_errors(void) } } -static char no_proc_specified[] = " no processes specified"; -static char invalid_signal_number[] = " invalid_signal_number"; -static char bad_signal_name[] = " bad signal name"; -static char bad_pri_value[] = " bad priority value"; +static const char no_proc_specified[] = " no processes specified"; +static const char invalid_signal_number[] = " invalid_signal_number"; +static const char bad_signal_name[] = " bad signal name"; +static const char bad_pri_value[] = " bad priority value"; /* * kill_procs(str) - send signals to processes, much like the "kill" * command does; invoked in response to 'k'. */ -char * +const char * kill_procs(char *str) { char *nptr; @@ -450,7 +445,7 @@ kill_procs(char *str) * "renice" command does; invoked in response to 'r'. */ -char * +const char * renice_procs(char *str) { char negate; Modified: head/usr.bin/top/commands.h ============================================================================== --- head/usr.bin/top/commands.h Sun Jun 10 06:33:49 2018 (r334918) +++ head/usr.bin/top/commands.h Sun Jun 10 08:59:57 2018 (r334919) @@ -18,4 +18,10 @@ void show_errors(void); int error_count(void); void show_help(void); +struct command { + char c; + const char * const desc; + bool available_to_dumb; +}; + #endif /* COMMANDS_H */ Modified: head/usr.bin/top/top.h ============================================================================== --- head/usr.bin/top/top.h Sun Jun 10 06:33:49 2018 (r334918) +++ head/usr.bin/top/top.h Sun Jun 10 08:59:57 2018 (r334919) @@ -43,8 +43,8 @@ extern const char * myname; extern int (*compares[])(const void*, const void*); -char* kill_procs(char *); -char* renice_procs(char *); +const char* kill_procs(char *); +const char* renice_procs(char *); extern char copyright[];
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201806100859.w5A8xvlO082115>