#define _POSIX_PTHREAD_SEMANTICS
#include <afs/param.h>
#include <assert.h>
+#include <stdlib.h>
#include <stdio.h>
#ifndef AFS_NT40_ENV
#include <signal.h>
static struct {
void (*handler) (int);
int pending;
-#if !defined(AFS_DARWIN60_ENV) || !defined(AFS_NBSD_ENV)
+#if !(defined(AFS_DARWIN60_ENV) || (defined(AFS_NBSD_ENV) && !defined(AFS_NBSD50_ENV)))
int fatal;
#endif /* !defined(AFS_DARWIN60_ENV) || !defined(AFS_NBSD_ENV) */
int inited;
pthread_sigmask(SIG_BLOCK, &ss, &os);
pthread_sigmask(SIG_SETMASK, &os, NULL);
sigaddset(&ss, SIGUSR1);
-#if defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_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) && !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) || defined(AFS_NBSD_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) || defined(AFS_NBSD_ENV) */
}
}
if (i == NSIG) {
-#if defined(AFS_DARWIN60_ENV) || defined(AFS_NBSD_ENV)
+#if defined(AFS_DARWIN60_ENV) || (defined(AFS_NBSD_ENV) && !defined(AFS_NBSD50_ENV))
sigsuspend (&os);
#else /* !defined(AFS_DARWIN60_ENV) && !defined(AFS_NBSD_ENV) */
sigwait(&ss, &sigw);
} else if (h)
h(i);
}
+ return NULL;
}
static void
}
void
-softsig_init()
+softsig_init(void)
{
int rc;
AFS_SIGSET_DECL;
}
int
-main()
+main(int argc, char **argv)
{
softsig_init();
softsig_signal(SIGINT, print_foo);