]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - larn/signal.c
oops, we do need privs. do the right seteuid() thing.
[bsdgames-darwin.git] / larn / signal.c
index a7c751f8ed3bb74172067b6bd90e660cba87019e..3b4e2f396ddaaec588ddc8e10c14370a6291980e 100644 (file)
@@ -1,9 +1,11 @@
 #ifndef lint
-static char rcsid[] = "$Id: signal.c,v 1.2 1993/08/02 17:20:21 mycroft Exp $";
+static char rcsid[] = "$NetBSD: signal.c,v 1.5 1995/12/21 11:27:51 mycroft Exp $";
 #endif /* not lint */
 
 #include <signal.h>
 #include "header.h"                    /* "Larn is copyrighted 1986 by Noah Morgan.\n" */
+#include <string.h>
+
 #define BIT(a) (1<<((a)-1))
 extern char savefilename[],wizard,predostuff,nosignal;
 static s2choose()      /* text to be displayed if ^C during intro screen */
@@ -53,88 +55,20 @@ tstop() /* control Y        */
  *     subroutine to issue the needed signal traps  called from main()
  */
 static void sigpanic();
-static void sigill()   { sigpanic(SIGILL); }
-static void sigtrap()  { sigpanic(SIGTRAP); }
-static void sigiot()   { sigpanic(SIGIOT); }
-static void sigemt()   { sigpanic(SIGEMT); }
-static void sigfpe()   { sigpanic(SIGFPE); }
-static void sigbus()   { sigpanic(SIGBUS); }
-static void sigsegv()  { sigpanic(SIGSEGV); }
-static void sigsys()   { sigpanic(SIGSYS); }
-static void sigpipe()  { sigpanic(SIGPIPE); }
-static void sigterm()  { sigpanic(SIGTERM); }
 sigsetup()
        {
        signal(SIGQUIT, cntlc);                 signal(SIGINT,  cntlc); 
        signal(SIGKILL, SIG_IGN);               signal(SIGHUP,  sgam);
-       signal(SIGILL,  sigill);                signal(SIGTRAP, sigtrap);
-       signal(SIGIOT,  sigiot);                signal(SIGEMT,  sigemt);
-       signal(SIGFPE,  sigfpe);                signal(SIGBUS,  sigbus);
-       signal(SIGSEGV, sigsegv);               signal(SIGSYS,  sigsys);
-       signal(SIGPIPE, sigpipe);               signal(SIGTERM, sigterm);
+       signal(SIGILL,  sigpanic);              signal(SIGTRAP, sigpanic);
+       signal(SIGIOT,  sigpanic);              signal(SIGEMT,  sigpanic);
+       signal(SIGFPE,  sigpanic);              signal(SIGBUS,  sigpanic);
+       signal(SIGSEGV, sigpanic);              signal(SIGSYS,  sigpanic);
+       signal(SIGPIPE, sigpanic);              signal(SIGTERM, sigpanic);
 #ifdef SIGTSTP
        signal(SIGTSTP,tstop);          signal(SIGSTOP,tstop);
 #endif SIGTSTP
        }
 
-#ifdef BSD     /* for BSD UNIX? */
-
-static char *signame[NSIG] = { "",
-"SIGHUP",  /*  1        hangup */
-"SIGINT",  /*  2        interrupt */
-"SIGQUIT", /*  3        quit */
-"SIGILL",  /*  4        illegal instruction (not reset when caught) */
-"SIGTRAP", /*  5        trace trap (not reset when caught) */
-"SIGIOT",  /*  6        IOT instruction */
-"SIGEMT",  /*  7        EMT instruction */
-"SIGFPE",  /*  8        floating point exception */
-"SIGKILL", /*  9        kill (cannot be caught or ignored) */
-"SIGBUS",  /*  10       bus error */
-"SIGSEGV", /*  11       segmentation violation */
-"SIGSYS",  /*  12       bad argument to system call */
-"SIGPIPE", /*  13       write on a pipe with no one to read it */
-"SIGALRM", /*  14       alarm clock */
-"SIGTERM", /*  15       software termination signal from kill */
-"SIGURG",  /*  16       urgent condition on IO channel */
-"SIGSTOP", /*  17       sendable stop signal not from tty */
-"SIGTSTP", /*  18       stop signal from tty */
-"SIGCONT", /*  19       continue a stopped process */
-"SIGCHLD", /*  20       to parent on child stop or exit */
-"SIGTTIN", /*  21       to readers pgrp upon background tty read */
-"SIGTTOU", /*  22       like TTIN for output if (tp->t_local&LTOSTOP) */
-"SIGIO",   /*  23       input/output possible signal */
-"SIGXCPU", /*  24       exceeded CPU time limit */
-"SIGXFSZ", /*  25       exceeded file size limit */
-"SIGVTALRM",/*  26      virtual time alarm */
-"SIGPROF", /*  27       profiling time alarm */
-"","","","" };
-
-#else BSD      /* for system V? */
-
-static char *signame[NSIG] = { "",
-"SIGHUP",  /*  1        hangup */
-"SIGINT",  /*  2        interrupt */
-"SIGQUIT", /*  3        quit */
-"SIGILL",  /*  4        illegal instruction (not reset when caught) */
-"SIGTRAP", /*  5        trace trap (not reset when caught) */
-"SIGIOT",  /*  6        IOT instruction */
-"SIGEMT",  /*  7        EMT instruction */
-"SIGFPE",  /*  8        floating point exception */
-"SIGKILL", /*  9        kill (cannot be caught or ignored) */
-"SIGBUS",  /*  10       bus error */
-"SIGSEGV", /*  11       segmentation violation */
-"SIGSYS",  /*  12       bad argument to system call */
-"SIGPIPE", /*  13       write on a pipe with no one to read it */
-"SIGALRM", /*  14       alarm clock */
-"SIGTERM", /*  15       software termination signal from kill */
-"SIGUSR1",  /* 16       user defines signal 1 */
-"SIGUSR2", /*  17       user defines signal 2 */
-"SIGCLD",  /*  18       child death */
-"SIGPWR",  /*  19       power fail */
-"","","","","","","","","","","","" };
-
-#endif BSD
-
 /*
  *     routine to process a fatal error signal
  */
@@ -144,7 +78,7 @@ sigpanic(sig)
        {
        char buf[128];
        signal(sig,SIG_DFL);
-       sprintf(buf,"\nLarn - Panic! Signal %d received [%s]",sig,signame[sig]);
+       sprintf(buf,"\nLarn - Panic! Signal %d received [SIG%s]",sig,sys_signame[sig]);
        write(2,buf,strlen(buf));  sleep(2);
        sncbr();
        savegame(savefilename);