diff options
Diffstat (limited to 'abs/core-testing/sysvinit-mod/sysvinit.diff')
-rw-r--r-- | abs/core-testing/sysvinit-mod/sysvinit.diff | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/abs/core-testing/sysvinit-mod/sysvinit.diff b/abs/core-testing/sysvinit-mod/sysvinit.diff deleted file mode 100644 index d26f7cc..0000000 --- a/abs/core-testing/sysvinit-mod/sysvinit.diff +++ /dev/null @@ -1,276 +0,0 @@ -diff -r -u sysvinit-2.86/COPYRIGHT sysvinit-2.86.patched/COPYRIGHT ---- sysvinit-2.86/COPYRIGHT 2004-07-30 12:12:12.000000000 +0000 -+++ sysvinit-2.86.patched/COPYRIGHT 2008-04-15 14:28:52.000000000 +0000 -@@ -12,7 +12,7 @@ - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - On Debian GNU/Linux systems, the complete text of the GNU General - Public License can be found in `/usr/share/common-licenses/GPL'. -diff -r -u sysvinit-2.86/man/killall5.8 sysvinit-2.86.patched/man/killall5.8 ---- sysvinit-2.86/man/killall5.8 2004-06-09 12:47:45.000000000 +0000 -+++ sysvinit-2.86.patched/man/killall5.8 2008-04-15 14:28:52.000000000 +0000 -@@ -4,14 +4,29 @@ - .SH SYNOPSIS - .B killall5 - .RB -signalnumber -+.RB [ \-o -+.IR omitpid ] -+.RB [ \-o -+.IR omitpid.. ] - .SH DESCRIPTION - .B killall5 - is the SystemV killall command. It sends a signal to all processes except - kernel threads and the processes in its own session, so it won't kill - the shell that is running the script it was called from. Its primary - (only) use is in the \fBrc\fP scripts found in the /etc/init.d directory. -+.SH OPTIONS -+.IP "-o \fIomitpid\fP" -+Tells \fIkillall5\fP to omit processes with that process id. -+.SH NOTES -+\fIkillall5\fP can also be invoked as pidof, which is simply a -+(symbolic) link to the \fIkillall5\fP program. -+.SH EXIT STATUS -+The program return zero if it killed processes. It return 2 if no -+process were killed, and 1 if it was unable to find any processes -+(/proc/ is missing). - .SH SEE ALSO - .BR halt (8), --.BR reboot (8) -+.BR reboot (8), -+.BR pidof (8) - .SH AUTHOR - Miquel van Smoorenburg, miquels@cistron.nl -diff -r -u sysvinit-2.86/man/pidof.8 sysvinit-2.86.patched/man/pidof.8 ---- sysvinit-2.86/man/pidof.8 1998-09-02 12:49:33.000000000 +0000 -+++ sysvinit-2.86.patched/man/pidof.8 2008-04-15 14:28:52.000000000 +0000 -@@ -27,13 +27,20 @@ - .IP -x - Scripts too - this causes the program to also return process id's of - shells running the named scripts. --.IP -o \fIomitpid\fP -+.IP "-o \fIomitpid\fP" - Tells \fIpidof\fP to omit processes with that process id. The special - pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP - program, in other words the calling shell or shell script. -+.SH "EXIT STATUS" -+.TP -+.B 0 -+At least one program was found with the requested name. -+.TP -+.B 1 -+No program was found with the requested name. - .SH NOTES --\fIpidof\fP is simply a (symbolic) link to the \fIkillall5\fP program, --which should also be located in \fP/sbin\fP. -+\fIpidof\fP is actually the same program as \fIkillall5\fP; -+the program behaves according to the name under which it is called. - .PP - When \fIpidof\fP is invoked with a full pathname to the program it - should find the pid of, it is reasonably safe. Otherwise it is possible -@@ -43,6 +50,7 @@ - .BR shutdown (8), - .BR init (8), - .BR halt (8), --.BR reboot (8) -+.BR reboot (8), -+.BR killall5 (8) - .SH AUTHOR - Miquel van Smoorenburg, miquels@cistron.nl -diff -r -u sysvinit-2.86/src/killall5.c sysvinit-2.86.patched/src/killall5.c ---- sysvinit-2.86/src/killall5.c 2004-07-30 12:16:23.000000000 +0000 -+++ sysvinit-2.86.patched/src/killall5.c 2008-04-15 14:28:52.000000000 +0000 -@@ -378,8 +378,8 @@ - int foundone = 0; - int ok = 0; - -- /* Try to stat the executable. */ -- if (prog[0] == '/' && stat(prog, &st) == 0) dostat++; -+ if (! prog) -+ return NULL; - - /* Get basename of program. */ - if ((s = strrchr(prog, '/')) == NULL) -@@ -387,9 +387,16 @@ - else - s++; - -+ if (! *s) -+ return NULL; -+ - q = (PIDQ_HEAD *)xmalloc(sizeof(PIDQ_HEAD)); - q = init_pid_q(q); - -+ /* Try to stat the executable. */ -+ if (prog[0] == '/' && stat(prog, &st) == 0) -+ dostat++; -+ - /* First try to find a match based on dev/ino pair. */ - if (dostat) { - for (p = plist; p; p = p->next) { -@@ -404,15 +411,35 @@ - if (!foundone) for (p = plist; p; p = p->next) { - ok = 0; - -- /* Compare name (both basename and full path) */ -- ok += (p->argv0 && strcmp(p->argv0, prog) == 0); -- ok += (p->argv0 && strcmp(p->argv0base, s) == 0); -+ /* matching nonmatching -+ * proc name prog name prog name -+ * --- ----------- ------------ -+ * b b, p/b, q/b -+ * p/b b, p/b q/b -+ * -+ * Algorithm: Match if: -+ * cmd = arg -+ * or cmd = base(arg) -+ * or base(cmd) = arg -+ * -+ * Specifically, do not match just because base(cmd) = base(arg) -+ * as was done in earlier versions of this program, since this -+ * allows /aaa/foo to match /bbb/foo . -+ */ -+ ok |= -+ (p->argv0 && strcmp(p->argv0, prog) == 0) -+ || (p->argv0 && s != prog && strcmp(p->argv0, s) == 0) -+ || (p->argv0base && strcmp(p->argv0base, prog) == 0); - - /* For scripts, compare argv[1] as well. */ -- if (scripts_too && p->argv1 && -- !strncmp(p->statname, p->argv1base, STATNAMELEN)) { -- ok += (strcmp(p->argv1, prog) == 0); -- ok += (strcmp(p->argv1base, s) == 0); -+ if ( -+ scripts_too && p->statname && p->argv1base -+ && !strncmp(p->statname, p->argv1base, STATNAMELEN) -+ ) { -+ ok |= -+ (p->argv1 && strcmp(p->argv1, prog) == 0) -+ || (p->argv1 && s != prog && strcmp(p->argv1, s) == 0) -+ || (p->argv1base && strcmp(p->argv1base, prog) == 0); - } - - /* -@@ -423,7 +450,7 @@ - (p->argv0 == NULL || - p->argv0[0] == 0 || - strchr(p->argv0, ' '))) { -- ok += (strcmp(p->statname, s) == 0); -+ ok |= (strcmp(p->statname, s) == 0); - } - if (ok) add_pid_to_q(q, p); - } -@@ -548,20 +575,28 @@ - } - } - } -- printf("\n"); -+ if (!first) -+ printf("\n"); - closelog(); - return(first ? 1 : 0); - } - - - -+#define KILLALL_OMITSZ 16 -+ - /* Main for either killall or pidof. */ - int main(int argc, char **argv) - { - PROC *p; - int pid, sid = -1; -+ pid_t opid[KILLALL_OMITSZ]; -+ int i, oind, omit = 0; - int sig = SIGKILL; - -+ /* return non-zero if no process was killed */ -+ int retval = 2; -+ - /* Get program name. */ - if ((progname = strrchr(argv[0], '/')) == NULL) - progname = argv[0]; -@@ -576,10 +611,34 @@ - return main_pidof(argc, argv); - - /* Right, so we are "killall". */ -+ for (oind = KILLALL_OMITSZ-1; oind > 0; oind--) -+ opid[oind] = 0; -+ - if (argc > 1) { -- if (argc != 2) usage(); -- if (argv[1][0] == '-') (argv[1])++; -- if ((sig = atoi(argv[1])) <= 0 || sig > 31) usage(); -+ for (i = 1; i < argc; i++) { -+ if (argv[i][0] == '-') (argv[i])++; -+ if (argv[i][0] == 'o') { -+ if (++i >= argc) usage(); -+ if (oind >= KILLALL_OMITSZ -1) { -+ nsyslog(LOG_ERR,"omit pid buffer size " -+ "%d exceeded!\n", -+ KILLALL_OMITSZ); -+ closelog(); -+ exit(1); -+ } -+ if ((opid[oind] = atoi(argv[i])) < 1) { -+ nsyslog(LOG_ERR, -+ "illegal omit pid value " -+ "(%s)!\n", argv[i]); -+ closelog(); -+ exit(1); -+ } -+ oind++; -+ omit = 1; -+ } -+ else if ((sig = atoi(argv[1])) <= 0 || sig > 31) -+ usage(); -+ } - } - - /* First get the /proc filesystem online. */ -@@ -602,15 +661,26 @@ - /* Read /proc filesystem */ - if (readproc() < 0) { - kill(-1, SIGCONT); -- exit(1); -+ return(1); - } - -- /* Now kill all processes except our session. */ -+ /* Now kill all processes except init (pid 1) and our session. */ - sid = (int)getsid(0); - pid = (int)getpid(); -- for (p = plist; p; p = p->next) -- if (p->pid != pid && p->sid != sid && !p->kernel) -- kill(p->pid, sig); -+ for (p = plist; p; p = p->next) { -+ if (p->pid == 1 || p->pid == pid || p->sid == sid || p->kernel) -+ continue; -+ if (omit) { -+ for (i = 0; i < oind; i++) -+ if (opid[i] == p->pid) -+ break; -+ /* On a match, continue with the for loop above. */ -+ if (i < oind) -+ continue; -+ } -+ kill(p->pid, sig); -+ retval = 0; -+ } - - /* And let them continue. */ - kill(-1, SIGCONT); -@@ -618,5 +688,8 @@ - /* Done. */ - closelog(); - -- return 0; -+ /* Force the kernel to run the scheduler */ -+ usleep(1); -+ -+ return retval; - } - |