summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2006-04-01 17:01:15 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2006-04-01 17:01:15 +0000
commit97ab95b966601adf2d6bbdd65240f86c0a1faae8 (patch)
treeb3050a64e411e698635d587bf3ec668e8b1629a5 /sys-process/pidof-bsd/files
parentMarked stable on x86 (diff)
downloadhistorical-97ab95b966601adf2d6bbdd65240f86c0a1faae8.tar.gz
historical-97ab95b966601adf2d6bbdd65240f86c0a1faae8.tar.bz2
historical-97ab95b966601adf2d6bbdd65240f86c0a1faae8.zip
Initial import in portage, from gentoo-alt overlay.
Package-Manager: portage-2.1_pre7-r3
Diffstat (limited to 'sys-process/pidof-bsd/files')
-rw-r--r--sys-process/pidof-bsd/files/digest-pidof-bsd-20050501-r13
-rw-r--r--sys-process/pidof-bsd/files/pidof-bsd-20050501-gfbsd.patch128
2 files changed, 131 insertions, 0 deletions
diff --git a/sys-process/pidof-bsd/files/digest-pidof-bsd-20050501-r1 b/sys-process/pidof-bsd/files/digest-pidof-bsd-20050501-r1
new file mode 100644
index 000000000000..a225f6856ac3
--- /dev/null
+++ b/sys-process/pidof-bsd/files/digest-pidof-bsd-20050501-r1
@@ -0,0 +1,3 @@
+MD5 58bcaf9a6e325ef6e5fd175175788e56 pidof-bsd-20050501.tar.gz 1769
+RMD160 1306e7f4b2d6231358d10b45705a16c925bb1d51 pidof-bsd-20050501.tar.gz 1769
+SHA256 c3ed8826178debe872f7717b8810d477d4611ab19af73bed97c5af1c552d20e6 pidof-bsd-20050501.tar.gz 1769
diff --git a/sys-process/pidof-bsd/files/pidof-bsd-20050501-gfbsd.patch b/sys-process/pidof-bsd/files/pidof-bsd-20050501-gfbsd.patch
new file mode 100644
index 000000000000..8309425d707a
--- /dev/null
+++ b/sys-process/pidof-bsd/files/pidof-bsd-20050501-gfbsd.patch
@@ -0,0 +1,128 @@
+? .pidof.c.swp
+? pidof
+? pidof.core
+Index: pidof.c
+===================================================================
+RCS file: /cvsroot/bmp-plugins/pidof/pidof.c,v
+retrieving revision 1.4
+diff -u -r1.4 pidof.c
+--- pidof.c 1 May 2005 16:26:19 -0000 1.4
++++ pidof.c 13 Sep 2005 16:11:08 -0000
+@@ -26,6 +26,7 @@
+ * $Id: pidof-bsd-20050501-gfbsd.patch,v 1.1 2006/04/01 17:01:15 flameeyes Exp $
+ */
+
++#include <unistd.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <err.h>
+@@ -37,56 +38,91 @@
+ #include <fcntl.h>
+ #include <stdlib.h>
+ #include <sysexits.h>
++#include <libgen.h>
+
+-static int get_pid_of_process(char *process_name);
++static int get_pid_of_process(const char *process_name);
+ static void usage(void);
+
++static int match_argv;
++static pid_t own_pid;
++
+ static int
+-get_pid_of_process(char *process_name)
++get_pid_of_process(const char *process_name)
+ {
+ static kvm_t *kd = NULL;
+ struct kinfo_proc *p;
+- int i, n_processes, processes_found;
+-
+- processes_found = 0;
++ int i, n_processes,
++ processes_found = 0;
+
+ if ((kd = kvm_open("/dev/null", "/dev/null", "/dev/null", O_RDONLY, "kvm_open")) == NULL)
+ (void)errx(1, "%s", kvm_geterr(kd));
+ else {
+ p = kvm_getprocs(kd, KERN_PROC_PROC, 0, &n_processes);
+- for (i = 0; i<n_processes; i++)
+- if (strncmp(process_name, p[i].ki_comm, COMMLEN+1) == 0) {
+- (void)printf("%d ", (int)p[i].ki_pid);
+- processes_found++;
+- }
++ for (i = 0; i<n_processes; i++) {
++ if (p[i].ki_pid != own_pid)
++ if (strncmp(process_name, p[i].ki_comm, COMMLEN+1) == 0) {
++ (void)printf("%d ", (int)p[i].ki_pid);
++ processes_found++;
++ } else if (match_argv == 1) {
++ char **p_argv = NULL;
++
++ if ((p_argv = kvm_getargv(kd, p+i, 0)) != NULL)
++ for (; *p_argv != NULL; p_argv++)
++ if (strcmp(process_name, basename(*p_argv)) == 0) {
++ (void)printf("%d ", (int)p[i].ki_pid);
++ processes_found++;
++ break;
++ }
++ }
++ }
+
+ kvm_close(kd);
+ }
+-
+- return processes_found;
++
++ return (processes_found);
+ }
+
+ static void
+ usage()
+ {
+
+- (void)fprintf(stderr, "usage: pidof name1 name2 ...\n");
++ (void)fprintf(stderr, "usage: pidof [-x] name1 name2 ...\n");
+ exit(EX_USAGE);
+ }
+
+ int
+ main(int argc, char **argv)
+ {
+- int i, procs_found;
++ int i, procs_found,
++ ch;
+
+ procs_found = 0;
++ match_argv = 0;
+
+- if (argc <= 1)
+- usage();
++ own_pid = getpid();
++
++ while ((ch = getopt(argc, argv, "x")) != -1) {
++ switch (ch) {
++ case 'x':
++ match_argv = 1;
++ break;
++ case '?':
++ default:
++ usage();
++ break;
++ }
++ }
++ argc -= optind;
++ argv += optind;
+
+- for (i = 1; i<argc; procs_found += get_pid_of_process(argv[i++]));
++ if (argc < 1)
++ usage();
++
++ for (i = 0; i<argc; i++) {
++ procs_found += get_pid_of_process(argv[i]);
++ }
+
+ (void)printf("\n");
+
+- return (procs_found > 0) ? 0 : 1;
++ return ((procs_found > 0) ? 0 : 1);
+ }