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

Diff for /src/usr.bin/mandoc/read.c between version 1.168 and 1.169

version 1.168, 2018/07/28 18:32:30 version 1.169, 2018/08/23 14:16:12
Line 60 
Line 60 
   
 static  void      choose_parser(struct mparse *);  static  void      choose_parser(struct mparse *);
 static  void      resize_buf(struct buf *, size_t);  static  void      resize_buf(struct buf *, size_t);
 static  int       mparse_buf_r(struct mparse *, struct buf, size_t, int);  static  enum rofferr mparse_buf_r(struct mparse *, struct buf, size_t, int);
 static  int       read_whole_file(struct mparse *, const char *, int,  static  int       read_whole_file(struct mparse *, const char *, int,
                                 struct buf *, int *);                                  struct buf *, int *);
 static  void      mparse_end(struct mparse *);  static  void      mparse_end(struct mparse *);
Line 231 
Line 231 
         "input stack limit exceeded, infinite loop?",          "input stack limit exceeded, infinite loop?",
         "skipping bad character",          "skipping bad character",
         "skipping unknown macro",          "skipping unknown macro",
           "ignoring request outside macro",
         "skipping insecure request",          "skipping insecure request",
         "skipping item outside list",          "skipping item outside list",
         "skipping column outside column list",          "skipping column outside column list",
Line 241 
Line 242 
   
         /* related to request and macro arguments */          /* related to request and macro arguments */
         "escaped character not allowed in a name",          "escaped character not allowed in a name",
           "using macro argument outside macro",
           "argument number is not numeric",
         "NOT IMPLEMENTED: Bd -file",          "NOT IMPLEMENTED: Bd -file",
         "skipping display without arguments",          "skipping display without arguments",
         "missing list type, using -item",          "missing list type, using -item",
Line 249 
Line 252 
         "uname(3) system call failed, using UNKNOWN",          "uname(3) system call failed, using UNKNOWN",
         "unknown standard specifier",          "unknown standard specifier",
         "skipping request without numeric argument",          "skipping request without numeric argument",
           "excessive shift",
         "NOT IMPLEMENTED: .so with absolute path or \"..\"",          "NOT IMPLEMENTED: .so with absolute path or \"..\"",
         ".so request failed",          ".so request failed",
         "skipping all arguments",          "skipping all arguments",
Line 336 
Line 340 
  * macros, inline equations, and input line traps)   * macros, inline equations, and input line traps)
  * and indirectly (for .so file inclusion).   * and indirectly (for .so file inclusion).
  */   */
 static int  static enum rofferr
 mparse_buf_r(struct mparse *curp, struct buf blk, size_t i, int start)  mparse_buf_r(struct mparse *curp, struct buf blk, size_t i, int start)
 {  {
         struct buf       ln;          struct buf       ln;
         const char      *save_file;          const char      *save_file;
         char            *cp;          char            *cp;
         size_t           pos; /* byte number in the ln buffer */          size_t           pos; /* byte number in the ln buffer */
         enum rofferr     rr;          enum rofferr     line_result, sub_result;
         int              of;          int              of;
         int              lnn; /* line number in the real file */          int              lnn; /* line number in the real file */
         int              fd;          int              fd;
Line 466 
Line 470 
                                 [curp->secondary->sz] = '\0';                                  [curp->secondary->sz] = '\0';
                 }                  }
 rerun:  rerun:
                 rr = roff_parseln(curp->roff, curp->line, &ln, &of);                  line_result = roff_parseln(curp->roff, curp->line, &ln, &of);
   
                 switch (rr) {                  switch (line_result) {
                 case ROFF_REPARSE:                  case ROFF_REPARSE:
                         if (++curp->reparse_count > REPARSE_LIMIT)                  case ROFF_USERCALL:
                           if (++curp->reparse_count > REPARSE_LIMIT) {
                                   sub_result = ROFF_IGN;
                                 mandoc_msg(MANDOCERR_ROFFLOOP, curp,                                  mandoc_msg(MANDOCERR_ROFFLOOP, curp,
                                     curp->line, pos, NULL);                                      curp->line, pos, NULL);
                         else if (mparse_buf_r(curp, ln, of, 0) == 1 ||                          } else {
                             start == 1) {                                  sub_result = mparse_buf_r(curp, ln, of, 0);
                                   if (line_result == ROFF_USERCALL) {
                                           if (sub_result == ROFF_USERRET)
                                                   sub_result = ROFF_CONT;
                                           roff_userret(curp->roff);
                                   }
                                   if (start || sub_result == ROFF_CONT) {
                                           pos = 0;
                                           continue;
                                   }
                           }
                           free(ln.buf);
                           return sub_result;
                   case ROFF_USERRET:
                           if (start) {
                                 pos = 0;                                  pos = 0;
                                 continue;                                  continue;
                         }                          }
                         free(ln.buf);                          free(ln.buf);
                         return 0;                          return ROFF_USERRET;
                 case ROFF_APPEND:                  case ROFF_APPEND:
                         pos = strlen(ln.buf);                          pos = strlen(ln.buf);
                         continue;                          continue;
Line 493 
Line 513 
                             (i >= blk.sz || blk.buf[i] == '\0')) {                              (i >= blk.sz || blk.buf[i] == '\0')) {
                                 curp->sodest = mandoc_strdup(ln.buf + of);                                  curp->sodest = mandoc_strdup(ln.buf + of);
                                 free(ln.buf);                                  free(ln.buf);
                                 return 1;                                  return ROFF_CONT;
                         }                          }
                         /*                          /*
                          * We remove `so' clauses from our lookaside                           * We remove `so' clauses from our lookaside
Line 545 
Line 565 
         }          }
   
         free(ln.buf);          free(ln.buf);
         return 1;          return ROFF_CONT;
 }  }
   
 static int  static int

Legend:
Removed from v.1.168  
changed lines
  Added in v.1.169