Annotation of researchv9/cmd/kill.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)kill.c      4.2 (Berkeley) 10/9/80";
                      2: /*
                      3:  * kill - send signal to process
                      4:  */
                      5: 
                      6: #include <signal.h>
                      7: #include <ctype.h>
                      8: 
                      9: char *signm[NSIG+1] = { 0,
                     10: "SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGTRAP", "SIGIOT", "SIGEMT", "SIGFPE",      /* 1-8 */
                     11: "SIGKILL", "SIGBUS", "SIGSEGV", "SIGSYS", "SIGPIPE", "SIGALRM", "SIGTERM", 0,  /* 9-16 */
                     12: "SIGSTOP", "SIGTSTP", "SIGCONT", "SIGCHLD", "SIGTTIN", "SIGTTOU", "SIGTINT", "SIGXCPU",        /* 17-24 */
                     13: "SIGXFSZ"                              /* 25- */
                     14: };
                     15: 
                     16: main(argc, argv)
                     17: char **argv;
                     18: {
                     19:        register signo, pid, res;
                     20:        int errlev;
                     21:        extern char *sys_errlist[];
                     22:        extern errno;
                     23: 
                     24:        errlev = 0;
                     25:        if (argc <= 1) {
                     26:        usage:
                     27:                printf("usage: kill [ -sig ] pid ...\n");
                     28:                printf("for a list of signals: kill -l\n");
                     29:                exit(2);
                     30:        }
                     31:        if (*argv[1] == '-') {
                     32:                if (argv[1][1] == 'l') {
                     33:                        int i = 0;
                     34:                        for (signo = 1; signo <= NSIG; signo++)
                     35:                                if (signm[signo]) {
                     36:                                        printf("%s ", signm[signo]);
                     37:                                        if (++i%8 == 0)
                     38:                                                printf("\n");
                     39:                                }
                     40:                        if(i%8 !=0)
                     41:                                printf("\n");
                     42:                        exit(0);
                     43:                } else if (isdigit(argv[1][1])) {
                     44:                        signo = atoi(argv[1]+1);
                     45:                        if (signo < 0 || signo > NSIG) {
                     46:                                printf("kill: %s: number out of range\n",
                     47:                                    argv[1]);
                     48:                                exit(1);
                     49:                        }
                     50:                } else {
                     51:                        char *name = argv[1]+1;
                     52:                        for (signo = 1; signo <= NSIG; signo++)
                     53:                                if (signm[signo] && (
                     54:                                    !strcmp(signm[signo], name)||
                     55:                                    !strcmp(signm[signo]+3, name)))
                     56:                                        goto foundsig;
                     57:                        printf("kill: %s: unknown signal; kill -l lists signals\n", name);
                     58:                        exit(1);
                     59: foundsig:
                     60:                        ;
                     61:                }
                     62:                argc--;
                     63:                argv++;
                     64:        } else
                     65:                signo = SIGTERM;
                     66:        argv++;
                     67:        while (argc > 1) {
                     68:                if ((**argv<'0' || **argv>'9') && **argv!='-')
                     69:                        goto usage;
                     70:                res = kill(pid = atoi(*argv), signo);
                     71:                if (res<0) {
                     72:                        printf("%u: %s\n", pid, sys_errlist[errno]);
                     73:                        errlev = 1;
                     74:                }
                     75:                argc--;
                     76:                argv++;
                     77:        }
                     78:        return(errlev);
                     79: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.