summaryrefslogtreecommitdiff
path: root/sysutils/psmisc/files/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/psmisc/files/patch-ab')
-rw-r--r--sysutils/psmisc/files/patch-ab63
1 files changed, 63 insertions, 0 deletions
diff --git a/sysutils/psmisc/files/patch-ab b/sysutils/psmisc/files/patch-ab
new file mode 100644
index 000000000000..70023031f4a0
--- /dev/null
+++ b/sysutils/psmisc/files/patch-ab
@@ -0,0 +1,63 @@
+--- killall.c.orig Tue Feb 17 15:05:21 1998
++++ killall.c Sat Dec 19 22:01:20 1998
+@@ -12,6 +12,7 @@
+ #include <errno.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <sys/param.h>
+
+ #include "comm.h"
+ #include "signals.h"
+@@ -50,7 +51,6 @@
+ struct stat st,sts[MAX_NAMES];
+ int *name_len;
+ char path[PATH_MAX+1],comm[COMM_LEN];
+- char command_buf[PATH_MAX+1];
+ char *command;
+ pid_t *pid_table,pid,self,*pid_killed;
+ int empty,i,j,okay,length,got_long,error;
+@@ -103,33 +103,15 @@
+ exit(1);
+ }
+ for (i = 0; i < pids; i++) {
+- sprintf(path,"%s/%d/stat",PROC_BASE,pid_table[i]);
++ sprintf(path,"%s/%d/status",PROC_BASE,pid_table[i]);
+ if (!(file = fopen(path,"r"))) continue;
+ empty = 0;
+- okay = fscanf(file,"%*d (%[^)]",comm) == 1;
++ okay = fscanf(file,"%s",comm) == 1;
+ (void) fclose(file);
+ if (!okay) continue;
+ got_long = 0;
+ command = NULL; /* make gcc happy */
+ length = strlen(comm);
+- if (length == COMM_LEN-1) {
+- sprintf(path,"%s/%d/cmdline",PROC_BASE,pid_table[i]);
+- if (!(file = fopen(path,"r"))) continue;
+- okay = fscanf(file,"%s",command_buf) == 1;
+- (void) fclose(file);
+- if (exact && !okay) {
+- if (verbose)
+- fprintf(stderr,"skipping partial match %s(%d)\n",comm,
+- pid_table[i]);
+- continue;
+- }
+- got_long = okay;
+- if (okay) {
+- command = strrchr(command_buf,'/');
+- if (command) command++;
+- else command = command_buf;
+- }
+- }
+ for (j = 0; j < names; j++) {
+ if (!sts[j].st_dev) {
+ if (length != COMM_LEN-1 || name_len[j] < COMM_LEN-1) {
+@@ -139,7 +121,7 @@
+ strncmp(namelist[j],comm,COMM_LEN-1)) continue;
+ }
+ else {
+- sprintf(path,"%s/%d/exe",PROC_BASE,pid_table[i]);
++ sprintf(path,"%s/%d/file",PROC_BASE,pid_table[i]);
+ if (stat(path,&st) < 0) continue;
+ if (sts[j].st_dev != st.st_dev || sts[j].st_ino != st.st_ino)
+ continue;