diff options
author | Elliott Hughes <enh@google.com> | 2016-06-04 09:26:14 -0700 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2016-06-04 16:57:18 -0500 |
commit | 5d2619774ea77b02e4642401fb3c1dbd02253011 (patch) | |
tree | b2f7cef9aa900111c6696d74e0feb54c38b2eff1 /toys/posix | |
parent | 5352bb64b619aad69598fda69cccc591e8f16710 (diff) | |
download | toybox-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')
-rw-r--r-- | toys/posix/ps.c | 8 |
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) { |