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

Diff for /mandoc/man_macro.c between version 1.55 and 1.60

version 1.55, 2011/01/12 16:55:22 version 1.60, 2011/03/23 15:33:57
Line 23 
Line 23 
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
   
   #include "man.h"
 #include "mandoc.h"  #include "mandoc.h"
   #include "libmandoc.h"
 #include "libman.h"  #include "libman.h"
   
 enum    rew {  enum    rew {
Line 36  static int   blk_close(MACRO_PROT_ARGS);
Line 38  static int   blk_close(MACRO_PROT_ARGS);
 static  int              blk_exp(MACRO_PROT_ARGS);  static  int              blk_exp(MACRO_PROT_ARGS);
 static  int              blk_imp(MACRO_PROT_ARGS);  static  int              blk_imp(MACRO_PROT_ARGS);
 static  int              in_line_eoln(MACRO_PROT_ARGS);  static  int              in_line_eoln(MACRO_PROT_ARGS);
   static  int              man_args(struct man *, int,
                                   int *, char *, char **);
   
 static  int              rew_scope(enum man_type,  static  int              rew_scope(enum man_type,
                                 struct man *, enum mant);                                  struct man *, enum mant);
Line 43  static enum rew  rew_dohalt(enum mant, enum man_type, 
Line 47  static enum rew  rew_dohalt(enum mant, enum man_type, 
                                 const struct man_node *);                                  const struct man_node *);
 static  enum rew         rew_block(enum mant, enum man_type,  static  enum rew         rew_block(enum mant, enum man_type,
                                 const struct man_node *);                                  const struct man_node *);
 static  int              rew_warn(struct man *,  static  void             rew_warn(struct man *,
                                 struct man_node *, enum mandocerr);                                  struct man_node *, enum mandocerr);
   
 const   struct man_macro __man_macros[MAN_MAX] = {  const   struct man_macro __man_macros[MAN_MAX] = {
Line 88  const struct man_macro * const man_macros = __man_macr
Line 92  const struct man_macro * const man_macros = __man_macr
 /*  /*
  * Warn when "n" is an explicit non-roff macro.   * Warn when "n" is an explicit non-roff macro.
  */   */
 static int  static void
 rew_warn(struct man *m, struct man_node *n, enum mandocerr er)  rew_warn(struct man *m, struct man_node *n, enum mandocerr er)
 {  {
   
         if (er == MANDOCERR_MAX || MAN_BLOCK != n->type)          if (er == MANDOCERR_MAX || MAN_BLOCK != n->type)
                 return(1);                  return;
         if (MAN_VALID & n->flags)          if (MAN_VALID & n->flags)
                 return(1);                  return;
         if ( ! (MAN_EXPLICIT & man_macros[n->tok].flags))          if ( ! (MAN_EXPLICIT & man_macros[n->tok].flags))
                 return(1);                  return;
         return(man_nmsg(m, n, er));  
           assert(er < MANDOCERR_FATAL);
           man_nmsg(m, n, er);
 }  }
   
   
Line 123  man_unscope(struct man *m, const struct man_node *to, 
Line 129  man_unscope(struct man *m, const struct man_node *to, 
                  * out to be lost.                   * out to be lost.
                  */                   */
                 n = m->last->parent;                  n = m->last->parent;
                 if ( ! rew_warn(m, m->last, er))                  rew_warn(m, m->last, er);
                         return(0);  
                 if ( ! man_valid_post(m))                  if ( ! man_valid_post(m))
                         return(0);                          return(0);
                 m->last = n;                  m->last = n;
                 assert(m->last);                  assert(m->last);
         }          }
   
         if ( ! rew_warn(m, m->last, er))          rew_warn(m, m->last, er);
                 return(0);  
         if ( ! man_valid_post(m))          if ( ! man_valid_post(m))
                 return(0);                  return(0);
   
Line 279  blk_close(MACRO_PROT_ARGS)
Line 283  blk_close(MACRO_PROT_ARGS)
                         break;                          break;
   
         if (NULL == nn)          if (NULL == nn)
                 if ( ! man_pmsg(m, line, ppos, MANDOCERR_NOSCOPE))                  man_pmsg(m, line, ppos, MANDOCERR_NOSCOPE);
                         return(0);  
   
         if ( ! rew_scope(MAN_BODY, m, ntok))          if ( ! rew_scope(MAN_BODY, m, ntok))
                 return(0);                  return(0);
Line 295  blk_close(MACRO_PROT_ARGS)
Line 298  blk_close(MACRO_PROT_ARGS)
 int  int
 blk_exp(MACRO_PROT_ARGS)  blk_exp(MACRO_PROT_ARGS)
 {  {
         int              w, la;          int              la;
         char            *p;          char            *p;
   
         /*          /*
Line 316  blk_exp(MACRO_PROT_ARGS)
Line 319  blk_exp(MACRO_PROT_ARGS)
   
         for (;;) {          for (;;) {
                 la = *pos;                  la = *pos;
                 w = man_args(m, line, pos, buf, &p);                  if ( ! man_args(m, line, pos, buf, &p))
   
                 if (-1 == w)  
                         return(0);  
                 if (0 == w)  
                         break;                          break;
   
                 if ( ! man_word_alloc(m, line, la, p))                  if ( ! man_word_alloc(m, line, la, p))
                         return(0);                          return(0);
         }          }
Line 347  blk_exp(MACRO_PROT_ARGS)
Line 345  blk_exp(MACRO_PROT_ARGS)
 int  int
 blk_imp(MACRO_PROT_ARGS)  blk_imp(MACRO_PROT_ARGS)
 {  {
         int              w, la;          int              la;
         char            *p;          char            *p;
         struct man_node *n;          struct man_node *n;
   
Line 371  blk_imp(MACRO_PROT_ARGS)
Line 369  blk_imp(MACRO_PROT_ARGS)
   
         for (;;) {          for (;;) {
                 la = *pos;                  la = *pos;
                 w = man_args(m, line, pos, buf, &p);                  if ( ! man_args(m, line, pos, buf, &p))
   
                 if (-1 == w)  
                         return(0);  
                 if (0 == w)  
                         break;                          break;
   
                 if ( ! man_word_alloc(m, line, la, p))                  if ( ! man_word_alloc(m, line, la, p))
                         return(0);                          return(0);
         }          }
Line 405  blk_imp(MACRO_PROT_ARGS)
Line 398  blk_imp(MACRO_PROT_ARGS)
 int  int
 in_line_eoln(MACRO_PROT_ARGS)  in_line_eoln(MACRO_PROT_ARGS)
 {  {
         int              w, la;          int              la;
         char            *p;          char            *p;
         struct man_node *n;          struct man_node *n;
   
Line 416  in_line_eoln(MACRO_PROT_ARGS)
Line 409  in_line_eoln(MACRO_PROT_ARGS)
   
         for (;;) {          for (;;) {
                 la = *pos;                  la = *pos;
                 w = man_args(m, line, pos, buf, &p);                  if ( ! man_args(m, line, pos, buf, &p))
   
                 if (-1 == w)  
                         return(0);  
                 if (0 == w)  
                         break;                          break;
                 if ( ! man_word_alloc(m, line, la, p))                  if ( ! man_word_alloc(m, line, la, p))
                         return(0);                          return(0);
Line 483  man_macroend(struct man *m)
Line 472  man_macroend(struct man *m)
         return(man_unscope(m, m->first, MANDOCERR_SCOPEEXIT));          return(man_unscope(m, m->first, MANDOCERR_SCOPEEXIT));
 }  }
   
   static int
   man_args(struct man *m, int line, int *pos, char *buf, char **v)
   {
           char     *start;
   
           assert(*pos);
           *v = start = buf + *pos;
           assert(' ' != *start);
   
           if ('\0' == *start)
                   return(0);
   
           *v = mandoc_getarg(m->parse, v, line, pos);
           return(1);
   }

Legend:
Removed from v.1.55  
changed lines
  Added in v.1.60

CVSweb