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

Diff for /src/usr.bin/rlogin/Attic/rlogin.c between version 1.15 and 1.16

version 1.15, 1997/07/25 21:05:38 version 1.16, 1997/08/06 06:43:40
Line 445 
Line 445 
         int signo;          int signo;
 {  {
         union wait status;          union wait status;
           int save_errno = errno;
         int pid;          int pid;
   
         for (;;) {          for (;;) {
                 pid = wait3((int *)&status, WNOHANG|WUNTRACED, NULL);                  pid = wait3((int *)&status, WNOHANG|WUNTRACED, NULL);
                 if (pid == 0)                  if (pid == 0)
                         return;                          break;
                 /* if the child (reader) dies, just quit */                  /* if the child (reader) dies, just quit */
                 if (pid < 0 || (pid == child && !WIFSTOPPED(status)))                  if (pid < 0 || (pid == child && !WIFSTOPPED(status)))
                         done((int)(status.w_termsig | status.w_retcode));                          done((int)(status.w_termsig | status.w_retcode));
         }          }
         /* NOTREACHED */          errno = save_errno;
 }  }
   
 /*  /*
Line 635 
Line 636 
 {  {
         struct termios tty;          struct termios tty;
         int atmark, n, rcvd;          int atmark, n, rcvd;
           int save_errno = errno;
         char waste[BUFSIZ], mark;          char waste[BUFSIZ], mark;
   
         rcvd = 0;          rcvd = 0;
Line 649 
Line 651 
                         if (rcvcnt < sizeof(rcvbuf)) {                          if (rcvcnt < sizeof(rcvbuf)) {
                                 n = read(rem, rcvbuf + rcvcnt,                                  n = read(rem, rcvbuf + rcvcnt,
                                     sizeof(rcvbuf) - rcvcnt);                                      sizeof(rcvbuf) - rcvcnt);
                                 if (n <= 0)                                  if (n <= 0) {
                                           errno = save_errno;
                                         return;                                          return;
                                   }
                                 rcvd += n;                                  rcvd += n;
                         } else {                          } else {
                                 n = read(rem, waste, sizeof(waste));                                  n = read(rem, waste, sizeof(waste));
                                 if (n <= 0)                                  if (n <= 0) {
                                           errno = save_errno;
                                         return;                                          return;
                                   }
                         }                          }
                         continue;                          continue;
                 default:                  default:
                           errno = save_errno;
                         return;                          return;
                 }                  }
         }          }
Line 709 
Line 716 
          */           */
         if (rcvd && rcvstate == READING)          if (rcvd && rcvstate == READING)
                 longjmp(rcvtop, 1);                  longjmp(rcvtop, 1);
           errno = save_errno;
 }  }
   
 /* reader: read from remote: line -> 1 */  /* reader: read from remote: line -> 1 */
Line 809 
Line 817 
 copytochild(signo)  copytochild(signo)
         int signo;          int signo;
 {  {
           int save_errno = errno;
         (void)kill(child, SIGURG);          (void)kill(child, SIGURG);
           errno = save_errno;
 }  }
   
 void  void

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16