summaryrefslogtreecommitdiffstats
path: root/patches/procps-3.2.8/40_pgrep_coption.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/procps-3.2.8/40_pgrep_coption.dpatch')
-rw-r--r--patches/procps-3.2.8/40_pgrep_coption.dpatch87
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)
+ }