--- include/signal.h	Sun Dec 24 19:03:09 1995
+++ include/signal.h	Wed Nov  3 21:31:11 1999
@@ -1,3 +1,5 @@
+/*	$NetBSD: patch-bw,v 1.1 1999/11/05 17:13:29 explorer Exp $	*/
+
 /*-
  * Copyright (c) 1991, 1993
  *	The Regents of the University of California.  All rights reserved.
@@ -33,48 +35,160 @@
  *	@(#)signal.h	8.3 (Berkeley) 3/30/94
  */
 
-#ifndef _SIGNAL_H
-#define _SIGNAL_H
+#ifndef _SIGNAL_H_
+#define _SIGNAL_H_
 
-#include <sys/types.h>
 #include <sys/cdefs.h>
-#include <sys/__signal.h>
+#include <sys/featuretest.h>
 
-__BEGIN_DECLS
+#if !defined(_ANSI_SOURCE)
+#include <sys/types.h>
+#endif
 
-int	raise 			__P((int));
+#include <sys/signal.h>
 
-#ifndef	_ANSI_SOURCE
+#include <sys/__signal.h>
 
-int	sigfillset 		__P((sigset_t *));
-int	sigemptyset		__P((sigset_t *));
-int	sigaddset 		__P((sigset_t *, int));
-int	sigdelset 		__P((sigset_t *, int));
-int	sigismember 	__P((const sigset_t *, int));
-int	sigsuspend 		__P((const sigset_t *));
-int	sigprocmask 	__P((int, const sigset_t *, sigset_t *));
+#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
+    !defined(_XOPEN_SOURCE)
+extern __const char *__const *sys_signame __RENAME(__sys_signame14);
+extern __const char *__const *sys_siglist __RENAME(__sys_siglist14);
+extern __const int sys_nsig __RENAME(__sys_nsig14);
+#endif
 
-/* Still need work */
+__BEGIN_DECLS
+int	raise __P((int));
+#ifndef	_ANSI_SOURCE
 int	kill __P((pid_t, int));
-int	sigaction __P((int, const struct sigaction *, struct sigaction *));
-int	sigpending __P((sigset_t *));
-
-#ifndef _POSIX_SOURCE
 
