C shell "onintr" doesn't re-enable SIGINT after "onintr -".
Michael "Ford" Ditto
ditto at cbmvax.UUCP
Wed Mar 22 17:09:00 AEST 1989
Observed-in:
4.3BSD (Tahoe), and Ultrix V2.2
Description:
C shell "onintr" doesn't re-enable SIGINT after "onintr -".
Repeat-by:
Put the following lines in ~/.login (or just source them):
echo starting...
onintr - # temporarily disable interrupts
sleep 5 # this is non-interruptible
onintr # (supposed to) re-enable interrupts
echo done
After the above file has been sourced, the interrupt character
is ignored.
My Fix:
Patches to 4.3BSD Tahoe source:
sh.func.c 5.5 (Berkeley) 5/19/88
*** ORIGsh.func.c Wed Mar 22 01:10:35 1989
--- sh.func.c Wed Mar 22 01:26:41 1989
***************
*** 92,100
bferr("Can't from terminal");
cp = gointr, gointr = 0, xfree(cp);
if (vv == 0) {
! if (setintr)
! (void) sigblock(sigmask(SIGINT));
! else
(void) signal(SIGINT, SIG_DFL);
gointr = 0;
} else if (eq((vv = strip(vv)), "-")) {
--- 92,101 -----
bferr("Can't from terminal");
cp = gointr, gointr = 0, xfree(cp);
if (vv == 0) {
! if (setintr) {
! (void) sigblock(sigmask(SIGINT));
! (void) signal(SIGINT, pintr);
! } else
(void) signal(SIGINT, SIG_DFL);
gointr = 0;
} else if (eq((vv = strip(vv)), "-")) {
--
-=] Ford [=-
"The number of Unix installations (In Real Life: Mike Ditto)
has grown to 10, with more expected." ford at kenobi.commodore.com
- The Unix Programmer's Manual, ...!sdcsvax!crash!kenobi!ford
2nd Edition, June, 1972. ditto at cbmvax.commodore.com
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list