]> granicus.if.org Git - procps-ng/commitdiff
ps: restore missing space when environment is displayed
authorJim Warner <james.warner@comcast.net>
Tue, 26 Jun 2012 04:59:59 +0000 (23:59 -0500)
committerCraig Small <csmall@enc.com.au>
Wed, 29 Aug 2012 07:24:54 +0000 (17:24 +1000)
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 <james.warner@comcast.net>
ps/output.c

index 0b030670a1c034863a2031687dc39aa7eb55593f..c95e8213b217a2bad3dd1e7a3bea97fd1f07ea9a 100644 (file)
@@ -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;
 }