summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2000-10-27 21:38:32 +0000
committerEric Andersen <andersen@codepoet.org>2000-10-27 21:38:32 +0000
commit8fee51d63a5ca4a119850c9831a7219fe496df6c (patch)
tree02eaf5249266e387053017c691cb3eb214126fd0
parent7ebd0b18cf73522febdce2c0df08f56cb20c331e (diff)
Fix up signal handling
-rw-r--r--libc/signal/Makefile6
-rw-r--r--libc/signal/sigaddset.c35
-rw-r--r--libc/signal/sigdelset.c33
-rw-r--r--libc/signal/sigemptyset.c35
-rw-r--r--libc/signal/sigismem.c33
5 files changed, 140 insertions, 2 deletions
diff --git a/libc/signal/Makefile b/libc/signal/Makefile
index 9fb8e1d46..5de28d7f0 100644
--- a/libc/signal/Makefile
+++ b/libc/signal/Makefile
@@ -24,9 +24,11 @@ TOPDIR=../
include $(TOPDIR)Rules.mak
LIBC=$(TOPDIR)libc.a
-CSRC=bsd_sig.c raise.c sigblock.c siggtmsk.c sigjmp.c signal.c sigpause.c sigstmsk.c
-
+CSRC=bsd_sig.c raise.c sigblock.c siggtmsk.c sigjmp.c signal.c \
+ sigpause.c sigstmsk.c sigaddset.c sigdelset.c \
+ sigismem.c sigemptyset.c
COBJS=$(patsubst %.c,%.o, $(CSRC))
+
OBJS=$(COBJS)
all: $(OBJS) $(LIBC)
diff --git a/libc/signal/sigaddset.c b/libc/signal/sigaddset.c
new file mode 100644
index 000000000..e6848a76d
--- /dev/null
+++ b/libc/signal/sigaddset.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <errno.h>
+#include <features.h>
+#define _EXTERN_INLINE
+#define __USE_EXTERN_INLINES 1
+#include "signal.h"
+
+
+/* Add SIGNO to SET. */
+int sigaddset ( sigset_t *set, int signo)
+{
+ if (set == NULL || signo <= 0 || signo >= NSIG) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ return __sigaddset (set, signo);
+}
diff --git a/libc/signal/sigdelset.c b/libc/signal/sigdelset.c
new file mode 100644
index 000000000..6206e7d39
--- /dev/null
+++ b/libc/signal/sigdelset.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "errno.h"
+#define _EXTERN_INLINE
+#define __USE_EXTERN_INLINES 1
+#include "signal.h"
+
+/* Add SIGNO to SET. */
+int sigdelset ( sigset_t *set, int signo)
+{
+ if (set == NULL || signo <= 0 || signo >= NSIG) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ return __sigdelset (set, signo);
+}
diff --git a/libc/signal/sigemptyset.c b/libc/signal/sigemptyset.c
new file mode 100644
index 000000000..c38cb0e5a
--- /dev/null
+++ b/libc/signal/sigemptyset.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <errno.h>
+#include <signal.h>
+#include <string.h>
+
+/* Clear all signals from SET. */
+int
+sigemptyset ( sigset_t *set)
+{
+ if (set == NULL) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ memset (set, 0, sizeof (sigset_t));
+
+ return 0;
+}
diff --git a/libc/signal/sigismem.c b/libc/signal/sigismem.c
new file mode 100644
index 000000000..3e9b67c6c
--- /dev/null
+++ b/libc/signal/sigismem.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "errno.h"
+#define _EXTERN_INLINE
+#define __USE_EXTERN_INLINES 1
+#include "signal.h"
+
+/* Return 1 if SIGNO is in SET, 0 if not. */
+int sigismember ( const sigset_t *set, int signo)
+{
+ if (set == NULL || signo <= 0 || signo >= NSIG) {
+ errno=EINVAL;
+ return -1;
+ }
+
+ return __sigismember (set, signo);
+}