aboutsummaryrefslogtreecommitdiff
path: root/toys/posix/ps.c
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-06-04 09:26:14 -0700
committerRob Landley <rob@landley.net>2016-06-04 16:57:18 -0500
commit5d2619774ea77b02e4642401fb3c1dbd02253011 (patch)
treeb2f7cef9aa900111c6696d74e0feb54c38b2eff1 /toys/posix/ps.c
parent5352bb64b619aad69598fda69cccc591e8f16710 (diff)
downloadtoybox-5d2619774ea77b02e4642401fb3c1dbd02253011.tar.gz
Basic success/failure return from pgrep/pkill.
The man page says they also return 2 for syntax errors and 3 for "fatal error: out of memory etc", but I don't know how to implement that and don't need it (or have any reason to believe anyone needs it). Bug: 29092208
Diffstat (limited to 'toys/posix/ps.c')
-rw-r--r--toys/posix/ps.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/toys/posix/ps.c b/toys/posix/ps.c
index 82a84438..def81c55 100644
--- a/toys/posix/ps.c
+++ b/toys/posix/ps.c
@@ -1685,7 +1685,10 @@ static void match_pgrep(struct carveup *tb)
if ((toys.optflags&FLAG_v) ? !!reg : !reg) return;
}
- // Repurpose a field for -c count
+ // pgrep should return success if there's a match.
+ toys.exitval = 0;
+
+ // Repurpose a field for -c count.
TT.sortpos++;
if (toys.optflags&(FLAG_n|FLAG_o)) {
long long ll = tb->slot[SLOT_starttime];
@@ -1738,6 +1741,9 @@ void pgrep_main(void)
TT.match_process = pgrep_match_process;
TT.show_process = (void *)match_pgrep;
+ // pgrep should return failure if there are no matches.
+ toys.exitval = 1;
+
dirtree_read("/proc", get_ps);
if (toys.optflags&FLAG_c) printf("%d\n", TT.sortpos);
if (TT.pgrep.snapshot) {