version 1.15, 1997/11/14 00:23:45 |
version 1.16, 1998/05/04 05:37:47 |
|
|
collint(s) |
collint(s) |
int s; |
int s; |
{ |
{ |
|
sigset_t set, oset; |
|
|
/* |
/* |
* the control flow is subtle, because we can be called from ~q. |
* the control flow is subtle, because we can be called from ~q. |
*/ |
*/ |
|
(void)sigfillset(&set); |
|
(void)sigprocmask(SIG_BLOCK, &set, &oset); |
if (hadintr == 0 && isatty(0)) { |
if (hadintr == 0 && isatty(0)) { |
if (value("ignore") != NULL) { |
if (value("ignore") != NULL) { |
puts("@"); |
puts("@"); |
fflush(stdout); |
fflush(stdout); |
clearerr(stdin); |
clearerr(stdin); |
|
(void)sigprocmask(SIG_SETMASK, &oset, NULL); |
return; |
return; |
} |
} |
hadintr = 1; |
hadintr = 1; |
|
(void)sigprocmask(SIG_SETMASK, &oset, NULL); |
siglongjmp(colljmp, 1); |
siglongjmp(colljmp, 1); |
} |
} |
rewind(collf); |
rewind(collf); |
if (value("nosave") == NULL) |
if (value("nosave") == NULL) |
savedeadletter(collf); |
savedeadletter(collf); |
|
(void)sigprocmask(SIG_SETMASK, &oset, NULL); |
siglongjmp(collabort, 1); |
siglongjmp(collabort, 1); |
} |
} |
|
|
|
|
collhup(s) |
collhup(s) |
int s; |
int s; |
{ |
{ |
|
sigset_t set; |
|
|
|
(void)sigfillset(&set); |
|
(void)sigprocmask(SIG_BLOCK, &set, NULL); |
rewind(collf); |
rewind(collf); |
savedeadletter(collf); |
savedeadletter(collf); |
/* |
/* |