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

Diff for /src/usr.bin/tail/forward.c between version 1.18 and 1.19

version 1.18, 2004/02/16 19:48:21 version 1.19, 2004/03/01 16:35:05
Line 184 
Line 184 
                         ke.ident = fileno(fp);                          ke.ident = fileno(fp);
                         ke.flags = EV_ENABLE|EV_ADD|EV_CLEAR;                          ke.flags = EV_ENABLE|EV_ADD|EV_CLEAR;
                         ke.filter = EVFILT_VNODE;                          ke.filter = EVFILT_VNODE;
                         ke.fflags = NOTE_DELETE | NOTE_RENAME;                          ke.fflags = NOTE_DELETE | NOTE_RENAME | NOTE_TRUNCATE;
                         if (kevent(kq, &ke, 1, NULL, 0, NULL) < 0) {                          if (kevent(kq, &ke, 1, NULL, 0, NULL) < 0) {
                                 close(kq);                                  close(kq);
                                 kq = -1;                                  kq = -1;
Line 210 
Line 210 
                         sleep(1);                          sleep(1);
                 } else if (ke.filter == EVFILT_READ) {                  } else if (ke.filter == EVFILT_READ) {
                         continue;                          continue;
                 } else {                  } else if ((ke.fflags & NOTE_TRUNCATE) == 0) {
                         /*                          /*
                          * File was renamed or deleted.                           * File was renamed or deleted.
                          *                           *
Line 235 
Line 235 
                         }                          }
                         (void)memcpy(sbp, &nsb, sizeof(nsb));                          (void)memcpy(sbp, &nsb, sizeof(nsb));
                         goto kq_retry;                          goto kq_retry;
                 } else if (nsb.st_size < sbp->st_size) {                  } else if (ke.fflags & NOTE_TRUNCATE) {
                         warnx("%s has been truncated, resetting.", fname);                          warnx("%s has been truncated, resetting.", fname);
                           fpurge(fp);
                         rewind(fp);                          rewind(fp);
                         (void)memcpy(sbp, &nsb, sizeof(nsb));  
                 }                  }
                   (void)memcpy(sbp, &nsb, sizeof(nsb));
         }          }
         if (kq >= 0)          if (kq >= 0)
                 close(kq);                  close(kq);

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19