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

Diff for /mandoc/read.c between version 1.208 and 1.209

version 1.208, 2018/12/20 21:30:32 version 1.209, 2018/12/30 00:49:55
Line 47 
Line 47 
 struct  mparse {  struct  mparse {
         struct roff      *roff; /* roff parser (!NULL) */          struct roff      *roff; /* roff parser (!NULL) */
         struct roff_man  *man; /* man parser */          struct roff_man  *man; /* man parser */
         char             *sodest; /* filename pointed to by .so */  
         struct buf       *primary; /* buffer currently being parsed */          struct buf       *primary; /* buffer currently being parsed */
         struct buf       *secondary; /* copy of top level input */          struct buf       *secondary; /* copy of top level input */
         struct buf       *loop; /* open .while request line */          struct buf       *loop; /* open .while request line */
Line 123  choose_parser(struct mparse *curp)
Line 122  choose_parser(struct mparse *curp)
         }          }
   
         if (format == MPARSE_MDOC) {          if (format == MPARSE_MDOC) {
                 curp->man->macroset = MACROSET_MDOC;                  curp->man->meta.macroset = MACROSET_MDOC;
                 if (curp->man->mdocmac == NULL)                  if (curp->man->mdocmac == NULL)
                         curp->man->mdocmac = roffhash_alloc(MDOC_Dd, MDOC_MAX);                          curp->man->mdocmac = roffhash_alloc(MDOC_Dd, MDOC_MAX);
         } else {          } else {
                 curp->man->macroset = MACROSET_MAN;                  curp->man->meta.macroset = MACROSET_MAN;
                 if (curp->man->manmac == NULL)                  if (curp->man->manmac == NULL)
                         curp->man->manmac = roffhash_alloc(MAN_TH, MAN_MAX);                          curp->man->manmac = roffhash_alloc(MAN_TH, MAN_MAX);
         }          }
         curp->man->first->tok = TOKEN_NONE;          curp->man->meta.first->tok = TOKEN_NONE;
 }  }
   
 /*  /*
Line 334  rerun:
Line 333  rerun:
                 case ROFF_IGN:                  case ROFF_IGN:
                         break;                          break;
                 case ROFF_CONT:                  case ROFF_CONT:
                         if (curp->man->macroset == MACROSET_NONE)                          if (curp->man->meta.macroset == MACROSET_NONE)
                                 choose_parser(curp);                                  choose_parser(curp);
                         if ((curp->man->macroset == MACROSET_MDOC ?                          if ((curp->man->meta.macroset == MACROSET_MDOC ?
                              mdoc_parseln(curp->man, curp->line, ln.buf, of) :                               mdoc_parseln(curp->man, curp->line, ln.buf, of) :
                              man_parseln(curp->man, curp->line, ln.buf, of)                               man_parseln(curp->man, curp->line, ln.buf, of)
                             ) == 2)                              ) == 2)
Line 365  rerun:
Line 364  rerun:
                 case ROFF_SO:                  case ROFF_SO:
                         if ( ! (curp->options & MPARSE_SO) &&                          if ( ! (curp->options & MPARSE_SO) &&
                             (i >= blk.sz || blk.buf[i] == '\0')) {                              (i >= blk.sz || blk.buf[i] == '\0')) {
                                 curp->sodest = mandoc_strdup(ln.buf + of);                                  curp->man->meta.sodest =
                                       mandoc_strdup(ln.buf + of);
                                 goto out;                                  goto out;
                         }                          }
                         if ((fd = mparse_open(curp, ln.buf + of)) != -1) {                          if ((fd = mparse_open(curp, ln.buf + of)) != -1) {
Line 526  read_whole_file(struct mparse *curp, int fd, struct bu
Line 526  read_whole_file(struct mparse *curp, int fd, struct bu
 static void  static void
 mparse_end(struct mparse *curp)  mparse_end(struct mparse *curp)
 {  {
         if (curp->man->macroset == MACROSET_NONE)          if (curp->man->meta.macroset == MACROSET_NONE)
                 curp->man->macroset = MACROSET_MAN;                  curp->man->meta.macroset = MACROSET_MAN;
         if (curp->man->macroset == MACROSET_MDOC)          if (curp->man->meta.macroset == MACROSET_MDOC)
                 mdoc_endparse(curp->man);                  mdoc_endparse(curp->man);
         else          else
                 man_endparse(curp->man);                  man_endparse(curp->man);
Line 651  mparse_alloc(int options, enum mandoc_os os_e, const c
Line 651  mparse_alloc(int options, enum mandoc_os os_e, const c
         curp->man = roff_man_alloc(curp->roff, curp->os_s,          curp->man = roff_man_alloc(curp->roff, curp->os_s,
                 curp->options & MPARSE_QUICK ? 1 : 0);                  curp->options & MPARSE_QUICK ? 1 : 0);
         if (curp->options & MPARSE_MDOC) {          if (curp->options & MPARSE_MDOC) {
                 curp->man->macroset = MACROSET_MDOC;                  curp->man->meta.macroset = MACROSET_MDOC;
                 if (curp->man->mdocmac == NULL)                  if (curp->man->mdocmac == NULL)
                         curp->man->mdocmac = roffhash_alloc(MDOC_Dd, MDOC_MAX);                          curp->man->mdocmac = roffhash_alloc(MDOC_Dd, MDOC_MAX);
         } else if (curp->options & MPARSE_MAN) {          } else if (curp->options & MPARSE_MAN) {
                 curp->man->macroset = MACROSET_MAN;                  curp->man->meta.macroset = MACROSET_MAN;
                 if (curp->man->manmac == NULL)                  if (curp->man->manmac == NULL)
                         curp->man->manmac = roffhash_alloc(MAN_TH, MAN_MAX);                          curp->man->manmac = roffhash_alloc(MAN_TH, MAN_MAX);
         }          }
         curp->man->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;
         return curp;          return curp;
 }  }
Line 671  mparse_reset(struct mparse *curp)
Line 671  mparse_reset(struct mparse *curp)
         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;
         free(curp->sodest);  
         curp->sodest = NULL;  
         curp->gzip = 0;          curp->gzip = 0;
 }  }
   
Line 684  mparse_free(struct mparse *curp)
Line 682  mparse_free(struct mparse *curp)
         roff_man_free(curp->man);          roff_man_free(curp->man);
         roff_free(curp->roff);          roff_free(curp->roff);
         free_buf_list(curp->secondary);          free_buf_list(curp->secondary);
         free(curp->sodest);  
         free(curp);          free(curp);
 }  }
   
 void  struct roff_meta *
 mparse_result(struct mparse *curp, struct roff_man **man,  mparse_result(struct mparse *curp)
         char **sodest)  
 {  {
           if (curp->options & MPARSE_VALIDATE) {
         if (sodest && NULL != (*sodest = curp->sodest)) {                  if (curp->man->meta.macroset == MACROSET_MDOC)
                 *man = NULL;                          mdoc_validate(curp->man);
                 return;                  else
                           man_validate(curp->man);
         }          }
         if (man)          return &curp->man->meta;
                 *man = curp->man;  
 }  }
   
 void  void

Legend:
Removed from v.1.208  
changed lines
  Added in v.1.209

CVSweb