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

Diff for /src/usr.bin/sendbug/sendbug.c between version 1.44 and 1.45

version 1.44, 2007/05/06 04:50:26 version 1.45, 2007/05/06 05:01:19
Line 227 
Line 227 
         char *argp[] = {"sh", "-c", NULL, NULL}, *ed, *p;          char *argp[] = {"sh", "-c", NULL, NULL}, *ed, *p;
         sig_t sighup, sigint, sigquit;          sig_t sighup, sigint, sigquit;
         pid_t pid;          pid_t pid;
         int st;          int saved_errno, st;
   
         ed = getenv("VISUAL");          ed = getenv("VISUAL");
         if (ed == NULL || ed[0] == '\0')          if (ed == NULL || ed[0] == '\0')
Line 243 
Line 243 
         sigquit = signal(SIGQUIT, SIG_IGN);          sigquit = signal(SIGQUIT, SIG_IGN);
  top:   top:
         if ((pid = fork()) == -1) {          if ((pid = fork()) == -1) {
                 int saved_errno = errno;                  saved_errno = errno;
   
                 if (saved_errno == EAGAIN) {                  if (saved_errno == EAGAIN) {
                         sleep(1);                          sleep(1);
Line 263 
Line 263 
         free(p);          free(p);
         for (;;) {          for (;;) {
                 if (waitpid(pid, &st, 0) == -1) {                  if (waitpid(pid, &st, 0) == -1) {
                         if (errno != EINTR)                          if (errno != EINTR) {
                                   saved_errno = errno;
                                   (void)signal(SIGHUP, sighup);
                                   (void)signal(SIGINT, sigint);
                                   (void)signal(SIGQUIT, sigquit);
                                   errno = saved_errno;
                                 return (-1);                                  return (-1);
                           }
                 } else                  } else
                         break;                          break;
         }          }

Legend:
Removed from v.1.44  
changed lines
  Added in v.1.45