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

Diff for /mandoc/main.c between version 1.75 and 1.76

version 1.75, 2010/05/16 00:04:46 version 1.76, 2010/05/16 10:59:36
Line 386  static void
Line 386  static void
 fdesc(struct curparse *curp)  fdesc(struct curparse *curp)
 {  {
         struct buf       ln, blk;          struct buf       ln, blk;
         int              i, pos, lnn, lnn_start, with_mmap;          int              i, pos, lnn, lnn_start, with_mmap, of;
         enum rofferr     re;          enum rofferr     re;
         struct man      *man;          struct man      *man;
         struct mdoc     *mdoc;          struct mdoc     *mdoc;
Line 467  fdesc(struct curparse *curp)
Line 467  fdesc(struct curparse *curp)
                                 goto bailout;                                  goto bailout;
                 ln.buf[pos] = '\0';                  ln.buf[pos] = '\0';
   
                 re = roff_parseln(roff, lnn_start, &ln.buf, &ln.sz);                  /*
                    * A significant amount of complexity is contained by
                    * the roff preprocessor.  It's line-oriented but can be
                    * expressed on one line, so we need at times to
                    * readjust our starting point and re-run it.  The roff
                    * preprocessor can also readjust the buffers with new
                    * data, so we pass them in wholesale.
                    */
   
                   of = 0;
                   do {
                           re = roff_parseln(roff, lnn_start,
                                           &ln.buf, &ln.sz, of, &of);
                   } while (ROFF_RERUN == re);
   
                 if (ROFF_IGN == re)                  if (ROFF_IGN == re)
                         continue;                          continue;
                 else if (ROFF_ERR == re)                  else if (ROFF_ERR == re)
                         goto bailout;                          goto bailout;
   
                 /* If unset, assign parser in pset(). */                  /*
                    * If input parsers have not been allocated, do so now.
                    * We keep these instanced betwen parsers, but set them
                    * locally per parse routine since we can use different
                    * parsers with each one.
                    */
   
                 if ( ! (man || mdoc) && ! pset(ln.buf, pos, curp, &man, &mdoc))                  if ( ! (man || mdoc))
                         goto bailout;                          if ( ! pset(ln.buf + of, pos - of, curp, &man, &mdoc))
                                   goto bailout;
   
                 /* Pass down into parsers. */                  /* Lastly, push down into the parsers themselves. */
   
                 if (man && ! man_parseln(man, lnn_start, ln.buf))                  if (man && ! man_parseln(man, lnn_start, ln.buf, of))
                         goto bailout;                          goto bailout;
                 if (mdoc && ! mdoc_parseln(mdoc, lnn_start, ln.buf))                  if (mdoc && ! mdoc_parseln(mdoc, lnn_start, ln.buf, of))
                         goto bailout;                          goto bailout;
         }          }
   
Line 492  fdesc(struct curparse *curp)
Line 512  fdesc(struct curparse *curp)
                 fprintf(stderr, "%s: Not a manual\n", curp->file);                  fprintf(stderr, "%s: Not a manual\n", curp->file);
                 goto bailout;                  goto bailout;
         }          }
   
           /* Clean up the parse routine ASTs. */
   
         if (mdoc && ! mdoc_endparse(mdoc))          if (mdoc && ! mdoc_endparse(mdoc))
                 goto bailout;                  goto bailout;

Legend:
Removed from v.1.75  
changed lines
  Added in v.1.76

CVSweb