|
|
1.1 root 1: #ifndef BSD4_2
2: #ifndef lint
3: static char *sccsid = "@(#)4.2sys.c 1.0 3/9/84";
4: #endif
5:
6: #include "rcv.h"
7:
8: /*
9: * Mail -- a mail program
10: *
11: * Simulates some 4.2BSD system calls
12: */
13:
14: int oldbmask = 0; /* previously blocked signals */
15: int beenhere = 0; /* have we initialized signals? */
16: int heldsigs[NSIG]; /* list of held signals */
17:
18: /*
19: * Add signals to list of those to be blocked
20: */
21:
22: sigblock(smask)
23: int smask;
24: {
25: int retmask;
26:
27: retmask = oldbmask;
28: oldbmask |= smask;
29: blocksig(oldbmask);
30: return(retmask);
31: }
32:
33: /*
34: * Set signals to be blocked
35: */
36:
37: sigsetmask(smask)
38: int smask;
39: {
40: int retmask;
41:
42: retmask = oldbmask;
43: oldbmask = smask;
44: blocksig(oldbmask);
45: return(retmask);
46: }
47:
48: /*
49: * Block signals in smask
50: */
51:
52: blocksig(smask)
53: int smask;
54: {
55: int i;
56:
57: for (i = 0; i < NSIG; i++) {
58: if (!beenhere) {
59: sigset(i, sigset(i, SIG_DFL));
60: heldsigs[i] = 0;
61: }
62: if (i != SIGKILL && i != SIGSTOP && i != SIGCONT &&
63: (smask & mask(i)) && !heldsigs[i]) {
64: sighold(i);
65: heldsigs[i] = 1;
66: }
67: else if (i != SIGKILL && i != SIGSTOP && i != SIGCONT &&
68: !(smask & mask(i)) && heldsigs[i]) {
69: sigrelse(i);
70: heldsigs[i] = 0;
71: }
72: }
73: beenhere = 1;
74: }
75:
76: #endif /* BSD4_2 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.