* m4/include_next.m4 (gl_INCLUDE_NEXT): Define and AC_SUBST
[pspp] / lib / signal_.h
index b028b475f25ee33846baf9ecdfcd36afa4831ebb..b62d7a7a3f876a2ce3336a4c9edb06dae8266edd 100644 (file)
@@ -1,6 +1,6 @@
 /* A GNU-like <signal.h>.
 
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 #if defined __need_sig_atomic_t || defined __need_sigset_t
 /* Special invocation convention inside glibc header files.  */
 
-#include @ABSOLUTE_SIGNAL_H@
+# @INCLUDE_NEXT@ @NEXT_SIGNAL_H@
 
 #else
 /* Normal invocation convention.  */
 
 #ifndef _GL_SIGNAL_H
-#define _GL_SIGNAL_H
 
-#include @ABSOLUTE_SIGNAL_H@
+/* The include_next requires a split double-inclusion guard.  */
+#@INCLUDE_NEXT@ @NEXT_SIGNAL_H@
 
+#ifndef _GL_SIGNAL_H
+#define _GL_SIGNAL_H
 
 /* The definition of GL_LINK_WARNING is copied here.  */
 
@@ -38,9 +40,59 @@ extern "C" {
 #endif
 
 
+#if !@HAVE_POSIX_SIGNALBLOCKING@
+
+/* Mingw defines sigset_t not in <signal.h>, but in <sys/types.h>.  */
+# include <sys/types.h>
+
+/* Maximum signal number + 1.  */
+# ifndef NSIG
+#  define NSIG 32
+# endif
+
+/* This code supports only 32 signals.  */
+typedef int verify_NSIG_constraint[2 * (NSIG <= 32) - 1];
+
+/* A set or mask of signals.  */
+# if !@HAVE_SIGSET_T@
+typedef unsigned int sigset_t;
+# endif
+
+/* Test whether a given signal is contained in a signal set.  */
+extern int sigismember (const sigset_t *set, int sig);
+
+/* Initialize a signal set to the empty set.  */
+extern int sigemptyset (sigset_t *set);
+
+/* Add a signal to a signal set.  */
+extern int sigaddset (sigset_t *set, int sig);
+
+/* Remove a signal from a signal set.  */
+extern int sigdelset (sigset_t *set, int sig);
+
+/* Fill a signal set with all possible signals.  */
+extern int sigfillset (sigset_t *set);
+
+/* Return the set of those blocked signals that are pending.  */
+extern int sigpending (sigset_t *set);
+
+/* If OLD_SET is not NULL, put the current set of blocked signals in *OLD_SET.
+   Then, if SET is not NULL, affect the current set of blocked signals by
+   combining it with *SET as indicated in OPERATION.
+   In this implementation, you are not allowed to change a signal handler
+   while the signal is blocked.  */
+# define SIG_BLOCK   0  /* blocked_set = blocked_set | *set; */
+# define SIG_SETMASK 1  /* blocked_set = *set; */
+# define SIG_UNBLOCK 2  /* blocked_set = blocked_set & ~*set; */
+extern int sigprocmask (int operation, const sigset_t *set, sigset_t *old_set);
+
+#endif
+
+
 #ifdef __cplusplus
 }
 #endif
 
+#endif /* _GL_SIGNAL_H */
 #endif /* _GL_SIGNAL_H */
 #endif