From: Jim Warner Date: Tue, 26 Jun 2012 04:59:59 +0000 (-0500) Subject: ps: restore missing space when environment is displayed X-Git-Tag: v3.3.4~47 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f4b6de11362ad4dac70caed84825177717916e32;p=procps-ng ps: restore missing space when environment is displayed This commit restores the missing space between command lines and the environment when the later is being displayed. Below is a brief history of that elusive character. commit bb4f08ba297a67a043f7547670aa8623b54c2e67 Date: Thu Aug 11 07:42:14 2011 +1000 The ps program was altered for improved args/comm compliance. At this time, the needed space was present due to a buglet in the new library read_unvectored function used by fill_cmdline_cvt. commit a5881b5a4e5056d13906ce6128f6aa180d67d60e Date: Thu Dec 8 10:19:38 2011 -0600 The trailing space was eliminated so that the file2strvec and fill_cmdline_cvt returned command lines contained no trailing space. However, this created a buglet when control group hierarchies were displayed and the final cgroup was empty. This is also where the undetected ps buglet was created. commit c3a1239efee4d720080f216547be4cd22253f861 Date: Sun Dec 11 12:00:50 2011 -0600 The control group anomaly was fixed but the impact on ps args/environ was still not detected. Signed-off-by: Jim Warner --- diff --git a/ps/output.c b/ps/output.c index 0b030670..c95e8213 100644 --- a/ps/output.c +++ b/ps/output.c @@ -384,8 +384,11 @@ static int pr_args(char *restrict const outbuf, const proc_t *restrict const pp) endp += escape_command(endp, pp, OUTBUF_SIZE, &rightward, ESC_DEFUNCT); if(bsd_e_option && rightward>1) { - if(pp->environ && *pp->environ) + if(pp->environ && *pp->environ) { + *endp++ = ' '; + rightward--; endp += escape_strlist(endp, pp->environ, OUTBUF_SIZE, &rightward); + } } return max_rightward-rightward; } @@ -408,8 +411,11 @@ static int pr_comm(char *restrict const outbuf, const proc_t *restrict const pp) endp += escape_command(endp, pp, OUTBUF_SIZE, &rightward, ESC_DEFUNCT); if(bsd_e_option && rightward>1) { - if(pp->environ && *pp->environ) + if(pp->environ && *pp->environ) { + *endp++ = ' '; + rightward--; endp += escape_strlist(endp, pp->environ, OUTBUF_SIZE, &rightward); + } } return max_rightward-rightward; }