Some tweaks for top

tweaked signal setup valgrind complaint as nls
some input error messages made more descriptive
eliminated audible escape a from all error messa
added include of proc readproc.h to top.h
optimization for show_special function
remove unnecessary variables clang analyze
This commit is contained in:
Craig Small 2011-10-26 22:31:48 +11:00
parent 38e764606d
commit ed01cfb8a9
2 changed files with 21 additions and 19 deletions

38
top.c
View File

@ -645,7 +645,7 @@ static void msg_save (const char *fmts, ...) {
vsnprintf(tmp, sizeof(tmp), fmts, va); vsnprintf(tmp, sizeof(tmp), fmts, va);
va_end(va); va_end(va);
// we'll add some extra attention grabbers to whatever this is // we'll add some extra attention grabbers to whatever this is
snprintf(Msg_delayed, sizeof(Msg_delayed), "\a*** %s ***", strim(tmp)); snprintf(Msg_delayed, sizeof(Msg_delayed), "*** %s ***", strim(tmp));
Msg_awaiting = 1; Msg_awaiting = 1;
} // end: msg_save } // end: msg_save
@ -714,7 +714,7 @@ static inline void show_scroll (void) {
* what will fit within the current screen width. * what will fit within the current screen width.
* Our special formatting consists of: * Our special formatting consists of:
* "some text <_delimiter_> some more text <_delimiter_>...\n" * "some text <_delimiter_> some more text <_delimiter_>...\n"
* Where <_delimiter_> is a two bye combination consisting of a * Where <_delimiter_> is a two byte combination consisting of a
* tilde followed by an ascii digit in the the range of 1 - 8. * tilde followed by an ascii digit in the the range of 1 - 8.
* examples: ~1, ~5, ~8, etc. * examples: ~1, ~5, ~8, etc.
* The tilde is effectively stripped and the next digit * The tilde is effectively stripped and the next digit
@ -770,12 +770,13 @@ static void show_special (int interact, const char *glob) {
switch (ch) { switch (ch) {
case 0: // no end delim, captab makes normal case 0: // no end delim, captab makes normal
*(sub_end + 1) = '\0'; // extend str end, then fall through *(sub_end + 1) = '\0'; // extend str end, then fall through
*(sub_end + 2) = '\0'; // ( +1 optimization for usual path )
case 1 ... 8: case 1 ... 8:
*sub_end = '\0'; *sub_end = '\0';
snprintf(tmp, sizeof(tmp), "%s%.*s%s", Curwin->captab[ch], room, sub_beg, Caps_off); snprintf(tmp, sizeof(tmp), "%s%.*s%s", Curwin->captab[ch], room, sub_beg, Caps_off);
rp = scat(rp, tmp); rp = scat(rp, tmp);
room -= (sub_end - sub_beg); room -= (sub_end - sub_beg);
sub_beg = (sub_end += (ch ? 2 : 1)); sub_beg = (sub_end += 2);
break; break;
default: // nothin' special, just text default: // nothin' special, just text
++sub_end; ++sub_end;
@ -965,9 +966,9 @@ static char *linein (const char *prompt) {
#define bufMAX ((int)sizeof(buf)-2) // -1 for '\0' string delimeter #define bufMAX ((int)sizeof(buf)-2) // -1 for '\0' string delimeter
static char buf[MEDBUFSIZ+1]; // +1 for '\0' string delimeter static char buf[MEDBUFSIZ+1]; // +1 for '\0' string delimeter
int beg, pos, len; int beg, pos, len;
int i, key; int key;
pos = i = 0; pos = 0;
beg = show_pmt(prompt); beg = show_pmt(prompt);
memset(buf, '\0', sizeof(buf)); memset(buf, '\0', sizeof(buf));
do { do {
@ -1029,7 +1030,7 @@ static float get_float (const char *prompt) {
if (!(*(line = linein(prompt)))) return -1.0; if (!(*(line = linein(prompt)))) return -1.0;
// note: we're not allowing negative floats // note: we're not allowing negative floats
if (strcspn(line, "+,.0123456789")) { if (strcspn(line, "+,.0123456789")) {
show_msg("Not valid"); show_msg("Unacceptable floating point");
return -1.0; return -1.0;
} }
sscanf(line, "%f", &f); sscanf(line, "%f", &f);
@ -1046,7 +1047,7 @@ static int get_int (const char *prompt) {
if (!(*(line = linein(prompt)))) return INT_MIN; if (!(*(line = linein(prompt)))) return INT_MIN;
// note: we've got to allow negative ints (renice) // note: we've got to allow negative ints (renice)
if (strcspn(line, "-+0123456789")) { if (strcspn(line, "-+0123456789")) {
show_msg("\aNot valid"); show_msg("Unacceptable integer");
return INT_MIN; return INT_MIN;
} }
sscanf(line, "%d", &n); sscanf(line, "%d", &n);
@ -2098,7 +2099,7 @@ static void before (char *me) {
// lastly, establish a robust signals environment // lastly, establish a robust signals environment
sigemptyset(&sa.sa_mask); sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART; sa.sa_flags = SA_RESTART;
for (i = SIGRTMAX + 1; i; i--) { for (i = SIGRTMAX; i; i--) {
switch (i) { switch (i) {
case SIGALRM: case SIGHUP: case SIGINT: case SIGALRM: case SIGHUP: case SIGINT:
case SIGPIPE: case SIGQUIT: case SIGTERM: case SIGPIPE: case SIGQUIT: case SIGTERM:
@ -2466,10 +2467,10 @@ static WIN_t *win_select (char ch) {
static int win_warn (int what) { static int win_warn (int what) {
switch (what) { switch (what) {
case Warn_ALT: case Warn_ALT:
show_msg("\aCommand disabled, 'A' mode required"); show_msg("Command disabled, 'A' mode required");
break; break;
case Warn_VIZ: case Warn_VIZ:
show_msg(fmtmk("\aCommand disabled, activate %s with '-' or '_'" show_msg(fmtmk("Command disabled, activate %s with '-' or '_'"
, Curwin->grpname)); , Curwin->grpname));
break; break;
default: // keep gcc happy default: // keep gcc happy
@ -2509,7 +2510,7 @@ static void wins_colors (void) {
char ch, tgt = 'T'; char ch, tgt = 'T';
if (0 >= max_colors) { if (0 >= max_colors) {
show_msg("\aNo colors to map!"); show_msg("No colors to map!");
return; return;
} }
winsclrhlp(w, 1); winsclrhlp(w, 1);
@ -2634,7 +2635,6 @@ static void wins_stage_1 (void) {
w->captab[8] = w->capclr_rownorm; w->captab[8] = w->capclr_rownorm;
w->next = w + 1; w->next = w + 1;
w->prev = w - 1; w->prev = w - 1;
++w;
} }
// fixup the circular chains... // fixup the circular chains...
@ -2672,7 +2672,7 @@ static void file_writerc (void) {
int i; int i;
if (!(fp = fopen(Rc_name, "w"))) { if (!(fp = fopen(Rc_name, "w"))) {
show_msg(fmtmk("\aFailed '%s' open: %s", Rc_name, strerror(errno))); show_msg(fmtmk("Failed '%s' open: %s", Rc_name, strerror(errno)));
return; return;
} }
fprintf(fp, "%s's " RCF_EYECATCHER, Myname); fprintf(fp, "%s's " RCF_EYECATCHER, Myname);
@ -2730,8 +2730,8 @@ static void help_view (void) {
static void keys_global (int ch) { static void keys_global (int ch) {
// standardized error message(s) // standardized error message(s)
static const char err_secure[] = "\aUnavailable in secure mode"; static const char err_secure[] = "Unavailable in secure mode";
static const char err_notsmp[] = "\aOnly 1 cpu detected"; static const char err_notsmp[] = "Only 1 cpu detected";
WIN_t *w = Curwin; // avoid gcc bloat with a local copy WIN_t *w = Curwin; // avoid gcc bloat with a local copy
switch (ch) { switch (ch) {
@ -2778,7 +2778,7 @@ static void keys_global (int ch) {
str = linein(fmtmk("Send pid %d signal [%d/sigterm]", pid, SIGTERM)); str = linein(fmtmk("Send pid %d signal [%d/sigterm]", pid, SIGTERM));
if (*str) sig = signal_name_to_number(str); if (*str) sig = signal_name_to_number(str);
if (0 < sig && kill(pid, sig)) if (0 < sig && kill(pid, sig))
show_msg(fmtmk("\aFailed signal pid '%d' with '%d': %s" show_msg(fmtmk("Failed signal pid '%d' with '%d': %s"
, pid, sig, strerror(errno))); , pid, sig, strerror(errno)));
else if (0 > sig) show_msg("Invalid signal"); else if (0 > sig) show_msg("Invalid signal");
} }
@ -2792,7 +2792,7 @@ static void keys_global (int ch) {
if (-1 < (pid = get_int("PID to renice")) if (-1 < (pid = get_int("PID to renice"))
&& INT_MIN < (val = get_int(fmtmk("Renice PID %d to value", pid)))) && INT_MIN < (val = get_int(fmtmk("Renice PID %d to value", pid))))
if (setpriority(PRIO_PROCESS, (unsigned)pid, val)) if (setpriority(PRIO_PROCESS, (unsigned)pid, val))
show_msg(fmtmk("\aFailed renice of PID %d to %d: %s" show_msg(fmtmk("Failed renice of PID %d to %d: %s"
, pid, val, strerror(errno))); , pid, val, strerror(errno)));
} }
break; break;
@ -2893,7 +2893,7 @@ static void keys_task (int ch) {
#else #else
if (!CHKw(w, Show_HICOLS | Show_HIROWS)) if (!CHKw(w, Show_HICOLS | Show_HIROWS))
#endif #endif
show_msg("\aNothing to highlight!"); show_msg("Nothing to highlight!");
else { else {
TOGw(w, Show_HIBOLD); TOGw(w, Show_HIBOLD);
capsmk(w); capsmk(w);
@ -3204,7 +3204,7 @@ static void do_key (int ch) {
} }
if (!(i < MAXTBL(key_tab))) { if (!(i < MAXTBL(key_tab))) {
show_msg("\aUnknown command - try 'h' for help"); show_msg("Unknown command - try 'h' for help");
return; return;
} }
}; };

2
top.h
View File

@ -19,6 +19,8 @@
#ifndef _Itop #ifndef _Itop
#define _Itop #define _Itop
#include "proc/readproc.h"
/* Development/Debugging defines ----------------------------------- */ /* Development/Debugging defines ----------------------------------- */
//#define ATEOJ_RPTHSH /* report on hash specifics, at end-of-job */ //#define ATEOJ_RPTHSH /* report on hash specifics, at end-of-job */
//#define ATEOJ_RPTSTD /* report on misc stuff, at end-of-job */ //#define ATEOJ_RPTSTD /* report on misc stuff, at end-of-job */