]>
Commit | Line | Data |
---|---|---|
612af2b6 JB |
1 | --- sysvinit-2.86/src/killall5.c.orig 2004-07-30 14:16:23.000000000 +0200 |
2 | +++ sysvinit-2.86/src/killall5.c 2004-12-26 23:05:17.284315424 +0100 | |
3 | @@ -47,8 +47,9 @@ | |
4 | ||
437bcd41 | 5 | /* Info about a process. */ |
612af2b6 JB |
6 | typedef struct proc { |
7 | + char *pathname; /* full path to executable */ | |
8 | char *argv0; /* Name as found out from argv[0] */ | |
9 | - char *argv0base; /* `basename argv[1]` */ | |
10 | + char *argv0base; /* `basename argv[0]` */ | |
11 | char *argv1; /* Name as found out from argv[1] */ | |
12 | char *argv1base; /* `basename argv[1]` */ | |
13 | char *statname; /* the statname without braces */ | |
14 | @@ -191,6 +192,7 @@ | |
437bcd41 | 15 | n = p->next; |
612af2b6 JB |
16 | if (p->argv0) free(p->argv0); |
17 | if (p->argv1) free(p->argv1); | |
437bcd41 AM |
18 | + if (p->pathname) free(p->pathname); |
19 | free(p); | |
20 | } | |
21 | plist = NULL; | |
612af2b6 | 22 | @@ -309,6 +311,8 @@ |
437bcd41 AM |
23 | if (stat(path, &st) == 0) { |
24 | p->dev = st.st_dev; | |
25 | p->ino = st.st_ino; | |
26 | + p->pathname = (char *)xmalloc(PATH_MAX); | |
27 | + readlink(path, p->pathname, PATH_MAX); | |
28 | } | |
29 | ||
30 | /* Link it into the list. */ | |
612af2b6 JB |
31 | @@ -425,6 +429,10 @@ |
32 | strchr(p->argv0, ' '))) { | |
33 | ok += (strcmp(p->statname, s) == 0); | |
34 | } | |
437bcd41 | 35 | + |
612af2b6 JB |
36 | + if (prog[0] == '/' && p->pathname && strcmp(prog, p->pathname)) |
37 | + ok = 0; | |
38 | + | |
39 | if (ok) add_pid_to_q(q, p); | |
40 | } | |
437bcd41 | 41 |