Tidy up util
[openafs.git] / src / util / softsig.c
index 9891dea..24a2412 100644 (file)
@@ -15,6 +15,7 @@
 #define _POSIX_PTHREAD_SEMANTICS
 #include <afs/param.h>
 #include <assert.h>
+#include <stdlib.h>
 #include <stdio.h>
 #ifndef  AFS_NT40_ENV
 #include <signal.h>
@@ -36,9 +37,9 @@ static pthread_t softsig_tid;
 static struct {
     void (*handler) (int);
     int pending;
-#if !defined(AFS_DARWIN60_ENV)
+#if !(defined(AFS_DARWIN60_ENV) || (defined(AFS_NBSD_ENV) && !defined(AFS_NBSD50_ENV)))
     int fatal;
-#endif /* !defined(AFS_DARWIN60_ENV) */
+#endif /* !defined(AFS_DARWIN60_ENV) || !defined(AFS_NBSD_ENV) */
     int inited;
 } softsig_sigs[NSIG];
 
@@ -53,31 +54,33 @@ softsig_thread(void *arg)
     pthread_sigmask(SIG_BLOCK, &ss, &os);
     pthread_sigmask(SIG_SETMASK, &os, NULL);
     sigaddset(&ss, SIGUSR1);
-#if defined(AFS_DARWIN60_ENV)
+#if defined(AFS_DARWIN60_ENV) || (defined(AFS_NBSD_ENV) && !defined(AFS_NBSD50_ENV))
     pthread_sigmask (SIG_BLOCK, &ss, NULL);
     sigdelset (&os, SIGUSR1);
-#else /* !defined(AFS_DARWIN60_ENV) */
+#else /* !defined(AFS_DARWIN60_ENV) && !defined(AFS_NBSD_ENV) */
     for (i = 0; i < NSIG; i++) {
        if (!sigismember(&os, i) && i != SIGSTOP && i != SIGKILL) {
            sigaddset(&ss, i);
            softsig_sigs[i].fatal = 1;
        }
     }
-#endif /* defined(AFS_DARWIN60_ENV) */
+#endif /* defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) */
 
     while (1) {
        void (*h) (int);
+#if !defined(AFS_DARwiN60_ENV) && !defined(AFS_NBSD_ENV)
        int sigw;
+#endif
 
        h = NULL;
 
        for (i = 0; i < NSIG; i++) {
            if (softsig_sigs[i].handler && !softsig_sigs[i].inited) {
                sigaddset(&ss, i);
-#if defined(AFS_DARWIN60_ENV)
+#if defined(AFS_DARWIN60_ENV) || (defined(AFS_NBSD_ENV) && !defined(AFS_NBSD50_ENV))
                pthread_sigmask (SIG_BLOCK, &ss, NULL);
                sigdelset (&os, i);
-#endif /* defined(AFS_DARWIN60_ENV) */
+#endif /* defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) */
                softsig_sigs[i].inited = 1;
            }
            if (softsig_sigs[i].pending) {
@@ -87,31 +90,30 @@ softsig_thread(void *arg)
            }
        }
        if (i == NSIG) {
-#if defined(AFS_DARWIN60_ENV)
+#if defined(AFS_DARWIN60_ENV) || (defined(AFS_NBSD_ENV) && !defined(AFS_NBSD50_ENV))
            sigsuspend (&os);
-#else /* !defined(AFS_DARWIN60_ENV) */
+#else /* !defined(AFS_DARWIN60_ENV) && !defined(AFS_NBSD_ENV) */
            sigwait(&ss, &sigw);
            if (sigw != SIGUSR1) {
                if (softsig_sigs[sigw].fatal)
                    exit(0);
                softsig_sigs[sigw].pending = 1;
            }
-#endif /* defined(AFS_DARWIN60_ENV) */
+#endif /* defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV) */
        } else if (h)
            h(i);
     }
+    return NULL;
 }
 
-#if defined(AFS_DARWIN60_ENV)
 static void
 softsig_usr1(int signo)
 {
     signal (SIGUSR1, softsig_usr1);
 }
-#endif /* defined(AFS_DARWIN60_ENV) */
 
 void
-softsig_init()
+softsig_init(void)
 {
     int rc;
     AFS_SIGSET_DECL;
@@ -119,9 +121,7 @@ softsig_init()
     rc = pthread_create(&softsig_tid, NULL, &softsig_thread, NULL);
     assert(0 == rc);
     AFS_SIGSET_RESTORE();
-#if defined(AFS_DARWIN60_ENV)
     signal (SIGUSR1, softsig_usr1);
-#endif /* defined(AFS_DARWIN60_ENV) */
 }
 
 static void
@@ -149,7 +149,7 @@ print_foo(int signo)
 }
 
 int
-main()
+main(int argc, char **argv)
 {
     softsig_init();
     softsig_signal(SIGINT, print_foo);