[BACK]Return to collect.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mail

Diff for /src/usr.bin/mail/collect.c between version 1.2 and 1.3

version 1.2, 1996/06/11 12:53:35 version 1.3, 1997/04/10 15:33:50
Line 86 
Line 86 
         char linebuf[LINESIZE], *cp;          char linebuf[LINESIZE], *cp;
         extern char *tempMail;          extern char *tempMail;
         char getsub;          char getsub;
         sigset_t oset, nset;          int omask;
 #if __GNUC__  #if __GNUC__
         /* Avoid longjmp clobbering */          /* Avoid longjmp clobbering */
         (void) &escape;          (void) &escape;
Line 99 
Line 99 
          * Start catching signals from here, but we're still die on interrupts           * Start catching signals from here, but we're still die on interrupts
          * until we're in the main loop.           * until we're in the main loop.
          */           */
         sigemptyset(&nset);          omask = sigblock(sigmask(SIGINT) | sigmask(SIGHUP));
         sigaddset(&nset, SIGINT);  
         sigaddset(&nset, SIGHUP);  
         sigprocmask(SIG_BLOCK, &nset, &oset);  
         if ((saveint = signal(SIGINT, SIG_IGN)) != SIG_IGN)          if ((saveint = signal(SIGINT, SIG_IGN)) != SIG_IGN)
                 signal(SIGINT, collint);                  signal(SIGINT, collint);
         if ((savehup = signal(SIGHUP, SIG_IGN)) != SIG_IGN)          if ((savehup = signal(SIGHUP, SIG_IGN)) != SIG_IGN)
Line 114 
Line 111 
                 rm(tempMail);                  rm(tempMail);
                 goto err;                  goto err;
         }          }
         sigprocmask(SIG_SETMASK, &oset, NULL);          sigsetmask(omask & ~(sigmask(SIGINT) | sigmask(SIGHUP)));
   
         noreset++;          noreset++;
         if ((collf = Fopen(tempMail, "w+")) == NULL) {          if ((collf = Fopen(tempMail, "w+")) == NULL) {
Line 389 
Line 386 
         if (collf != NULL)          if (collf != NULL)
                 rewind(collf);                  rewind(collf);
         noreset--;          noreset--;
         sigemptyset(&nset);          sigblock(sigmask(SIGINT) | sigmask(SIGHUP));
         sigaddset(&nset, SIGINT);  
         sigaddset(&nset, SIGHUP);  
         sigprocmask(SIG_BLOCK, &nset, &oset);  
         signal(SIGINT, saveint);          signal(SIGINT, saveint);
         signal(SIGHUP, savehup);          signal(SIGHUP, savehup);
         signal(SIGTSTP, savetstp);          signal(SIGTSTP, savetstp);
         signal(SIGTTOU, savettou);          signal(SIGTTOU, savettou);
         signal(SIGTTIN, savettin);          signal(SIGTTIN, savettin);
         sigprocmask(SIG_SETMASK, &oset, NULL);          sigsetmask(omask);
         return collf;          return collf;
 }  }
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3