top: extend 'zero suppression' to out-of-memory fields

Now that the conditional OOMEM_ENABLE has been removed
and more attention recently paid to the 2 oomem fields
it was revealed that Rc.zero_suppress didn't extend to
them. So this commit will just correct that oversight.

And while we're at it, we'll also extend zero suppress
to that NI (nice value) field, which already should've
had it. Plus we trade those namespaces custom suppress
logic for our now slightly enhanced make_num function.

Reference(s):
. removal of misguided OOMEM_ENABLE
commit 64238730fa
. zero suppression only recently added to namespaces
commit b2853ed117

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2016-04-15 00:00:00 -05:00 committed by Craig Small
parent 41661e03dc
commit 5d0431891a
2 changed files with 27 additions and 22 deletions

View File

@ -1314,13 +1314,18 @@ static inline const char *make_chr (const char ch, int width, int justr) {
/*
* Make and then justify an integer NOT subject to scaling,
* and include a visual clue should tuncation be necessary. */
static inline const char *make_num (long num, int width, int justr, int col) {
static inline const char *make_num (long num, int width, int justr, int col, int noz) {
static char buf[SMLBUFSIZ];
buf[0] = '\0';
if (noz && Rc.zero_suppress && 0 == num)
goto end_justifies;
if (width < snprintf(buf, sizeof(buf), "%ld", num)) {
buf[width-1] = COLPLUSCH;
AUTOX_COL(col);
}
end_justifies:
return justify_pad(buf, width, justr);
} // end: make_num
@ -4981,8 +4986,6 @@ static const char *task_show (const WIN_t *q, struct pids_stack *p) {
cp = make_chr(rSv(EU_STA, s_ch), W, Js);
break;
/* s_int, make_num without auto width */
case EU_OOA:
case EU_OOM:
case EU_PGD:
case EU_PID:
case EU_PPD:
@ -4990,25 +4993,30 @@ static const char *task_show (const WIN_t *q, struct pids_stack *p) {
case EU_TGD:
case EU_THD:
case EU_TPG:
cp = make_num(rSv(i, s_int), W, Jn, AUTOX_NO);
cp = make_num(rSv(i, s_int), W, Jn, AUTOX_NO, 0);
break;
/* s_int, make_num without auto width, but with zero supression */
case EU_OOA:
case EU_OOM:
cp = make_num(rSv(i, s_int), W, Jn, AUTOX_NO, 1);
break;
/* s_int, make_num or make_str */
case EU_PRI:
if (-99 > rSv(EU_PRI, s_int) || 999 < rSv(EU_PRI, s_int)) {
cp = make_str("rt", W, Jn, AUTOX_NO);
} else
cp = make_num(rSv(EU_PRI, s_int), W, Jn, AUTOX_NO);
cp = make_num(rSv(EU_PRI, s_int), W, Jn, AUTOX_NO, 0);
break;
/* u_int, make_num without auto width */
case EU_CPN:
cp = make_num(rSv(i, u_int), W, Jn, AUTOX_NO);
cp = make_num(rSv(i, u_int), W, Jn, AUTOX_NO, 0);
break;
/* u_int, make_num with auto width */
case EU_GID:
case EU_UED:
case EU_URD:
case EU_USD:
cp = make_num(rSv(i, u_int), W, Jn, i);
cp = make_num(rSv(i, u_int), W, Jn, i, 0);
break;
/* u_int, scale_pcnt with special handling */
case EU_CPU:
@ -5021,9 +5029,18 @@ static const char *task_show (const WIN_t *q, struct pids_stack *p) {
cp = scale_pcnt(u, W, Jn);
}
break;
/* sl_int, make_num */
/* sl_int, make_num without auto width, but with zero supression */
case EU_NCE:
cp = make_num(rSv(EU_NCE, sl_int), W, Jn, AUTOX_NO);
cp = make_num(rSv(EU_NCE, sl_int), W, Jn, AUTOX_NO, 1);
break;
/* ul_int, make_num with auto width and zero supression */
case EU_NS1:
case EU_NS2:
case EU_NS3:
case EU_NS4:
case EU_NS5:
case EU_NS6:
cp = make_num(rSv(i, ul_int), W, Jn, i, 1);
break;
/* ul_int, scale_mem */
case EU_COD:
@ -5055,18 +5072,6 @@ static const char *task_show (const WIN_t *q, struct pids_stack *p) {
case EU_FLG:
cp = make_str(hex_make(rSv(EU_FLG, ul_int), 1), W, Js, AUTOX_NO);
break;
/* ul_int, make_num or make_str */
case EU_NS1:
case EU_NS2:
case EU_NS3:
case EU_NS4:
case EU_NS5:
case EU_NS6:
{ long ino = rSv(i, ul_int);
if (Rc.zero_suppress && 0 >= ino) cp = make_str("", W, Js, i);
else cp = make_num(ino, W, Jn, i);
}
break;
/* ull_int, scale_tics */
case EU_TM2:
case EU_TME:

View File

@ -582,7 +582,7 @@ typedef struct WIN_t {
/*------ Basic Formatting support --------------------------------------*/
//atic inline const char *justify_pad (const char *str, int width, int justr);
//atic inline const char *make_chr (const char ch, int width, int justr);
//atic inline const char *make_num (long num, int width, int justr, int col);
//atic inline const char *make_num (long num, int width, int justr, int col, int noz);
//atic inline const char *make_str (const char *str, int width, int justr, int col);
//atic const char *scale_mem (int target, unsigned long num, int width, int justr);
//atic const char *scale_num (unsigned long num, int width, int justr);