summaryrefslogtreecommitdiff
path: root/sig_dfl.c
diff options
context:
space:
mode:
Diffstat (limited to 'sig_dfl.c')
-rw-r--r--sig_dfl.c82
1 files changed, 0 insertions, 82 deletions
diff --git a/sig_dfl.c b/sig_dfl.c
deleted file mode 100644
index a92bd7b..0000000
--- a/sig_dfl.c
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <signal.h>
-#include "sig.h"
-#include "hassgact.h"
-#include "hassgprm.h"
-
-/* tnx to Chris Torek for some improvements in previous versions */
-
-static int flagcont;
-
-static void sigcont() { flagcont = 1; }
-
-void sig_dfl(sig)
-int sig;
-{
-#ifdef HASSIGPROCMASK
- sigset_t ssorig;
- sigset_t ssnew;
-#else
- int maskorig;
- int masknew;
-#endif
-#ifdef HASSIGACTION
- struct sigaction saorig;
- struct sigaction sanew;
-#else
- struct sigvec svorig;
- struct sigvec svnew;
-#endif
-
- if (sig == SIGCONT) return;
-
-#ifdef HASSIGPROCMASK
- sigfillset(&ssnew);
- sigprocmask(SIG_SETMASK,&ssnew,&ssorig);
-#else
- masknew = ~0;
- maskorig = sigsetmask(masknew);
-#endif
-
-#ifdef HASSIGACTION
- sanew.sa_handler = SIG_DFL;
- sanew.sa_flags = 0;
- sigemptyset(&sanew.sa_mask);
- sigaction(sig,&sanew,&saorig);
- sanew.sa_handler = sigcont;
- sigaction(SIGCONT,&sanew,(struct sigaction *) 0);
-#else
- svnew.sv_handler = SIG_DFL;
- svnew.sv_flags = 0;
- svnew.sv_mask = 0;
- sigvec(sig,&svnew,&svorig);
- svnew.sv_handler = sigcont;
- sigvec(SIGCONT,&svnew,(struct sigvec *) 0);
-#endif
-
- flagcont = 0;
- if (kill(getpid(),sig) == 0) {
-#ifdef HASSIGPROCMASK
- sigdelset(&ssnew,sig);
- sigdelset(&ssnew,SIGCONT);
- while (!flagcont)
- sigsuspend(&ssnew);
-#else
- masknew &= ~(1 << (sig - 1));
- masknew &= ~(1 << (SIGCONT - 1));
- while (!flagcont)
- sigpause(masknew);
-#endif
- }
-
-#ifdef HASSIGACTION
- sigaction(sig,&saorig,(struct sigaction *) 0);
-#else
- sigvec(sig,&svorig,(struct sigvec *) 0);
-#endif
-
-#ifdef HASSIGPROCMASK
- sigprocmask(SIG_SETMASK,&ssorig,(sigset_t *) 0);
-#else
- sigsetmask(maskorig);
-#endif
-}