aboutsummaryrefslogtreecommitdiff
path: root/toys
diff options
context:
space:
mode:
Diffstat (limited to 'toys')
-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) {