diff options
Diffstat (limited to 'patches/procps-3.2.8/40_pgrep_coption.dpatch')
-rw-r--r-- | patches/procps-3.2.8/40_pgrep_coption.dpatch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/patches/procps-3.2.8/40_pgrep_coption.dpatch b/patches/procps-3.2.8/40_pgrep_coption.dpatch new file mode 100644 index 000000000..2a3be153a --- /dev/null +++ b/patches/procps-3.2.8/40_pgrep_coption.dpatch @@ -0,0 +1,87 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 40_pgrep-coption.dpatch by <csmall@localhost.localdomain> +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: c option for pgrep for counting number of matched proceesses + +@DPATCH@ +diff -urNad procps-3.2.8~/pgrep.1 procps-3.2.8/pgrep.1 +--- procps-3.2.8~/pgrep.1 2009-05-11 22:23:42.000000000 +1000 ++++ procps-3.2.8/pgrep.1 2009-05-11 22:24:14.000000000 +1000 +@@ -7,7 +7,7 @@ + pgrep, pkill \- look up or signal processes based on name and other attributes + + .SH SYNOPSIS +-pgrep [\-flvx] [\-d \fIdelimiter\fP] [\-n|\-o] [\-P \fIppid\fP,...] [\-g \fIpgrp\fP,...] ++pgrep [\-cflvx] [\-d \fIdelimiter\fP] [\-n|\-o] [\-P \fIppid\fP,...] [\-g \fIpgrp\fP,...] + .br + [\-s \fIsid\fP,...] [\-u \fIeuid\fP,...] [\-U \fIuid\fP,...] [\-G \fIgid\fP,...] + .br +@@ -38,6 +38,9 @@ + + .SH OPTIONS + .TP ++\-c ++Suppress normal output; instead print a count of matching processes. ++.TP + \-d \fIdelimiter\fP + Sets the string used to delimit each process ID in the output (by + default a newline). (\fBpgrep\fP only.) +diff -urNad procps-3.2.8~/pgrep.c procps-3.2.8/pgrep.c +--- procps-3.2.8~/pgrep.c 2009-05-11 22:24:14.000000000 +1000 ++++ procps-3.2.8/pgrep.c 2009-05-11 22:25:40.000000000 +1000 +@@ -54,6 +54,7 @@ + static int opt_newest = 0; + static int opt_negate = 0; + static int opt_exact = 0; ++static int opt_count = 0; + static int opt_signal = SIGTERM; + static int opt_lock = 0; + static int opt_case = 0; +@@ -79,7 +80,7 @@ + if (i_am_pkill) + fprintf (fp, "Usage: pkill [-SIGNAL] [-fvx] "); + else +- fprintf (fp, "Usage: pgrep [-flvx] [-d DELIM] "); ++ fprintf (fp, "Usage: pgrep [-cflvx] [-d DELIM] "); + fprintf (fp, "[-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]\n" + "\t[-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] " + "[PATTERN]\n"); +@@ -565,7 +566,7 @@ + strcat (opts, "ld:"); + } + +- strcat (opts, "LF:fnovxP:g:s:u:U:G:t:?V"); ++ strcat (opts, "LF:cfnovxP:g:s:u:U:G:t:?V"); + + while ((opt = getopt (argc, argv, opts)) != -1) { + switch (opt) { +@@ -613,6 +614,9 @@ + exit(EXIT_SUCCESS); + // case 'c': // Solaris: match by contract ID + // break; ++ case 'c': ++ opt_count = 1; ++ break; + case 'd': // Solaris: change the delimiter + opt_delim = strdup (optarg); + break; +@@ -724,10 +728,14 @@ + procs[i].num, strerror (errno)); + } + } else { +- if (opt_long) +- output_strlist(procs,num); +- else +- output_numlist(procs,num); ++ if (opt_count) { ++ fprintf(stdout, "%ld\n", num); ++ } else { ++ if (opt_long) ++ output_strlist (procs,num); ++ else ++ output_numlist (procs,num); ++ } + } + return !num; // exit(EXIT_SUCCESS) if match, otherwise exit(EXIT_FAILURE) + } |