]> granicus.if.org Git - sudo/commitdiff
added posix signals
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 6 Jun 1994 20:57:25 +0000 (20:57 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 6 Jun 1994 20:57:25 +0000 (20:57 +0000)
logging.c

index 6bb7989c10d04a67370f03003fd1d8ce76f58da3..750bbac4ea0abaa67455d5d19d4d38d3872f2cbc 100644 (file)
--- a/logging.c
+++ b/logging.c
@@ -361,6 +361,11 @@ static void send_mail()
     char *subject = MAILSUBJECT;
     int fd[2];
     char buf[MAXLOGLEN + 1024];
+#ifdef POSIX_SIGNALS
+    struct sigaction action;
+#endif /* POSIX_SIGNALS */
+
+    (void) bzero((char *)(&action), sizeof(action));
 
     /* become root for find_path() */
     be_root();
@@ -374,7 +379,12 @@ static void send_mail()
     be_user();
 
     /* catch children as they die */
+#ifdef POSIX_SIGNALS
+    action.sa_handler = reapchild;
+    (void) sigaction(SIGCHLD, &action, NULL);
+#else
     (void) signal(SIGCHLD, reapchild);
+#endif /* POSIX_SIGNALS */
 
     if (fork())
        return;
@@ -384,9 +394,16 @@ static void send_mail()
      */
     be_full_user();
     
+#ifdef POSIX_SIGNALS
+    action.sa_handler = SIG_IGN;
+    (void) sigaction(SIGHUP, &action, NULL);
+    (void) sigaction(SIGINT, &action, NULL);
+    (void) sigaction(SIGQUIT, &action, NULL);
+#else
     (void) signal(SIGHUP, SIG_IGN);
     (void) signal(SIGINT, SIG_IGN);
     (void) signal(SIGQUIT, SIG_IGN);
+#endif /* POSIX_SIGNALS */
 
     if (pipe(fd)) {
        perror("send_mail: pipe");
@@ -430,7 +447,9 @@ static RETSIGTYPE reapchild(sig)
     int sig;
 {
     (void) wait(NULL);
+#ifndef POSIX_SIGNALS
     (void) signal(SIGCHLD, reapchild);
+#endif /* POSIX_SIGNALS */
 }