+#ifdef __LIBC12_SOURCE__
+int	sigaction __P((int, const struct sigaction13 *, struct sigaction13 *));
+int	__sigaction14 __P((int, const struct sigaction *, struct sigaction *));
+int	sigaddset __P((sigset13_t *, int));
+int	__sigaddset14 __P((sigset_t *, int));
+int	sigdelset __P((sigset13_t *, int));
+int	__sigdelset14 __P((sigset_t *, int));
+int	sigemptyset __P((sigset13_t *));
+int	__sigemptyset14 __P((sigset_t *));
+int	sigfillset __P((sigset13_t *));
+int	__sigfillset14 __P((sigset_t *));
+int	sigismember __P((const sigset13_t *, int));
+int	__sigismember14 __P((const sigset_t *, int));
+int	sigpending __P((sigset13_t *));
+int	__sigpending14 __P((sigset_t *));
+int	sigprocmask __P((int, const sigset13_t *, sigset13_t *));
+int	__sigprocmask14 __P((int, const sigset_t *, sigset_t *));
+int	sigsuspend __P((const sigset13_t *));
+int	__sigsuspend14 __P((const sigset_t *));
+#else /* !__LIBC12_SOURCE__ */
+int	sigaction __P((int, const struct sigaction *, struct sigaction *)) __RENAME(__sigaction14);
+int	sigaddset __P((sigset_t *, int)) __RENAME(__sigaddset14);
+int	sigdelset __P((sigset_t *, int)) __RENAME(__sigdelset14);
+int	sigemptyset __P((sigset_t *)) __RENAME(__sigemptyset14);
+int	sigfillset __P((sigset_t *)) __RENAME(__sigfillset14);
+int	sigismember __P((const sigset_t *, int)) __RENAME(__sigismember14);
+int	sigpending __P((sigset_t *)) __RENAME(__sigpending14);
+int	sigprocmask __P((int, const sigset_t *, sigset_t *)) __RENAME(__sigprocmask14);
+int	sigsuspend __P((const sigset_t *)) __RENAME(__sigsuspend14);
+
+#if defined(__GNUC__) && defined(__STDC__)
+extern __inline int
+sigaddset(sigset_t *set, int signo)
+{
+#ifdef _REENTRANT
+	extern int *__errno __P((void));
+#else
+	extern int errno;
+#endif
+
+	if (signo <= 0 || signo >= _NSIG) {
+#ifdef _REENTRANT
+		*__errno() = 22;		/* EINVAL */
+#else
+		errno = 22;			/* EINVAL */
+#endif
+		return (-1);
+	}
+	__sigaddset(set, signo);
+	return (0);
+}
+
+extern __inline int
+sigdelset(sigset_t *set, int signo)
+{
+#ifdef _REENTRANT
+	extern int *__errno __P((void));
+#else
+	extern int errno;
+#endif
+
+	if (signo <= 0 || signo >= _NSIG) {
+#ifdef _REENTRANT
+		*__errno() = 22;		/* EINVAL */
+#else
+		errno = 22;			/* EINVAL */
+#endif
+		return (-1);
+	}
+	__sigdelset(set, signo);
+	return (0);
+}
+
+extern __inline int
+sigismember(const sigset_t *set, int signo)
+{
+#ifdef _REENTRANT
+	extern int *__errno __P((void));
+#else
+	extern int errno;
+#endif
+
+	if (signo <= 0 || signo >= _NSIG) {
+#ifdef _REENTRANT
+		*__errno() = 22;		/* EINVAL */
+#else
+		errno = 22;			/* EINVAL */
+#endif
+		return (-1);
+	}
+	return (__sigismember(set, signo));
+}
+#endif /* __GNUC__ && __STDC__ */
+
+/* List definitions after function declarations, or Reiser cpp gets upset. */
+#define	sigemptyset(set)	(__sigemptyset(set), /*LINTED*/0)
+#define	sigfillset(set)		(__sigfillset(set), /*LINTED*/ 0)
+#endif /* !__LIBC12_SOURCE__ */
+
+#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
+    (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
+    (_XOPEN_SOURCE - 0) >= 500
 int	killpg __P((pid_t, int));
 int	siginterrupt __P((int, int));
-void	psignal __P((unsigned int, const char *));
+int	sigpause __P((int));
+int	sigstack __P((const struct sigstack *, struct sigstack *));
+#ifdef __LIBC12_SOURCE__
+int	sigaltstack __P((const struct sigaltstack13 *, struct sigaltstack13 *));
+int	__sigaltstack14 __P((const stack_t *, stack_t *));
+#else
+int	sigaltstack __P((const stack_t *, stack_t *)) __RENAME(__sigaltstack14);
+#endif
+#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || ... */
 
-/* int	sigpause __P((int)); */
-/* int	sigsetmask __P((int)); */
-/* int	sigblock __P((int)); */
-/* int	sigreturn __P((struct sigcontext *)); */
-/* int	sigvec __P((int, struct sigvec *, struct sigvec *)); */
-/* int	sigstack __P((const struct sigstack *, struct sigstack *)); */
+#if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)
+void	psignal __P((unsigned int, const char *));
+int	sigblock __P((int));
+#ifdef __LIBC12_SOURCE__
+int	sigreturn __P((struct sigcontext13 *));
+int	__sigreturn14 __P((struct sigcontext *));
+#else
+int	sigreturn __P((struct sigcontext *)) __RENAME(__sigreturn14);
+#endif
+int	sigsetmask __P((int));
+int	sigvec __P((int, struct sigvec *, struct sigvec *));
+#endif /* !_POSIX_C_SOURCE && !_XOPEN_SOURCE */
 
-#endif	/* !_POSIX_SOURCE */
 #endif	/* !_ANSI_SOURCE */
-
 __END_DECLS
 
-#endif	/* !_USER_SIGNAL_H */
+#endif	/* !_SIGNAL_H_ */