ps: move other initialization code after setREL macros

While the previous patch concerned an essential change
to avoid dereferencing those NULL pointers, this patch
could be considered optional. For consistency, it just
puts all initialization logic after the setREL macros.

[ plus along the way some inter-function spacing was ]
[ standardized with just a single blank line between ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2018-06-06 00:00:00 -05:00 committed by Craig Small
parent 26ab9ae143
commit f0b245c794

View File

@ -132,9 +132,7 @@ setREL1(noop)
return snprintf(outbuf, COLWID, "%c", '-'); return snprintf(outbuf, COLWID, "%c", '-');
} }
/********* Unix 98 ************/ /********* Unix 98 ************/
/*** /***
Only comm and args are allowed to contain blank characters; all others are Only comm and args are allowed to contain blank characters; all others are
@ -272,10 +270,11 @@ Modifications to the arguments are not shown.
* "comm", "ucmd", "ucomm" are all the same: short unless -f * "comm", "ucmd", "ucomm" are all the same: short unless -f
* ( determinations are made in display.c, we mostly deal with results ) */ * ( determinations are made in display.c, we mostly deal with results ) */
static int pr_args(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_args(char *restrict const outbuf, const proc_t *restrict const pp){
char *endp = outbuf; char *endp;
int rightward = max_rightward; int rightward, fh;
int fh;
setREL2(CMDLINE,ENVIRON) setREL2(CMDLINE,ENVIRON)
endp = outbuf;
rightward = max_rightward;
fh = forest_helper(outbuf); fh = forest_helper(outbuf);
endp += fh; endp += fh;
rightward -= fh; rightward -= fh;
@ -296,10 +295,11 @@ setREL2(CMDLINE,ENVIRON)
* "comm", "ucmd", "ucomm" are all the same: short unless -f * "comm", "ucmd", "ucomm" are all the same: short unless -f
* ( determinations are made in display.c, we mostly deal with results ) */ * ( determinations are made in display.c, we mostly deal with results ) */
static int pr_comm(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_comm(char *restrict const outbuf, const proc_t *restrict const pp){
char *endp = outbuf; char *endp;
int rightward = max_rightward; int rightward, fh;
int fh;
setREL3(CMD,CMDLINE,ENVIRON) setREL3(CMD,CMDLINE,ENVIRON)
endp = outbuf;
rightward = max_rightward;
fh = forest_helper(outbuf); fh = forest_helper(outbuf);
endp += fh; endp += fh;
rightward -= fh; rightward -= fh;
@ -318,27 +318,29 @@ setREL3(CMD,CMDLINE,ENVIRON)
return max_rightward-rightward; return max_rightward-rightward;
} }
static int pr_cgname(char *restrict const outbuf,const proc_t *restrict const pp) { static int pr_cgname(char *restrict const outbuf,const proc_t *restrict const pp) {
int rightward = max_rightward; int rightward;
setREL1(CGNAME) setREL1(CGNAME)
rightward = max_rightward;
escaped_copy(outbuf, rSv(CGNAME, str, pp), OUTBUF_SIZE, &rightward); escaped_copy(outbuf, rSv(CGNAME, str, pp), OUTBUF_SIZE, &rightward);
return max_rightward-rightward; return max_rightward-rightward;
} }
static int pr_cgroup(char *restrict const outbuf,const proc_t *restrict const pp) { static int pr_cgroup(char *restrict const outbuf,const proc_t *restrict const pp) {
int rightward = max_rightward; int rightward;
setREL1(CGROUP) setREL1(CGROUP)
rightward = max_rightward;
escaped_copy(outbuf, rSv(CGROUP, str, pp), OUTBUF_SIZE, &rightward); escaped_copy(outbuf, rSv(CGROUP, str, pp), OUTBUF_SIZE, &rightward);
return max_rightward-rightward; return max_rightward-rightward;
} }
/* Non-standard, from SunOS 5 */ /* Non-standard, from SunOS 5 */
static int pr_fname(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_fname(char *restrict const outbuf, const proc_t *restrict const pp){
char *endp = outbuf; char *endp;
int rightward = max_rightward; int rightward, fh;
int fh;
setREL1(CMD) setREL1(CMD)
endp = outbuf;
rightward = max_rightward;
fh = forest_helper(outbuf); fh = forest_helper(outbuf);
endp += fh; endp += fh;
rightward -= fh; rightward -= fh;
@ -353,8 +355,9 @@ setREL1(CMD)
static int pr_etime(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_etime(char *restrict const outbuf, const proc_t *restrict const pp){
unsigned long t; unsigned long t;
unsigned dd,hh,mm,ss; unsigned dd,hh,mm,ss;
char *cp = outbuf; char *cp;
setREL1(TIME_ELAPSED) setREL1(TIME_ELAPSED)
cp = outbuf;
t = rSv(TIME_ELAPSED, ull_int, pp); t = rSv(TIME_ELAPSED, ull_int, pp);
ss = t%60; ss = t%60;
t /= 60; t /= 60;
@ -380,9 +383,10 @@ setREL1(TIME_ELAPSED)
/* "Processor utilisation for scheduling." --- we use %cpu w/o fraction */ /* "Processor utilisation for scheduling." --- we use %cpu w/o fraction */
static int pr_c(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_c(char *restrict const outbuf, const proc_t *restrict const pp){
unsigned long long total_time; /* jiffies used by this process */ unsigned long long total_time; /* jiffies used by this process */
unsigned pcpu = 0; /* scaled %cpu, 99 means 99% */ unsigned pcpu; /* scaled %cpu, 99 means 99% */
unsigned long long seconds; /* seconds of process life */ unsigned long long seconds; /* seconds of process life */
setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED) setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED)
pcpu = 0;
if(include_dead_children) total_time = rSv(TICS_ALL_C, ull_int, pp); if(include_dead_children) total_time = rSv(TICS_ALL_C, ull_int, pp);
else total_time = rSv(TICS_ALL, ull_int, pp); else total_time = rSv(TICS_ALL, ull_int, pp);
seconds = rSv(TIME_ELAPSED, ull_int, pp); seconds = rSv(TIME_ELAPSED, ull_int, pp);
@ -394,9 +398,10 @@ setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED)
/* normal %CPU in ##.# format. */ /* normal %CPU in ##.# format. */
static int pr_pcpu(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_pcpu(char *restrict const outbuf, const proc_t *restrict const pp){
unsigned long long total_time; /* jiffies used by this process */ unsigned long long total_time; /* jiffies used by this process */
unsigned pcpu = 0; /* scaled %cpu, 999 means 99.9% */ unsigned pcpu; /* scaled %cpu, 999 means 99.9% */
unsigned long long seconds; /* seconds of process life */ unsigned long long seconds; /* seconds of process life */
setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED) setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED)
pcpu = 0;
if(include_dead_children) total_time = rSv(TICS_ALL_C, ull_int, pp); if(include_dead_children) total_time = rSv(TICS_ALL_C, ull_int, pp);
else total_time = rSv(TICS_ALL, ull_int, pp); else total_time = rSv(TICS_ALL, ull_int, pp);
seconds = rSv(TIME_ELAPSED, ull_int, pp); seconds = rSv(TIME_ELAPSED, ull_int, pp);
@ -405,12 +410,14 @@ setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED)
return snprintf(outbuf, COLWID, "%u", pcpu/10U); return snprintf(outbuf, COLWID, "%u", pcpu/10U);
return snprintf(outbuf, COLWID, "%u.%u", pcpu/10U, pcpu%10U); return snprintf(outbuf, COLWID, "%u.%u", pcpu/10U, pcpu%10U);
} }
/* this is a "per-mill" format, like %cpu with no decimal point */ /* this is a "per-mill" format, like %cpu with no decimal point */
static int pr_cp(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_cp(char *restrict const outbuf, const proc_t *restrict const pp){
unsigned long long total_time; /* jiffies used by this process */ unsigned long long total_time; /* jiffies used by this process */
unsigned pcpu = 0; /* scaled %cpu, 999 means 99.9% */ unsigned pcpu; /* scaled %cpu, 999 means 99.9% */
unsigned long long seconds; /* seconds of process life */ unsigned long long seconds; /* seconds of process life */
setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED) setREL3(TICS_ALL,TICS_ALL_C,TIME_ELAPSED)
pcpu = 0;
if(include_dead_children) total_time = rSv(TICS_ALL_C, ull_int, pp); if(include_dead_children) total_time = rSv(TICS_ALL_C, ull_int, pp);
else total_time = rSv(TICS_ALL, ull_int, pp); else total_time = rSv(TICS_ALL, ull_int, pp);
seconds = rSv(TIME_ELAPSED, ull_int, pp); seconds = rSv(TIME_ELAPSED, ull_int, pp);
@ -547,7 +554,6 @@ setREL1(PRIORITY)
return snprintf(outbuf, COLWID, "%d", rSv(PRIORITY, s_int, pp) + 100); return snprintf(outbuf, COLWID, "%d", rSv(PRIORITY, s_int, pp) + 100);
} }
// not legal as UNIX "PRI" // not legal as UNIX "PRI"
// "pri" (was 20..60, now 0..139) // "pri" (was 20..60, now 0..139)
static int pr_pri(char *restrict const outbuf, const proc_t *restrict const pp){ /* 20..60 */ static int pr_pri(char *restrict const outbuf, const proc_t *restrict const pp){ /* 20..60 */
@ -599,6 +605,7 @@ setREL1(SCHED_CLASS)
default: return snprintf(outbuf, COLWID, "?"); // unknown value default: return snprintf(outbuf, COLWID, "?"); // unknown value
} }
} }
// Based on "type", FreeBSD would do: // Based on "type", FreeBSD would do:
// REALTIME "real:%u", prio // REALTIME "real:%u", prio
// NORMAL "normal" // NORMAL "normal"
@ -610,6 +617,7 @@ setREL2(SCHED_CLASS,RTPRIO)
if(rSv(SCHED_CLASS, s_int, pp)==0 || rSv(SCHED_CLASS, s_int, pp)==-1) return snprintf(outbuf, COLWID, "-"); if(rSv(SCHED_CLASS, s_int, pp)==0 || rSv(SCHED_CLASS, s_int, pp)==-1) return snprintf(outbuf, COLWID, "-");
return snprintf(outbuf, COLWID, "%d", rSv(RTPRIO, s_int, pp)); return snprintf(outbuf, COLWID, "%d", rSv(RTPRIO, s_int, pp));
} }
static int pr_sched(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_sched(char *restrict const outbuf, const proc_t *restrict const pp){
setREL1(SCHED_CLASS) setREL1(SCHED_CLASS)
if(rSv(SCHED_CLASS, s_int, pp)==-1) return snprintf(outbuf, COLWID, "-"); if(rSv(SCHED_CLASS, s_int, pp)==-1) return snprintf(outbuf, COLWID, "-");
@ -667,7 +675,7 @@ static int pr_oldstate(char *restrict const outbuf, const proc_t *restrict const
// This state display is Unix98 compliant and has lots of info like BSD. // This state display is Unix98 compliant and has lots of info like BSD.
static int pr_stat(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_stat(char *restrict const outbuf, const proc_t *restrict const pp){
int end = 0; int end;
if (!outbuf) { if (!outbuf) {
chkREL(STATE) chkREL(STATE)
chkREL(NICE) chkREL(NICE)
@ -679,6 +687,7 @@ static int pr_stat(char *restrict const outbuf, const proc_t *restrict const pp)
chkREL(ID_TPGID) chkREL(ID_TPGID)
return 0; return 0;
} }
end = 0;
outbuf[end++] = rSv(STATE, s_ch, pp); outbuf[end++] = rSv(STATE, s_ch, pp);
// if(rSv(RSS, ul_int, pp)==0 && rSv(STATE, s_ch, pp)!='Z') outbuf[end++] = 'W'; // useless "swapped out" // if(rSv(RSS, ul_int, pp)==0 && rSv(STATE, s_ch, pp)!='Z') outbuf[end++] = 'W'; // useless "swapped out"
if(rSv(NICE, s_int, pp) < 0) outbuf[end++] = '<'; if(rSv(NICE, s_int, pp) < 0) outbuf[end++] = '<';
@ -766,14 +775,12 @@ setREL1(TIME_START)
return 6; return 6;
} }
/* HP-UX puts this in pages and uses "vsz" for kB */ /* HP-UX puts this in pages and uses "vsz" for kB */
static int pr_sz(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_sz(char *restrict const outbuf, const proc_t *restrict const pp){
setREL1(VM_SIZE) setREL1(VM_SIZE)
return snprintf(outbuf, COLWID, "%lu", rSv(VM_SIZE, ul_int, pp)/(page_size/1024)); return snprintf(outbuf, COLWID, "%lu", rSv(VM_SIZE, ul_int, pp)/(page_size/1024));
} }
/* /*
* FIXME: trs,drs,tsiz,dsiz,m_trs,m_drs,vm_exe,vm_data,trss * FIXME: trs,drs,tsiz,dsiz,m_trs,m_drs,vm_exe,vm_data,trss
* I suspect some/all of those are broken. They seem to have been * I suspect some/all of those are broken. They seem to have been
@ -791,32 +798,36 @@ setREL1(VM_SIZE)
/* kB data size. See drs, tsiz & trs. */ /* kB data size. See drs, tsiz & trs. */
static int pr_dsiz(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_dsiz(char *restrict const outbuf, const proc_t *restrict const pp){
long dsiz = 0; long dsiz;
setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE) setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE)
dsiz = 0;
if(rSv(VSIZE_PGS, ul_int, pp)) dsiz += (rSv(VSIZE_PGS, ul_int, pp) - rSv(ADDR_END_CODE, ul_int, pp) + rSv(ADDR_START_CODE, ul_int, pp)) >> 10; if(rSv(VSIZE_PGS, ul_int, pp)) dsiz += (rSv(VSIZE_PGS, ul_int, pp) - rSv(ADDR_END_CODE, ul_int, pp) + rSv(ADDR_START_CODE, ul_int, pp)) >> 10;
return snprintf(outbuf, COLWID, "%ld", dsiz); return snprintf(outbuf, COLWID, "%ld", dsiz);
} }
/* kB text (code) size. See trs, dsiz & drs. */ /* kB text (code) size. See trs, dsiz & drs. */
static int pr_tsiz(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_tsiz(char *restrict const outbuf, const proc_t *restrict const pp){
long tsiz = 0; long tsiz;
setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE) setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE)
tsiz = 0;
if(rSv(VSIZE_PGS, ul_int, pp)) tsiz += (rSv(ADDR_END_CODE, ul_int, pp) - rSv(ADDR_START_CODE, ul_int, pp)) >> 10; if(rSv(VSIZE_PGS, ul_int, pp)) tsiz += (rSv(ADDR_END_CODE, ul_int, pp) - rSv(ADDR_START_CODE, ul_int, pp)) >> 10;
return snprintf(outbuf, COLWID, "%ld", tsiz); return snprintf(outbuf, COLWID, "%ld", tsiz);
} }
/* kB _resident_ data size. See dsiz, tsiz & trs. */ /* kB _resident_ data size. See dsiz, tsiz & trs. */
static int pr_drs(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_drs(char *restrict const outbuf, const proc_t *restrict const pp){
long drs = 0; long drs;
setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE) setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE)
drs = 0;
if(rSv(VSIZE_PGS, ul_int, pp)) drs += (rSv(VSIZE_PGS, ul_int, pp) - rSv(ADDR_END_CODE, ul_int, pp) + rSv(ADDR_START_CODE, ul_int, pp)) >> 10; if(rSv(VSIZE_PGS, ul_int, pp)) drs += (rSv(VSIZE_PGS, ul_int, pp) - rSv(ADDR_END_CODE, ul_int, pp) + rSv(ADDR_START_CODE, ul_int, pp)) >> 10;
return snprintf(outbuf, COLWID, "%ld", drs); return snprintf(outbuf, COLWID, "%ld", drs);
} }
/* kB text _resident_ (code) size. See tsiz, dsiz & drs. */ /* kB text _resident_ (code) size. See tsiz, dsiz & drs. */
static int pr_trs(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_trs(char *restrict const outbuf, const proc_t *restrict const pp){
long trs = 0; long trs;
setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE) setREL3(VSIZE_PGS,ADDR_END_CODE,ADDR_START_CODE)
trs = 0;
if(rSv(VSIZE_PGS, ul_int, pp)) trs += (rSv(ADDR_END_CODE, ul_int, pp) - rSv(ADDR_START_CODE, ul_int, pp)) >> 10; if(rSv(VSIZE_PGS, ul_int, pp)) trs += (rSv(ADDR_END_CODE, ul_int, pp) - rSv(ADDR_START_CODE, ul_int, pp)) >> 10;
return snprintf(outbuf, COLWID, "%ld", trs); return snprintf(outbuf, COLWID, "%ld", trs);
} }
@ -832,7 +843,6 @@ setREL1(VSIZE_PGS)
return snprintf(outbuf, COLWID, "%lu", rSv(VSIZE_PGS, ul_int, pp)); return snprintf(outbuf, COLWID, "%lu", rSv(VSIZE_PGS, ul_int, pp));
} }
static int pr_minflt(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_minflt(char *restrict const outbuf, const proc_t *restrict const pp){
setREL2(FLT_MIN,FLT_MIN_C) setREL2(FLT_MIN,FLT_MIN_C)
unsigned long flt = rSv(FLT_MIN, ul_int, pp); unsigned long flt = rSv(FLT_MIN, ul_int, pp);
@ -876,8 +886,9 @@ setREL1(VM_RSS)
/* pp->vm_rss * 1000 would overflow on 32-bit systems with 64 GB memory */ /* pp->vm_rss * 1000 would overflow on 32-bit systems with 64 GB memory */
static int pr_pmem(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_pmem(char *restrict const outbuf, const proc_t *restrict const pp){
unsigned long pmem = 0; unsigned long pmem;
setREL1(VM_RSS) setREL1(VM_RSS)
pmem = 0;
pmem = rSv(VM_RSS, ul_int, pp) * 1000ULL / memory_total; pmem = rSv(VM_RSS, ul_int, pp) * 1000ULL / memory_total;
if (pmem > 999) pmem = 999; if (pmem > 999) pmem = 999;
return snprintf(outbuf, COLWID, "%2u.%u", (unsigned)(pmem/10), (unsigned)(pmem%10)); return snprintf(outbuf, COLWID, "%2u.%u", (unsigned)(pmem/10), (unsigned)(pmem%10));
@ -931,7 +942,6 @@ setREL1(TIME_START)
return snprintf(outbuf, COLWID, " %6.6s", str+4); return snprintf(outbuf, COLWID, " %6.6s", str+4);
} }
static int help_pr_sig(char *restrict const outbuf, const char *restrict const sig){ static int help_pr_sig(char *restrict const outbuf, const char *restrict const sig){
long len = 0; long len = 0;
len = strlen(sig); len = strlen(sig);
@ -968,7 +978,6 @@ setREL1(SIGCATCH)
return help_pr_sig(outbuf, rSv(SIGCATCH, str, pp)); return help_pr_sig(outbuf, rSv(SIGCATCH, str, pp));
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/* /*
@ -1106,15 +1115,17 @@ setREL1(ID_SESSION)
} }
static int pr_supgid(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_supgid(char *restrict const outbuf, const proc_t *restrict const pp){
int rightward = max_rightward; int rightward;
setREL1(SUPGIDS) setREL1(SUPGIDS)
rightward = max_rightward;
escaped_copy(outbuf, rSv(SUPGIDS, str, pp), OUTBUF_SIZE, &rightward); escaped_copy(outbuf, rSv(SUPGIDS, str, pp), OUTBUF_SIZE, &rightward);
return max_rightward-rightward; return max_rightward-rightward;
} }
static int pr_supgrp(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_supgrp(char *restrict const outbuf, const proc_t *restrict const pp){
int rightward = max_rightward; int rightward;
setREL1(SUPGROUPS) setREL1(SUPGROUPS)
rightward = max_rightward;
escaped_copy(outbuf, rSv(SUPGROUPS, str, pp), OUTBUF_SIZE, &rightward); escaped_copy(outbuf, rSv(SUPGROUPS, str, pp), OUTBUF_SIZE, &rightward);
return max_rightward-rightward; return max_rightward-rightward;
} }
@ -1197,13 +1208,13 @@ setREL1(LXCNAME)
// 2. the -z and -Z option issue // 2. the -z and -Z option issue
// 3. width of output // 3. width of output
static int pr_context(char *restrict const outbuf, const proc_t *restrict const pp){ static int pr_context(char *restrict const outbuf, const proc_t *restrict const pp){
static void (*ps_freecon)(char*) = 0; static void (*ps_freecon)(char*);
static int (*ps_getpidcon)(pid_t pid, char **context) = 0; static int (*ps_getpidcon)(pid_t pid, char **context);
#if ENABLE_LIBSELINUX #if ENABLE_LIBSELINUX
static int (*ps_is_selinux_enabled)(void) = 0; static int (*ps_is_selinux_enabled)(void);
static int tried_load = 0; static int tried_load;
#endif #endif
static int selinux_enabled = 0; static int selinux_enabled;
size_t len; size_t len;
char *context; char *context;
setREL1(ID_TGID) setREL1(ID_TGID)