aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2015-10-24 03:45:57 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2015-10-24 03:45:57 +0200
commit049b007865e2dfcfd2093db732b3bfbcb75b5c77 (patch)
tree8fa3a2d3bbe96bdf5177ff9746aea7167a6a6538
parent00da72bee09cfe4a757cbba4465a76269dae9f43 (diff)
downloadbusybox-w32-049b007865e2dfcfd2093db732b3bfbcb75b5c77.tar.gz
busybox-w32-049b007865e2dfcfd2093db732b3bfbcb75b5c77.tar.bz2
busybox-w32-049b007865e2dfcfd2093db732b3bfbcb75b5c77.zip
pmap: fix bogus {no such process} comm field text
function old new delta read_cmdline 246 266 +20 procps_get_maps 196 193 -3 packed_usage 30413 30404 -9 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/2 up/down: 20/-12) Total: 8 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--libbb/procps.c8
-rw-r--r--procps/pmap.c4
2 files changed, 7 insertions, 5 deletions
diff --git a/libbb/procps.c b/libbb/procps.c
index 05eefe0da..4edc54d48 100644
--- a/libbb/procps.c
+++ b/libbb/procps.c
@@ -588,12 +588,14 @@ void FAST_FUNC read_cmdline(char *buf, int col, unsigned pid, const char *comm)
588 buf[sz] = ' '; 588 buf[sz] = ' ';
589 sz--; 589 sz--;
590 } 590 }
591 if (base[0] == '-') /* "-sh" (login shell)? */
592 base++;
591 593
592 /* If comm differs from argv0, prepend "{comm} ". 594 /* If comm differs from argv0, prepend "{comm} ".
593 * It allows to see thread names set by prctl(PR_SET_NAME). 595 * It allows to see thread names set by prctl(PR_SET_NAME).
594 */ 596 */
595 if (base[0] == '-') /* "-sh" (login shell)? */ 597 if (!comm)
596 base++; 598 return;
597 comm_len = strlen(comm); 599 comm_len = strlen(comm);
598 /* Why compare up to comm_len, not COMM_LEN-1? 600 /* Why compare up to comm_len, not COMM_LEN-1?
599 * Well, some processes rewrite argv, and use _spaces_ there 601 * Well, some processes rewrite argv, and use _spaces_ there
@@ -612,7 +614,7 @@ void FAST_FUNC read_cmdline(char *buf, int col, unsigned pid, const char *comm)
612 buf[col - 1] = '\0'; 614 buf[col - 1] = '\0';
613 } 615 }
614 } else { 616 } else {
615 snprintf(buf, col, "[%s]", comm); 617 snprintf(buf, col, "[%s]", comm ? comm : "?");
616 } 618 }
617} 619}
618 620
diff --git a/procps/pmap.c b/procps/pmap.c
index fd995a54d..aa221cfb8 100644
--- a/procps/pmap.c
+++ b/procps/pmap.c
@@ -20,7 +20,7 @@
20//usage:#define pmap_trivial_usage 20//usage:#define pmap_trivial_usage
21//usage: "[-xq] PID" 21//usage: "[-xq] PID"
22//usage:#define pmap_full_usage "\n\n" 22//usage:#define pmap_full_usage "\n\n"
23//usage: "Display detailed process memory usage" 23//usage: "Display process memory usage"
24//usage: "\n" 24//usage: "\n"
25//usage: "\n -x Show details" 25//usage: "\n -x Show details"
26//usage: "\n -q Quiet" 26//usage: "\n -q Quiet"
@@ -66,7 +66,7 @@ static int procps_get_maps(pid_t pid, unsigned opt)
66 int ret; 66 int ret;
67 char buf[256]; 67 char buf[256];
68 68
69 read_cmdline(buf, sizeof(buf), pid, "no such process"); 69 read_cmdline(buf, sizeof(buf), pid, NULL);
70 printf("%u: %s\n", (int)pid, buf); 70 printf("%u: %s\n", (int)pid, buf);
71 71
72 if (!(opt & OPT_q) && (opt & OPT_x)) 72 if (!(opt & OPT_q) && (opt & OPT_x))