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

Diff for /src/usr.bin/mandoc/mdoc.c between version 1.7 and 1.8

version 1.7, 2009/06/18 23:34:53 version 1.8, 2009/06/18 23:51:12
Line 97 
Line 97 
 static  int               macrowarn(struct mdoc *, int, const char *);  static  int               macrowarn(struct mdoc *, int, const char *);
 static  int               perr(struct mdoc *, int, int, enum merr);  static  int               perr(struct mdoc *, int, int, enum merr);
   
 #define verr(m, t) perr((m), (m)->last->line, (m)->last->pos, (t))  
   
 /*  
  * Get the first (root) node of the parse tree.  
  */  
 const struct mdoc_node *  const struct mdoc_node *
 mdoc_node(const struct mdoc *m)  mdoc_node(const struct mdoc *m)
 {  {
Line 118 
Line 113 
 }  }
   
   
   /*
    * Frees volatile resources (parse tree, meta-data, fields).
    */
 static void  static void
 mdoc_free1(struct mdoc *mdoc)  mdoc_free1(struct mdoc *mdoc)
 {  {
Line 137 
Line 135 
 }  }
   
   
   /*
    * Allocate all volatile resources (parse tree, meta-data, fields).
    */
 static int  static int
 mdoc_alloc1(struct mdoc *mdoc)  mdoc_alloc1(struct mdoc *mdoc)
 {  {
Line 156 
Line 157 
   
   
 /*  /*
  * Free up all resources contributed by a parse:  the node tree,   * Free up volatile resources (see mdoc_free1()) then re-initialises the
  * meta-data and so on.  Then reallocate the root node for another   * data with mdoc_alloc1().  After invocation, parse data has been reset
  * parse.   * and the parser is ready for re-invocation on a new tree; however,
    * cross-parse non-volatile data is kept intact.
  */   */
 int  int
 mdoc_reset(struct mdoc *mdoc)  mdoc_reset(struct mdoc *mdoc)
Line 170 
Line 172 
   
   
 /*  /*
  * Completely free up all resources.   * Completely free up all volatile and non-volatile parse resources.
    * After invocation, the pointer is no longer usable.
  */   */
 void  void
 mdoc_free(struct mdoc *mdoc)  mdoc_free(struct mdoc *mdoc)
Line 183 
Line 186 
 }  }
   
   
   /*
    * Allocate volatile and non-volatile parse resources.
    */
 struct mdoc *  struct mdoc *
 mdoc_alloc(void *data, int pflags, const struct mdoc_cb *cb)  mdoc_alloc(void *data, int pflags, const struct mdoc_cb *cb)
 {  {
Line 209 
Line 215 
   
 /*  /*
  * Climb back up the parse tree, validating open scopes.  Mostly calls   * Climb back up the parse tree, validating open scopes.  Mostly calls
  * through to macro_end in macro.c.   * through to macro_end() in macro.c.
  */   */
 int  int
 mdoc_endparse(struct mdoc *m)  mdoc_endparse(struct mdoc *m)
Line 226 
Line 232 
   
 /*  /*
  * Main parse routine.  Parses a single line -- really just hands off to   * Main parse routine.  Parses a single line -- really just hands off to
  * the macro or text parser.   * the macro (parsemacro()) or text parser (parsetext()).
  */   */
 int  int
 mdoc_parseln(struct mdoc *m, int ln, char *buf)  mdoc_parseln(struct mdoc *m, int ln, char *buf)
 {  {
   
         /* If in error-mode, then we parse no more. */  
   
         if (MDOC_HALT & m->flags)          if (MDOC_HALT & m->flags)
                 return(0);                  return(0);
   
Line 277 
Line 281 
   
   
 int  int
 mdoc_nerr(struct mdoc *mdoc, const struct mdoc_node *node, const char *fmt, ...)  mdoc_nerr(struct mdoc *mdoc, const struct mdoc_node *node,
                   const char *fmt, ...)
 {  {
         char             buf[256];          char             buf[256];
         va_list          ap;          va_list          ap;
Line 288 
Line 293 
         va_start(ap, fmt);          va_start(ap, fmt);
         (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);          (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);
         va_end(ap);          va_end(ap);
         return((*mdoc->cb.mdoc_err)(mdoc->data, node->line, node->pos, buf));          return((*mdoc->cb.mdoc_err)(mdoc->data,
                                   node->line, node->pos, buf));
 }  }
   
   
 int  int
 mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type, const char *fmt, ...)  mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type,
                   const char *fmt, ...)
 {  {
         char             buf[256];          char             buf[256];
         va_list          ap;          va_list          ap;
Line 305 
Line 312 
         (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);          (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);
         va_end(ap);          va_end(ap);
         return((*mdoc->cb.mdoc_warn)(mdoc->data, mdoc->last->line,          return((*mdoc->cb.mdoc_warn)(mdoc->data, mdoc->last->line,
             mdoc->last->pos, type, buf));                                  mdoc->last->pos, type, buf));
 }  }
   
   
Line 322 
Line 329 
         (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);          (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);
         va_end(ap);          va_end(ap);
         return((*mdoc->cb.mdoc_err)(mdoc->data, mdoc->last->line,          return((*mdoc->cb.mdoc_err)(mdoc->data, mdoc->last->line,
             mdoc->last->pos, buf));                                  mdoc->last->pos, buf));
 }  }
   
   
Line 339 
Line 346 
         va_start(ap, fmt);          va_start(ap, fmt);
         (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);          (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap);
         va_end(ap);          va_end(ap);
         return((*mdoc->cb.mdoc_warn)(mdoc->data, line, pos, type, buf));          return((*mdoc->cb.mdoc_warn)(mdoc->data,
                                   line, pos, type, buf));
 }  }
   
 int  int
Line 483 
Line 491 
         struct mdoc_node *p;          struct mdoc_node *p;
   
         if (NULL == (p = calloc(1, sizeof(struct mdoc_node)))) {          if (NULL == (p = calloc(1, sizeof(struct mdoc_node)))) {
                 (void)verr(mdoc, EMALLOC);                  (void)perr(mdoc, (mdoc)->last->line,
                                   (mdoc)->last->pos, EMALLOC);
                 return(NULL);                  return(NULL);
         }          }
   
Line 579 
Line 588 
         if (NULL == p)          if (NULL == p)
                 return(0);                  return(0);
         if (NULL == (p->string = strdup(word))) {          if (NULL == (p->string = strdup(word))) {
                 (void)verr(mdoc, EMALLOC);                  (void)perr(mdoc, (mdoc)->last->line,
                                   (mdoc)->last->pos, EMALLOC);
                 return(0);                  return(0);
         }          }
         return(node_append(mdoc, p));          return(node_append(mdoc, p));
Line 644 
Line 654 
                                 "unknown macro: %s%s",                                  "unknown macro: %s%s",
                                 buf, strlen(buf) > 3 ? "..." : ""));                                  buf, strlen(buf) > 3 ? "..." : ""));
 }  }
   
   
   
 /*  /*

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8