add 1994 copyright
[unix-history] / usr / src / bin / kill / kill.c
index 4236b47..7d7307d 100644 (file)
@@ -1,42 +1,39 @@
 /*
 /*
- * Copyright (c) 1988 Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1988, 1993, 1994
+ *     The Regents of the University of California.  All rights reserved.
  *
  * %sccs.include.redist.c%
  */
 
 #ifndef lint
  *
  * %sccs.include.redist.c%
  */
 
 #ifndef lint
-char copyright[] =
-"@(#) Copyright (c) 1988 Regents of the University of California.\n\
- All rights reserved.\n";
+static char copyright[] =
+"@(#) Copyright (c) 1988, 1993, 1994\n\
      The Regents of the University of California.  All rights reserved.\n";
 #endif /* not lint */
 
 #ifndef lint
 #endif /* not lint */
 
 #ifndef lint
-static char sccsid[] = "@(#)kill.c     5.1 (Berkeley) %G%";
+static char sccsid[] = "@(#)kill.c     8.3 (Berkeley) %G%";
 #endif /* not lint */
 
 #endif /* not lint */
 
-#include <signal.h>
+#include <ctype.h>
+#include <err.h>
 #include <errno.h>
 #include <errno.h>
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <ctype.h>
 
 
-static char *signals[] = {
-       "hup", "int", "quit", "ill", "trap", "iot",             /*  1 - 6  */
-       "emt", "fpe", "kill", "bus", "segv", "sys",             /*  7 - 12 */
-       "pipe", "alrm",  "term", "urg", "stop", "tstp",         /* 13 - 18 */
-       "cont", "chld", "ttin", "ttou", "io", "xcpu",           /* 19 - 24 */
-       "xfsz", "vtalrm", "prof", "winch", "29", "usr1",        /* 25 - 30 */
-       "usr2", NULL,                                           /* 31 - 32 */
-};
+void nosig __P((char *));
+void printsig __P((FILE *));
+void usage __P((void));
 
 
+int
 main(argc, argv)
        int argc;
 main(argc, argv)
        int argc;
-       char **argv;
+       char *argv[];
 {
 {
-       register int errors, numsig, pid;
-       register char **p;
+       const char *const *p;
+       int errors, numsig, pid;
        char *ep;
 
        if (argc < 2)
        char *ep;
 
        if (argc < 2)
@@ -53,21 +50,17 @@ main(argc, argv)
                if (isalpha(**argv)) {
                        if (!strncasecmp(*argv, "sig", 3))
                                *argv += 3;
                if (isalpha(**argv)) {
                        if (!strncasecmp(*argv, "sig", 3))
                                *argv += 3;
-                       for (p = signals;; ++p) {
-                               if (!*p)
-                                       nosig(*argv);
+                       for (numsig = NSIG, p = sys_signame + 1; --numsig; ++p)
                                if (!strcasecmp(*p, *argv)) {
                                if (!strcasecmp(*p, *argv)) {
-                                       numsig = p - signals + 1;
+                                       numsig = p - sys_signame;
                                        break;
                                }
                                        break;
                                }
-                       }
+                       if (!numsig)
+                               nosig(*argv);
                } else if (isdigit(**argv)) {
                        numsig = strtol(*argv, &ep, 10);
                } else if (isdigit(**argv)) {
                        numsig = strtol(*argv, &ep, 10);
-                       if (!*argv || *ep) {
-                               (void)fprintf(stderr,
-                                   "kill: illegal signal number %s\n", *argv);
-                               exit(1);
-                       }
+                       if (!*argv || *ep)
+                               errx(1, "illegal signal number: %s", *argv);
                        if (numsig <= 0 || numsig > NSIG)
                                nosig(*argv);
                } else
                        if (numsig <= 0 || numsig > NSIG)
                                nosig(*argv);
                } else
@@ -81,43 +74,45 @@ main(argc, argv)
        for (errors = 0; *argv; ++argv) {
                pid = strtol(*argv, &ep, 10);
                if (!*argv || *ep) {
        for (errors = 0; *argv; ++argv) {
                pid = strtol(*argv, &ep, 10);
                if (!*argv || *ep) {
-                       (void)fprintf(stderr,
-                           "kill: illegal process id %s\n", *argv);
-                       continue;
-               }
-               if (kill(atoi(*argv), numsig) == -1) {
-                       (void)fprintf(stderr,
-                           "kill: %s: %s\n", *argv, strerror(errno));
+                       warnx("illegal process id: %s", *argv);
+                       errors = 1;
+               } else if (kill(pid, numsig) == -1) {
+                       warn("%s", *argv);
                        errors = 1;
                }
        }
        exit(errors);
 }
 
                        errors = 1;
                }
        }
        exit(errors);
 }
 
+void
 nosig(name)
        char *name;
 {
 nosig(name)
        char *name;
 {
-       (void)fprintf(stderr,
-           "kill: unknown signal %s; valid signals:\n", name);
+
+       warnx("unknown signal %s; valid signals:", name);
        printsig(stderr);
        exit(1);
 }
 
        printsig(stderr);
        exit(1);
 }
 
+void
 printsig(fp)
        FILE *fp;
 {
 printsig(fp)
        FILE *fp;
 {
-       register char **p;
+       const char *const *p;
+       int cnt;
 
 
-       for (p = signals; *p; ++p) {
+       for (cnt = NSIG, p = sys_signame + 1; --cnt; ++p) {
                (void)fprintf(fp, "%s ", *p);
                (void)fprintf(fp, "%s ", *p);
-               if ((p - signals) == NSIG / 2 - 1)
+               if (cnt == NSIG / 2)
                        (void)fprintf(fp, "\n");
        }
        (void)fprintf(fp, "\n");
 }
 
                        (void)fprintf(fp, "\n");
        }
        (void)fprintf(fp, "\n");
 }
 
+void
 usage()
 {
 usage()
 {
+
        (void)fprintf(stderr, "usage: kill [-l] [-sig] pid ...\n");
        exit(1);
 }
        (void)fprintf(stderr, "usage: kill [-l] [-sig] pid ...\n");
        exit(1);
 }