diff options
Diffstat (limited to 'bin/csh/file.c')
-rw-r--r-- | bin/csh/file.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/bin/csh/file.c b/bin/csh/file.c index 523844d..3a89d34 100644 --- a/bin/csh/file.c +++ b/bin/csh/file.c @@ -32,7 +32,7 @@ */ #ifndef lint -static char sccsid[] = "@(#)file.c 8.2 (Berkeley) 3/19/94"; +static char sccsid[] = "@(#)file.c 8.4 (Berkeley) 5/6/95"; #endif /* not lint */ #ifdef FILEC @@ -138,9 +138,11 @@ static void back_to_col_1() { struct termios tty, tty_normal; - int omask; + sigset_t sigset, osigset; - omask = sigblock(sigmask(SIGINT)); + sigemptyset(&sigset); + sigaddset(&sigset, SIGINT); + sigprocmask(SIG_BLOCK, &sigset, &osigset); (void) tcgetattr(SHOUT, &tty); tty_normal = tty; tty.c_iflag &= ~INLCR; @@ -148,7 +150,7 @@ back_to_col_1() (void) tcsetattr(SHOUT, TCSANOW, &tty); (void) write(SHOUT, "\r", 1); (void) tcsetattr(SHOUT, TCSANOW, &tty_normal); - (void) sigsetmask(omask); + sigprocmask(SIG_SETMASK, &osigset, NULL); } /* @@ -160,10 +162,12 @@ pushback(string) { register Char *p; struct termios tty, tty_normal; - int omask; + sigset_t sigset, osigset; char c; - omask = sigblock(sigmask(SIGINT)); + sigemptyset(&sigset); + sigaddset(&sigset, SIGINT); + sigprocmask(SIG_BLOCK, &sigset, &osigset); (void) tcgetattr(SHOUT, &tty); tty_normal = tty; tty.c_lflag &= ~(ECHOKE | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOCTL); @@ -172,7 +176,7 @@ pushback(string) for (p = string; (c = *p) != '\0'; p++) (void) ioctl(SHOUT, TIOCSTI, (ioctl_t) & c); (void) tcsetattr(SHOUT, TCSANOW, &tty_normal); - (void) sigsetmask(omask); + sigprocmask(SIG_SETMASK, &osigset, NULL); } /* @@ -416,12 +420,14 @@ free_items(items) } #define FREE_ITEMS(items) { \ - int omask;\ + sigset_t sigset, osigset;\ \ - omask = sigblock(sigmask(SIGINT));\ + sigemptyset(&sigset);\ + sigaddset(&sigset, SIGINT);\ + sigprocmask(SIG_BLOCK, &sigset, &osigset);\ free_items(items);\ items = NULL;\ - (void) sigsetmask(omask);\ + sigprocmask(SIG_SETMASK, &osigset, NULL);\ } /* |