[BACK]Return to read.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/read.c between version 1.192 and 1.194

version 1.192, 2017/07/20 14:36:36 version 1.194, 2018/02/23 21:35:19
Line 96  static const char * const mandocerrs[MANDOCERR_MAX] = 
Line 96  static const char * const mandocerrs[MANDOCERR_MAX] = 
         "legacy man(7) date format",          "legacy man(7) date format",
         "lower case character in document title",          "lower case character in document title",
         "duplicate RCS id",          "duplicate RCS id",
         "typo in section name",          "possible typo in section name",
         "unterminated quoted argument",          "unterminated quoted argument",
         "useless macro",          "useless macro",
         "consider using OS macro",          "consider using OS macro",
Line 556  read_whole_file(struct mparse *curp, const char *file,
Line 556  read_whole_file(struct mparse *curp, const char *file,
         gzFile           gz;          gzFile           gz;
         size_t           off;          size_t           off;
         ssize_t          ssz;          ssize_t          ssz;
           int              gzerrnum, retval;
   
         if (fstat(fd, &st) == -1) {          if (fstat(fd, &st) == -1) {
                 mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0,                  mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0,
Line 583  read_whole_file(struct mparse *curp, const char *file,
Line 584  read_whole_file(struct mparse *curp, const char *file,
         }          }
   
         if (curp->gzip) {          if (curp->gzip) {
                   /*
                    * Duplicating the file descriptor is required
                    * because we will have to call gzclose(3)
                    * to free memory used internally by zlib,
                    * but that will also close the file descriptor,
                    * which this function must not do.
                    */
                   if ((fd = dup(fd)) == -1) {
                           mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0,
                               "dup: %s", strerror(errno));
                           return 0;
                   }
                 if ((gz = gzdopen(fd, "rb")) == NULL) {                  if ((gz = gzdopen(fd, "rb")) == NULL) {
                         mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0,                          mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0,
                             "gzdopen: %s", strerror(errno));                              "gzdopen: %s", strerror(errno));
                           close(fd);
                         return 0;                          return 0;
                 }                  }
         } else          } else
Line 598  read_whole_file(struct mparse *curp, const char *file,
Line 612  read_whole_file(struct mparse *curp, const char *file,
   
         *with_mmap = 0;          *with_mmap = 0;
         off = 0;          off = 0;
           retval = 0;
         fb->sz = 0;          fb->sz = 0;
         fb->buf = NULL;          fb->buf = NULL;
         for (;;) {          for (;;) {
Line 614  read_whole_file(struct mparse *curp, const char *file,
Line 629  read_whole_file(struct mparse *curp, const char *file,
                     read(fd, fb->buf + (int)off, fb->sz - off);                      read(fd, fb->buf + (int)off, fb->sz - off);
                 if (ssz == 0) {                  if (ssz == 0) {
                         fb->sz = off;                          fb->sz = off;
                         return 1;                          retval = 1;
                           break;
                 }                  }
                 if (ssz == -1) {                  if (ssz == -1) {
                         mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0,                          if (curp->gzip)
                             "read: %s", strerror(errno));                                  (void)gzerror(gz, &gzerrnum);
                           mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0, "read: %s",
                               curp->gzip && gzerrnum != Z_ERRNO ?
                               zError(gzerrnum) : strerror(errno));
                         break;                          break;
                 }                  }
                 off += (size_t)ssz;                  off += (size_t)ssz;
         }          }
   
         free(fb->buf);          if (curp->gzip && (gzerrnum = gzclose(gz)) != Z_OK)
         fb->buf = NULL;                  mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0, "gzclose: %s",
         return 0;                      gzerrnum == Z_ERRNO ? strerror(errno) :
                       zError(gzerrnum));
           if (retval == 0) {
                   free(fb->buf);
                   fb->buf = NULL;
           }
           return retval;
 }  }
   
 static void  static void

Legend:
Removed from v.1.192  
changed lines
  Added in v.1.194

CVSweb