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

Diff for /mandoc/mdoc.c between version 1.127 and 1.133

version 1.127, 2010/05/08 10:25:27 version 1.133, 2010/05/15 16:24:37
Line 69  const char *const __mdoc_merrnames[MERRMAX] = {   
Line 69  const char *const __mdoc_merrnames[MERRMAX] = {   
         "prologue macro out of conventional order", /* EPROLOOO */          "prologue macro out of conventional order", /* EPROLOOO */
         "prologue macro repeated", /* EPROLREP */          "prologue macro repeated", /* EPROLREP */
         "invalid manual section", /* EBADMSEC */          "invalid manual section", /* EBADMSEC */
         "invalid section", /* EBADSEC */  
         "invalid font mode", /* EFONT */          "invalid font mode", /* EFONT */
         "invalid date syntax", /* EBADDATE */          "invalid date syntax", /* EBADDATE */
         "invalid number format", /* ENUMFMT */          "invalid number format", /* ENUMFMT */
Line 191  mdoc_free1(struct mdoc *mdoc)
Line 190  mdoc_free1(struct mdoc *mdoc)
                 free(mdoc->meta.arch);                  free(mdoc->meta.arch);
         if (mdoc->meta.vol)          if (mdoc->meta.vol)
                 free(mdoc->meta.vol);                  free(mdoc->meta.vol);
           if (mdoc->meta.msec)
                   free(mdoc->meta.msec);
 }  }
   
   
Line 289  mdoc_parseln(struct mdoc *m, int ln, char *buf)
Line 290  mdoc_parseln(struct mdoc *m, int ln, char *buf)
         if (MDOC_HALT & m->flags)          if (MDOC_HALT & m->flags)
                 return(0);                  return(0);
   
         return('.' == *buf ? mdoc_pmacro(m, ln, buf) :          m->flags |= MDOC_NEWLINE;
           return('.' == *buf ?
                           mdoc_pmacro(m, ln, buf) :
                         mdoc_ptext(m, ln, buf));                          mdoc_ptext(m, ln, buf));
 }  }
   
Line 453  node_alloc(struct mdoc *m, int line, int pos, 
Line 456  node_alloc(struct mdoc *m, int line, int pos, 
         p->pos = pos;          p->pos = pos;
         p->tok = tok;          p->tok = tok;
         p->type = type;          p->type = type;
           if (MDOC_NEWLINE & m->flags)
                   p->flags |= MDOC_LINE;
           m->flags &= ~MDOC_NEWLINE;
         return(p);          return(p);
 }  }
   
Line 689  mdoc_ptext(struct mdoc *m, int line, char *buf)
Line 694  mdoc_ptext(struct mdoc *m, int line, char *buf)
   
         /* Allocate the whole word. */          /* Allocate the whole word. */
   
         return(mdoc_word_alloc(m, line, 0, buf));          if ( ! mdoc_word_alloc(m, line, 0, buf))
                   return(0);
   
           /*
            * End-of-sentence check.  If the last character is an unescaped
            * EOS character, then flag the node as being the end of a
            * sentence.  The front-end will know how to interpret this.
            */
   
           /* FIXME: chain of close delims. */
   
           assert(i);
   
           if (mandoc_eos(buf, (size_t)i))
                   m->last->flags |= MDOC_EOS;
   
           return(1);
 }  }
   
   
Line 712  int
Line 733  int
 mdoc_pmacro(struct mdoc *m, int ln, char *buf)  mdoc_pmacro(struct mdoc *m, int ln, char *buf)
 {  {
         enum mdoct      tok;          enum mdoct      tok;
         int             i, j;          int             i, j, sv;
         char            mac[5];          char            mac[5];
   
         /* Empty lines are ignored. */          /* Empty lines are ignored. */
Line 732  mdoc_pmacro(struct mdoc *m, int ln, char *buf)
Line 753  mdoc_pmacro(struct mdoc *m, int ln, char *buf)
                         return(1);                          return(1);
         }          }
   
           sv = i;
   
         /* Copy the first word into a nil-terminated buffer. */          /* Copy the first word into a nil-terminated buffer. */
   
         for (j = 0; j < 4; j++, i++) {          for (j = 0; j < 4; j++, i++) {
Line 779  mdoc_pmacro(struct mdoc *m, int ln, char *buf)
Line 802  mdoc_pmacro(struct mdoc *m, int ln, char *buf)
          * Begin recursive parse sequence.  Since we're at the start of           * Begin recursive parse sequence.  Since we're at the start of
          * the line, we don't need to do callable/parseable checks.           * the line, we don't need to do callable/parseable checks.
          */           */
         if ( ! mdoc_macro(m, tok, ln, 1, &i, buf))          if ( ! mdoc_macro(m, tok, ln, sv, &i, buf))
                 goto err;                  goto err;
   
         return(1);          return(1);

Legend:
Removed from v.1.127  
changed lines
  Added in v.1.133

CVSweb