=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mail/collect.c,v retrieving revision 1.2 retrieving revision 1.3 diff -c -r1.2 -r1.3 *** src/usr.bin/mail/collect.c 1996/06/11 12:53:35 1.2 --- src/usr.bin/mail/collect.c 1997/04/10 15:33:50 1.3 *************** *** 1,4 **** ! /* $OpenBSD: collect.c,v 1.2 1996/06/11 12:53:35 deraadt Exp $ */ /* $NetBSD: collect.c,v 1.6 1996/06/08 19:48:16 christos Exp $ */ /* --- 1,4 ---- ! /* $OpenBSD: collect.c,v 1.3 1997/04/10 15:33:50 deraadt Exp $ */ /* $NetBSD: collect.c,v 1.6 1996/06/08 19:48:16 christos Exp $ */ /* *************** *** 38,44 **** #if 0 static char sccsid[] = "@(#)collect.c 8.2 (Berkeley) 4/19/94"; #else ! static char rcsid[] = "$OpenBSD: collect.c,v 1.2 1996/06/11 12:53:35 deraadt Exp $"; #endif #endif /* not lint */ --- 38,44 ---- #if 0 static char sccsid[] = "@(#)collect.c 8.2 (Berkeley) 4/19/94"; #else ! static char rcsid[] = "$OpenBSD: collect.c,v 1.3 1997/04/10 15:33:50 deraadt Exp $"; #endif #endif /* not lint */ *************** *** 86,92 **** char linebuf[LINESIZE], *cp; extern char *tempMail; char getsub; ! sigset_t oset, nset; #if __GNUC__ /* Avoid longjmp clobbering */ (void) &escape; --- 86,92 ---- char linebuf[LINESIZE], *cp; extern char *tempMail; char getsub; ! int omask; #if __GNUC__ /* Avoid longjmp clobbering */ (void) &escape; *************** *** 99,108 **** * Start catching signals from here, but we're still die on interrupts * until we're in the main loop. */ ! sigemptyset(&nset); ! sigaddset(&nset, SIGINT); ! sigaddset(&nset, SIGHUP); ! sigprocmask(SIG_BLOCK, &nset, &oset); if ((saveint = signal(SIGINT, SIG_IGN)) != SIG_IGN) signal(SIGINT, collint); if ((savehup = signal(SIGHUP, SIG_IGN)) != SIG_IGN) --- 99,105 ---- * Start catching signals from here, but we're still die on interrupts * until we're in the main loop. */ ! omask = sigblock(sigmask(SIGINT) | sigmask(SIGHUP)); if ((saveint = signal(SIGINT, SIG_IGN)) != SIG_IGN) signal(SIGINT, collint); if ((savehup = signal(SIGHUP, SIG_IGN)) != SIG_IGN) *************** *** 114,120 **** rm(tempMail); goto err; } ! sigprocmask(SIG_SETMASK, &oset, NULL); noreset++; if ((collf = Fopen(tempMail, "w+")) == NULL) { --- 111,117 ---- rm(tempMail); goto err; } ! sigsetmask(omask & ~(sigmask(SIGINT) | sigmask(SIGHUP))); noreset++; if ((collf = Fopen(tempMail, "w+")) == NULL) { *************** *** 389,404 **** if (collf != NULL) rewind(collf); noreset--; ! sigemptyset(&nset); ! sigaddset(&nset, SIGINT); ! sigaddset(&nset, SIGHUP); ! sigprocmask(SIG_BLOCK, &nset, &oset); signal(SIGINT, saveint); signal(SIGHUP, savehup); signal(SIGTSTP, savetstp); signal(SIGTTOU, savettou); signal(SIGTTIN, savettin); ! sigprocmask(SIG_SETMASK, &oset, NULL); return collf; } --- 386,398 ---- if (collf != NULL) rewind(collf); noreset--; ! sigblock(sigmask(SIGINT) | sigmask(SIGHUP)); signal(SIGINT, saveint); signal(SIGHUP, savehup); signal(SIGTSTP, savetstp); signal(SIGTTOU, savettou); signal(SIGTTIN, savettin); ! sigsetmask(omask); return collf; }