summaryrefslogtreecommitdiff
path: root/source3/lib/signal.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2002-07-15 10:35:28 +0000
committerAndrew Tridgell <tridge@samba.org>2002-07-15 10:35:28 +0000
commite90b65284812aaa5ff9e9935ce9bbad7791cbbcd (patch)
tree9e744d1dc2f93934a4b49166a37383d3cb2b2139 /source3/lib/signal.c
parentec167dc9cc0ec2ee461837c25a371d2981744208 (diff)
downloadsamba-e90b65284812aaa5ff9e9935ce9bbad7791cbbcd.tar.gz
updated the 3.0 branch from the head branch - ready for alpha18
(This used to be commit 03ac082dcb375b6f3ca3d810a6a6367542bc23ce)
Diffstat (limited to 'source3/lib/signal.c')
-rw-r--r--source3/lib/signal.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/source3/lib/signal.c b/source3/lib/signal.c
index 99f908235c4..dceb3b53bce 100644
--- a/source3/lib/signal.c
+++ b/source3/lib/signal.c
@@ -96,10 +96,11 @@ void BlockSignals(BOOL block,int signum)
2) The signal should be blocked during handler execution.
********************************************************************/
-void CatchSignal(int signum,void (*handler)(int ))
+void (*CatchSignal(int signum,void (*handler)(int )))(int)
{
#ifdef HAVE_SIGACTION
struct sigaction act;
+ struct sigaction oldact;
ZERO_STRUCT(act);
@@ -113,10 +114,11 @@ void CatchSignal(int signum,void (*handler)(int ))
#endif
sigemptyset(&act.sa_mask);
sigaddset(&act.sa_mask,signum);
- sigaction(signum,&act,NULL);
+ sigaction(signum,&act,&oldact);
+ return oldact.sa_handler;
#else /* !HAVE_SIGACTION */
/* FIXME: need to handle sigvec and systems with broken signal() */
- signal(signum, handler);
+ return signal(signum, handler);
#endif
}