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

Diff for /src/usr.bin/nc/netcat.c between version 1.51 and 1.52

version 1.51, 2002/07/01 20:12:40 version 1.52, 2002/07/04 04:42:25
Line 533 
Line 533 
 void  void
 readwrite(int nfd)  readwrite(int nfd)
 {  {
         struct pollfd *pfd;          struct pollfd pfd[2];
         char buf[BUFSIZ];          char buf[BUFSIZ];
         int wfd = fileno(stdin), n, ret;          int wfd = fileno(stdin), n, ret;
         int lfd = fileno(stdout);          int lfd = fileno(stdout);
   
         pfd = malloc(2 * sizeof(struct pollfd));  
   
         /* Setup Network FD */          /* Setup Network FD */
         pfd[0].fd = nfd;          pfd[0].fd = nfd;
         pfd[0].events = POLLIN;          pfd[0].events = POLLIN;
Line 548 
Line 546 
         pfd[1].fd = wfd;          pfd[1].fd = wfd;
         pfd[1].events = POLLIN;          pfd[1].events = POLLIN;
   
         for (;;) {          while (pfd[0].fd != -1 || pfd[1].fd != -1) {
                 if (iflag)                  if (iflag)
                         sleep(iflag);                          sleep(iflag);
   
                 if ((n = poll(pfd, 2, timeout)) < 0) {                  if ((n = poll(pfd, 2, timeout)) < 0) {
                         close(nfd);                          close(nfd);
                         close(wfd);                          err(1, "Polling Error");
                         free(pfd);  
                         errx(1, "Polling Error");  
                 }                  }
   
                 if (n == 0)                  if (n == 0)
                         return;                          return;
   
                 if (pfd[0].revents & POLLIN) {                  if (pfd[0].revents & POLLIN) {
                         if ((n = read(nfd, buf, sizeof(buf))) <= 0) {                          if ((n = read(nfd, buf, sizeof(buf))) < 0)
                                 return;                                  return;
                           else if (n == 0) {
                                   shutdown(nfd, SHUT_RD);
                                   pfd[0].fd = -1;
                                   pfd[0].events = 0;
                         } else {                          } else {
                                 if (tflag)                                  if (tflag)
                                         atelnet(nfd, buf, n);                                          atelnet(nfd, buf, n);
Line 576 
Line 576 
                 if (pfd[1].revents & POLLIN) {                  if (pfd[1].revents & POLLIN) {
                         if ((n = read(wfd, buf, sizeof(buf))) < 0)                          if ((n = read(wfd, buf, sizeof(buf))) < 0)
                                 return;                                  return;
                         else {                          else if (n == 0) {
                                   shutdown(nfd, SHUT_WR);
                                   pfd[1].fd = -1;
                                   pfd[1].events = 0;
                           } else {
                                 if((ret = atomicio(write, nfd, buf, n)) != n)                                  if((ret = atomicio(write, nfd, buf, n)) != n)
                                         return;                                          return;
                         }                          }
Line 688 
Line 692 
 {  {
         int i, rv, ret;          int i, rv, ret;
   
         for (i=0; i <= 3; i++) {          for (i = 0; i <= 3; i++) {
                 if ((rv = write(s, "X", 1)) == 1)                  if ((rv = write(s, "X", 1)) == 1)
                         ret = 1;                          ret = 1;
                 else                  else

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.52