xref: /csrg-svn/usr.bin/mail/Signal.c (revision 3916)
11221Skas #
21221Skas 
31221Skas #include <signal.h>
41221Skas 
51221Skas /*
61221Skas  * The following is for systems with botched signal() system entries
71221Skas  * which don't return the proper value for the previous signal.
81221Skas  */
91221Skas 
101221Skas int	oldsigs[17];
111221Skas 
12*3916Skurt static char *SccsId = "@(#)Signal.c	2.1 07/01/81";
131221Skas 
141221Skas int
151221Skas (*Signal())(sig, spot)
161221Skas 	int spot;
171221Skas {
181221Skas 	int ret;
191221Skas 
201221Skas 	/* printf("Signal(%d, %.1o)\n", sig, spot); */
211221Skas 	if (sig < 1 || sig > 16)
221221Skas 		return(-1);
231221Skas 	ret = oldsigs[sig];
241221Skas 	oldsigs[sig] = (int) spot;
251221Skas 	signal(sig, spot);
261221Skas 	return(ret);
271221Skas }
281221Skas 
Siginit()291221Skas Siginit()
301221Skas {
311221Skas 	register int i;
321221Skas 
331221Skas 	for (i = 1; i < 17; i++) {
341221Skas 		oldsigs[i] = (int) signal(i, SIG_IGN);
351221Skas 		signal(i, (int (*)()) oldsigs[i]);
361221Skas 	}
371221Skas }
38