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 <csmall@dropbear.xyz>
This commit is contained in:
Craig Small 2022-12-19 16:50:12 +11:00
parent ab978d62ae
commit dd3cb0892d
3 changed files with 12 additions and 2 deletions

1
NEWS
View File

@ -2,6 +2,7 @@ procps-ng-NEXT
--------------- ---------------
* docs: Don't install English manpages twice * docs: Don't install English manpages twice
* skill: Match on -p again Debian #1025915 * skill: Match on -p again Debian #1025915
* ps: c flag shows command name again Debian #1026326
procps-ng-4.0.2 procps-ng-4.0.2
--------------- ---------------
* library revision - 0:1:0 * library revision - 0:1:0

View File

@ -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){ static int pr_args(char *restrict const outbuf, const proc_t *restrict const pp){
char *endp; char *endp;
int rightward, fh; int rightward, fh;
setREL2(CMDLINE,ENVIRON) setREL3(CMDLINE,CMD,ENVIRON)
endp = outbuf; endp = outbuf;
rightward = max_rightward; rightward = max_rightward;
fh = forest_helper(outbuf); fh = forest_helper(outbuf);
endp += fh; endp += fh;
rightward -= 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) { if(bsd_e_option && rightward>1) {
char *e = rSv(ENVIRON, str, pp); char *e = rSv(ENVIRON, str, pp);
if(*e != '-' || *(e+1) != '\0') { if(*e != '-' || *(e+1) != '\0') {

View File

@ -51,3 +51,9 @@ expect_pass "$test" "error: missing AIX field descriptor"
set test "ps with unknown AIX field" set test "ps with unknown AIX field"
spawn $ps -o "%p %Z" spawn $ps -o "%p %Z"
expect_pass "$test" "error: unknown AIX field descriptor" 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