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

Diff for /mandoc/read.c between version 1.214 and 1.219

version 1.214, 2019/07/10 19:39:01 version 1.219, 2020/04/24 12:02:33
Line 1 
Line 1 
 /*      $Id$ */  /* $Id$ */
 /*  /*
    * Copyright (c) 2010-2020 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>  
  * Copyright (c) 2010, 2012 Joerg Sonnenberger <joerg@netbsd.org>   * Copyright (c) 2010, 2012 Joerg Sonnenberger <joerg@netbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
Line 15 
Line 15 
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    *
    * Top-level functions of the mandoc(3) parser:
    * Parser and input encoding selection, decompression,
    * handling of input bytes, characters, lines, and files,
    * handling of roff(7) loops and file inclusion,
    * and steering of the various parsers.
  */   */
 #include "config.h"  #include "config.h"
   
Line 41 
Line 47 
 #include "mandoc_parse.h"  #include "mandoc_parse.h"
 #include "libmandoc.h"  #include "libmandoc.h"
 #include "roff_int.h"  #include "roff_int.h"
   #include "tag.h"
   
 #define REPARSE_LIMIT   1000  #define REPARSE_LIMIT   1000
   
Line 547  mparse_readfd(struct mparse *curp, int fd, const char 
Line 554  mparse_readfd(struct mparse *curp, int fd, const char 
   
         struct buf       blk;          struct buf       blk;
         struct buf      *save_primary;          struct buf      *save_primary;
         const char      *save_filename;          const char      *save_filename, *cp;
         size_t           offset;          size_t           offset;
         int              save_filenc, save_lineno;          int              save_filenc, save_lineno;
         int              with_mmap;          int              with_mmap;
Line 555  mparse_readfd(struct mparse *curp, int fd, const char 
Line 562  mparse_readfd(struct mparse *curp, int fd, const char 
         if (recursion_depth > 64) {          if (recursion_depth > 64) {
                 mandoc_msg(MANDOCERR_ROFFLOOP, curp->line, 0, NULL);                  mandoc_msg(MANDOCERR_ROFFLOOP, curp->line, 0, NULL);
                 return;                  return;
         }          } else if (recursion_depth == 0 &&
               (cp = strrchr(filename, '.')) != NULL &&
               cp[1] >= '1' && cp[1] <= '9')
                   curp->man->filesec = cp[1];
           else
                   curp->man->filesec = '\0';
   
         if (read_whole_file(curp, fd, &blk, &with_mmap) == -1)          if (read_whole_file(curp, fd, &blk, &with_mmap) == -1)
                 return;                  return;
   
Line 664  mparse_alloc(int options, enum mandoc_os os_e, const c
Line 677  mparse_alloc(int options, enum mandoc_os os_e, const c
         }          }
         curp->man->meta.first->tok = TOKEN_NONE;          curp->man->meta.first->tok = TOKEN_NONE;
         curp->man->meta.os_e = os_e;          curp->man->meta.os_e = os_e;
           tag_alloc();
         return curp;          return curp;
 }  }
   
 void  void
 mparse_reset(struct mparse *curp)  mparse_reset(struct mparse *curp)
 {  {
           tag_free();
         roff_reset(curp->roff);          roff_reset(curp->roff);
         roff_man_reset(curp->man);          roff_man_reset(curp->man);
         free_buf_list(curp->secondary);          free_buf_list(curp->secondary);
         curp->secondary = NULL;          curp->secondary = NULL;
         curp->gzip = 0;          curp->gzip = 0;
           tag_alloc();
 }  }
   
 void  void
 mparse_free(struct mparse *curp)  mparse_free(struct mparse *curp)
 {  {
           tag_free();
         roffhash_free(curp->man->mdocmac);          roffhash_free(curp->man->mdocmac);
         roffhash_free(curp->man->manmac);          roffhash_free(curp->man->manmac);
         roff_man_free(curp->man);          roff_man_free(curp->man);
Line 697  mparse_result(struct mparse *curp)
Line 714  mparse_result(struct mparse *curp)
                         mdoc_validate(curp->man);                          mdoc_validate(curp->man);
                 else                  else
                         man_validate(curp->man);                          man_validate(curp->man);
                   tag_postprocess(curp->man, curp->man->meta.first);
         }          }
         return &curp->man->meta;          return &curp->man->meta;
 }  }

Legend:
Removed from v.1.214  
changed lines
  Added in v.1.219

CVSweb