]> git.pld-linux.org Git - packages/SysVinit.git/blame - sysvinit-killall5.patch
- add bcond to build with stupid default R: values
[packages/SysVinit.git] / sysvinit-killall5.patch
CommitLineData
437bcd41
AM
1diff -ru sysvinit-2.85/src/killall5.c sysvinit-2.85-fixed/src/killall5.c
2--- sysvinit-2.85/src/killall5.c 2003-05-23 00:24:47.000000000 -0400
3+++ sysvinit-2.85-fixed/src/killall5.c 2003-05-23 00:23:57.000000000 -0400
4@@ -170,6 +170,7 @@
5 n = p->next;
6 if (p->fullname) free(p->fullname);
7 if (p->pathname) free(p->pathname);
8+ if (p->statname) free(p->statname);
9 free(p);
10 }
11 plist = NULL;
12@@ -187,7 +188,7 @@
13 /* Open the status file. */
14 snprintf(path, sizeof(path), "/proc/%s/stat", d->d_name);
15
16- /* Read SID & statname from it. */
17+ /* Read statname from it. */
18 if ((fp = fopen(path, "r")) != NULL) {
19 buf[0] = 0;
20 fgets(buf, 256, fp);
21@@ -200,7 +201,6 @@
22 /* Read program name. */
23 q = strrchr(buf, ')');
24 if (q == NULL) {
25- p->sid = 0;
26 nsyslog(LOG_ERR,
27 "can't get program name from %s\n",
28 path);
29@@ -213,24 +213,21 @@
30 while (*q != ' ') q++;
31 }
32 *q++ = 0;
33- while (*q == ' ') q++;
34 p->statname = (char *)xmalloc(strlen(s)+1);
35 strcpy(p->statname, s);
36-
37- /* This could be replaced by getsid(pid) */
38- if (sscanf(q, "%*c %*d %*d %d", &p->sid) != 1) {
39- p->sid = 0;
40- nsyslog(LOG_ERR, "can't read sid from %s\n",
41- path);
42- free(p);
43- continue;
44- }
45 fclose(fp);
46 } else {
47 /* Process disappeared.. */
48 free(p);
49 continue;
50 }
51+ p->sid = getsid(pid);
52+ if (p->sid < 0) {
53+ p->sid = 0;
54+ nsyslog(LOG_ERR, "can't read sid for pid %d\n", pid);
55+ free(p);
56+ continue;
57+ }
58
59 /* Now read argv[0] */
60 snprintf(path, sizeof(path), "/proc/%s/cmdline", d->d_name);
61@@ -553,11 +550,7 @@
62 }
63
64 pid = getpid();
65- for (p = plist; p; p = p->next)
66- if (p->pid == pid) {
67- sid = p->sid;
68- break;
69- }
70+ sid = getsid(0);
71
72 /* Now kill all processes except our session. */
73 for (p = plist; p; p = p->next)
This page took 0.039733 seconds and 4 git commands to generate.