diff options
author | Eric Andersen | 1999-10-12 22:26:06 +0000 |
---|---|---|
committer | Eric Andersen | 1999-10-12 22:26:06 +0000 |
commit | 3cf52d19581b2077480e7d2e63010baa1f5399c1 (patch) | |
tree | d91b0cb332ebc976126e36a394655dde7a15d8b1 /procps/kill.c | |
parent | 2ce1edcf544ac675e6762c9861a6b918401ea716 (diff) | |
download | busybox-3cf52d19581b2077480e7d2e63010baa1f5399c1.zip busybox-3cf52d19581b2077480e7d2e63010baa1f5399c1.tar.gz |
More stuff...
Diffstat (limited to 'procps/kill.c')
-rw-r--r-- | procps/kill.c | 203 |
1 files changed, 100 insertions, 103 deletions
diff --git a/procps/kill.c b/procps/kill.c index da025fa..58dc8a9 100644 --- a/procps/kill.c +++ b/procps/kill.c @@ -4,137 +4,134 @@ #include <unistd.h> #include <signal.h> -const char kill_usage[] = "kill [-signal] process-id [process-id ...]\n"; +const char kill_usage[] = "kill [-signal] process-id [process-id ...]\n"; struct signal_name { - const char * name; - int number; + const char *name; + int number; }; const struct signal_name signames[] = { - { "HUP", SIGHUP }, - { "INT", SIGINT }, - { "QUIT", SIGQUIT }, - { "ILL", SIGILL }, - { "TRAP", SIGTRAP }, - { "ABRT", SIGABRT }, + {"HUP", SIGHUP}, + {"INT", SIGINT}, + {"QUIT", SIGQUIT}, + {"ILL", SIGILL}, + {"TRAP", SIGTRAP}, + {"ABRT", SIGABRT}, #ifndef __alpha__ - { "IOT", SIGIOT }, + {"IOT", SIGIOT}, #endif #if defined(sparc) || defined(__alpha__) - { "EMT", SIGEMT }, + {"EMT", SIGEMT}, #else - { "BUS", SIGBUS }, + {"BUS", SIGBUS}, #endif - { "FPE", SIGFPE }, - { "KILL", SIGKILL }, + {"FPE", SIGFPE}, + {"KILL", SIGKILL}, #if defined(sparc) || defined(__alpha__) - { "BUS", SIGBUS }, + {"BUS", SIGBUS}, #else - { "USR1", SIGUSR1 }, + {"USR1", SIGUSR1}, #endif - { "SEGV", SIGSEGV }, + {"SEGV", SIGSEGV}, #if defined(sparc) || defined(__alpha__) - { "SYS", SIGSYS }, + {"SYS", SIGSYS}, #else - { "USR2", SIGUSR2 }, + {"USR2", SIGUSR2}, #endif - { "PIPE", SIGPIPE }, - { "ALRM", SIGALRM }, - { "TERM", SIGTERM }, + {"PIPE", SIGPIPE}, + {"ALRM", SIGALRM}, + {"TERM", SIGTERM}, #if defined(sparc) || defined(__alpha__) - { "URG", SIGURG }, - { "STOP", SIGSTOP }, - { "TSTP", SIGTSTP }, - { "CONT", SIGCONT }, - { "CHLD", SIGCHLD }, - { "TTIN", SIGTTIN }, - { "TTOU", SIGTTOU }, - { "IO", SIGIO }, + {"URG", SIGURG}, + {"STOP", SIGSTOP}, + {"TSTP", SIGTSTP}, + {"CONT", SIGCONT}, + {"CHLD", SIGCHLD}, + {"TTIN", SIGTTIN}, + {"TTOU", SIGTTOU}, + {"IO", SIGIO}, # ifndef __alpha__ - { "POLL", SIGIO }, + {"POLL", SIGIO}, # endif - { "XCPU", SIGXCPU }, - { "XFSZ", SIGXFSZ }, - { "VTALRM", SIGVTALRM }, - { "PROF", SIGPROF }, - { "WINCH", SIGWINCH }, + {"XCPU", SIGXCPU}, + {"XFSZ", SIGXFSZ}, + {"VTALRM", SIGVTALRM}, + {"PROF", SIGPROF}, + {"WINCH", SIGWINCH}, # ifdef __alpha__ - { "INFO", SIGINFO }, + {"INFO", SIGINFO}, # else - { "LOST", SIGLOST }, + {"LOST", SIGLOST}, # endif - { "USR1", SIGUSR1 }, - { "USR2", SIGUSR2 }, + {"USR1", SIGUSR1}, + {"USR2", SIGUSR2}, #else - { "STKFLT", SIGSTKFLT }, - { "CHLD", SIGCHLD }, - { "CONT", SIGCONT }, - { "STOP", SIGSTOP }, - { "TSTP", SIGTSTP }, - { "TTIN", SIGTTIN }, - { "TTOU", SIGTTOU }, - { "URG", SIGURG }, - { "XCPU", SIGXCPU }, - { "XFSZ", SIGXFSZ }, - { "VTALRM", SIGVTALRM }, - { "PROF", SIGPROF }, - { "WINCH", SIGWINCH }, - { "IO", SIGIO }, - { "POLL", SIGPOLL }, - { "PWR", SIGPWR }, - { "UNUSED", SIGUNUSED }, + {"STKFLT", SIGSTKFLT}, + {"CHLD", SIGCHLD}, + {"CONT", SIGCONT}, + {"STOP", SIGSTOP}, + {"TSTP", SIGTSTP}, + {"TTIN", SIGTTIN}, + {"TTOU", SIGTTOU}, + {"URG", SIGURG}, + {"XCPU", SIGXCPU}, + {"XFSZ", SIGXFSZ}, + {"VTALRM", SIGVTALRM}, + {"PROF", SIGPROF}, + {"WINCH", SIGWINCH}, + {"IO", SIGIO}, + {"POLL", SIGPOLL}, + {"PWR", SIGPWR}, + {"UNUSED", SIGUNUSED}, #endif - { 0, 0 } + {0, 0} }; -extern int -kill_main(struct FileInfo * i, int argc, char * * argv) +extern int kill_main (int argc, char **argv) { - int had_error = 0; - int sig = SIGTERM; - if ( argv[1][0] == '-' ) { - if ( argv[1][1] >= '0' && argv[1][1] <= '9' ) { - sig = atoi(&argv[1][1]); - if ( sig < 0 || sig >= NSIG ) { - usage(kill_usage); - exit(-1); - } - } - else { - const struct signal_name * s = signames; - for ( ; ; ) { - if ( strcmp(s->name, &argv[1][1]) == 0 ) { - sig = s->number; - break; - } - s++; - if ( s->name == 0 ) { - usage(kill_usage); - exit(-1); - } - } - } - argv++; - argc--; + int had_error = 0; + int sig = SIGTERM; - } - while ( argc > 1 ) { - int pid; - if ( argv[1][0] < '0' || argv[1][0] > '9' ) { - usage(kill_usage); - exit(-1); - } - pid = atoi(argv[1]); - if ( kill(pid, sig) != 0 ) { - had_error = 1; - perror(argv[1]); + + + if (argv[1][0] == '-') { + if (argv[1][1] >= '0' && argv[1][1] <= '9') { + sig = atoi (&argv[1][1]); + if (sig < 0 || sig >= NSIG) + goto end; + } else { + const struct signal_name *s = signames; + for (;;) { + if (strcmp (s->name, &argv[1][1]) == 0) { + sig = s->number; + break; } - argv++; - argc--; + s++; + if (s->name == 0) + goto end; + } + } + argv++; + argc--; + + } + while (argc > 1) { + int pid; + if (argv[1][0] < '0' || argv[1][0] > '9') + goto end; + pid = atoi (argv[1]); + if (kill (pid, sig) != 0) { + had_error = 1; + perror (argv[1]); } - if ( had_error ) - return -1; - else - return 0; + argv++; + argc--; + } + if (had_error) { +end: + fprintf(stderr, "Usage: %s\n", kill_usage); + exit ( FALSE); + } + exit (TRUE); } |