From dd3cb0892d142e370413e1cba582d390042883e5 Mon Sep 17 00:00:00 2001 From: Craig Small Date: Mon, 19 Dec 2022 16:50:12 +1100 Subject: [PATCH] ps: Correct BSD c option procps 3.3.17 the c option changed the command/args field to cmd but this got removed as part of newlib Functionality is back in with a test case. References: https://bugs.debian.org/1026326 Signed-off-by: Craig Small --- NEWS | 1 + src/ps/output.c | 7 +++++-- testsuite/ps.test/ps_output.exp | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 2d13978d..8a2d6b04 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ procps-ng-NEXT --------------- * docs: Don't install English manpages twice * skill: Match on -p again Debian #1025915 + * ps: c flag shows command name again Debian #1026326 procps-ng-4.0.2 --------------- * library revision - 0:1:0 diff --git a/src/ps/output.c b/src/ps/output.c index 5a14f5be..26001a6c 100644 --- a/src/ps/output.c +++ b/src/ps/output.c @@ -403,13 +403,16 @@ Modifications to the arguments are not shown. static int pr_args(char *restrict const outbuf, const proc_t *restrict const pp){ char *endp; int rightward, fh; -setREL2(CMDLINE,ENVIRON) +setREL3(CMDLINE,CMD,ENVIRON) endp = outbuf; rightward = max_rightward; fh = forest_helper(outbuf); endp += fh; rightward -= fh; - endp += escape_str(endp, rSv(CMDLINE, str, pp), OUTBUF_SIZE_AT(endp), &rightward); + if (!bsd_c_option) + endp += escape_str(endp, rSv(CMDLINE, str, pp), OUTBUF_SIZE_AT(endp), &rightward); + else + endp += escape_str(endp, rSv(CMD, str, pp), OUTBUF_SIZE_AT(endp), &rightward); if(bsd_e_option && rightward>1) { char *e = rSv(ENVIRON, str, pp); if(*e != '-' || *(e+1) != '\0') { diff --git a/testsuite/ps.test/ps_output.exp b/testsuite/ps.test/ps_output.exp index 998490e5..b0f789e0 100644 --- a/testsuite/ps.test/ps_output.exp +++ b/testsuite/ps.test/ps_output.exp @@ -51,3 +51,9 @@ expect_pass "$test" "error: missing AIX field descriptor" set test "ps with unknown AIX field" spawn $ps -o "%p %Z" expect_pass "$test" "error: unknown AIX field descriptor" + +make_testproc +set test "ps with c option" +spawn $ps co command $testproc1_pid +expect_pass "$test" "^COMMAND\\s+spcorp\\s*$" +kill_testproc