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

Diff for /src/usr.bin/diff/diffdir.c between version 1.27 and 1.28

version 1.27, 2004/03/16 00:40:34 version 1.28, 2004/10/02 18:13:24
Line 183 
Line 183 
         }          }
         fstat(fd, &sb);          fstat(fd, &sb);
   
         bufsize = sb.st_size;          bufsize = 0;
         if (bufsize < sb.st_blksize)          ebuf = buf = NULL;
                 bufsize = sb.st_blksize;          do {
         buf = emalloc(bufsize);                  bufsize += roundup(MAX(sb.st_size, sb.st_blksize),
                       sizeof(struct dirent));
         nbytes = getdirentries(fd, buf, bufsize, &base);                  if (buf == NULL)
         if (nbytes <= 0) {                      buf = ebuf = emalloc(bufsize);
                 free(buf);                  else {
                 warn("%s", path);                      cp = erealloc(buf, bufsize);
                 return (NULL);                      ebuf = cp + (ebuf - buf);
         }                      buf = cp;
         ebuf = buf + nbytes;                  }
                   nbytes = getdirentries(fd, ebuf, bufsize, &base);
                   if (nbytes == -1) {
                           free(buf);
                           warn("%s", path);
                           return (NULL);
                   }
                   ebuf += nbytes;
           } while (nbytes == bufsize);
         close(fd);          close(fd);
   
         /*          /*

Legend:
Removed from v.1.27  
changed lines
  Added in v.1.28