summaryrefslogtreecommitdiffstats
path: root/libc/signal/sigaction.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/signal/sigaction.c')
-rw-r--r--libc/signal/sigaction.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/libc/signal/sigaction.c b/libc/signal/sigaction.c
index 5336b7609..14e3dc9c2 100644
--- a/libc/signal/sigaction.c
+++ b/libc/signal/sigaction.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2000,2002,2003,2005,2006 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
@@ -16,18 +16,24 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <features.h>
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <sys/syscall.h>
+libc_hidden_proto(memcpy)
/* The difference here is that the sigaction structure used in the
kernel is not the same as we use in the libc. Therefore we must
translate it here. */
#include <bits/kernel_sigaction.h>
+#ifndef LIBC_SIGACTION
+extern __typeof(sigaction) __libc_sigaction;
+#endif
+
#if defined __NR_rt_sigaction
/* If ACT is not NULL, change the action for SIG to *ACT.
@@ -40,7 +46,7 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
if (act) {
kact.k_sa_handler = act->sa_handler;
- __memcpy (&kact.sa_mask, &act->sa_mask, sizeof (kact.sa_mask));
+ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
kact.sa_flags = act->sa_flags;
# ifdef HAVE_SA_RESTORER
kact.sa_restorer = act->sa_restorer;
@@ -55,7 +61,7 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
if (oact && result >= 0) {
oact->sa_handler = koact.k_sa_handler;
- __memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (oact->sa_mask));
+ memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t));
oact->sa_flags = koact.sa_flags;
# ifdef HAVE_SA_RESTORER
oact->sa_restorer = koact.sa_restorer;
@@ -103,6 +109,7 @@ __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
#endif
#ifndef LIBC_SIGACTION
-hidden_weak_alias(__libc_sigaction,__sigaction)
+libc_hidden_proto(sigaction)
weak_alias(__libc_sigaction,sigaction)
+libc_hidden_weak(sigaction)
#endif