[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.57 and 1.71

version 1.57, 2011/03/20 16:02:05 version 1.71, 2012/01/03 15:16:24
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
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 "libmandoc.h"
 #include "libman.h"  #include "libman.h"
Line 37  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 49  static void   rew_warn(struct man *, 
Line 52  static void   rew_warn(struct man *, 
   
 const   struct man_macro __man_macros[MAN_MAX] = {  const   struct man_macro __man_macros[MAN_MAX] = {
         { in_line_eoln, MAN_NSCOPED }, /* br */          { in_line_eoln, MAN_NSCOPED }, /* br */
         { in_line_eoln, 0 }, /* TH */          { in_line_eoln, MAN_BSCOPE }, /* TH */
         { blk_imp, MAN_SCOPED }, /* SH */          { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SH */
         { blk_imp, MAN_SCOPED }, /* SS */          { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SS */
         { blk_imp, MAN_SCOPED | MAN_FSCOPED }, /* TP */          { blk_imp, MAN_BSCOPE | MAN_SCOPED | MAN_FSCOPED }, /* TP */
         { blk_imp, 0 }, /* LP */          { blk_imp, MAN_BSCOPE }, /* LP */
         { blk_imp, 0 }, /* PP */          { blk_imp, MAN_BSCOPE }, /* PP */
         { blk_imp, 0 }, /* P */          { blk_imp, MAN_BSCOPE }, /* P */
         { blk_imp, 0 }, /* IP */          { blk_imp, MAN_BSCOPE }, /* IP */
         { blk_imp, 0 }, /* HP */          { blk_imp, MAN_BSCOPE }, /* HP */
         { in_line_eoln, MAN_SCOPED }, /* SM */          { in_line_eoln, MAN_SCOPED }, /* SM */
         { in_line_eoln, MAN_SCOPED }, /* SB */          { in_line_eoln, MAN_SCOPED }, /* SB */
         { in_line_eoln, 0 }, /* BI */          { in_line_eoln, 0 }, /* BI */
Line 71  const struct man_macro __man_macros[MAN_MAX] = {
Line 74  const struct man_macro __man_macros[MAN_MAX] = {
         { in_line_eoln, 0 }, /* RI */          { in_line_eoln, 0 }, /* RI */
         { in_line_eoln, MAN_NSCOPED }, /* na */          { in_line_eoln, MAN_NSCOPED }, /* na */
         { in_line_eoln, MAN_NSCOPED }, /* sp */          { in_line_eoln, MAN_NSCOPED }, /* sp */
         { in_line_eoln, 0 }, /* nf */          { in_line_eoln, MAN_BSCOPE }, /* nf */
         { in_line_eoln, 0 }, /* fi */          { in_line_eoln, MAN_BSCOPE }, /* fi */
         { blk_close, 0 }, /* RE */          { blk_close, 0 }, /* RE */
         { blk_exp, MAN_EXPLICIT }, /* RS */          { blk_exp, MAN_EXPLICIT }, /* RS */
         { in_line_eoln, 0 }, /* DT */          { in_line_eoln, 0 }, /* DT */
Line 81  const struct man_macro __man_macros[MAN_MAX] = {
Line 84  const struct man_macro __man_macros[MAN_MAX] = {
         { in_line_eoln, 0 }, /* AT */          { in_line_eoln, 0 }, /* AT */
         { in_line_eoln, 0 }, /* in */          { in_line_eoln, 0 }, /* in */
         { in_line_eoln, 0 }, /* ft */          { in_line_eoln, 0 }, /* ft */
           { in_line_eoln, 0 }, /* OP */
 };  };
   
 const   struct man_macro * const man_macros = __man_macros;  const   struct man_macro * const man_macros = __man_macros;
Line 117  man_unscope(struct man *m, const struct man_node *to, 
Line 121  man_unscope(struct man *m, const struct man_node *to, 
   
         assert(to);          assert(to);
   
           m->next = MAN_NEXT_SIBLING;
   
         /* LINTED */          /* LINTED */
         while (m->last != to) {          while (m->last != to) {
                 /*                  /*
Line 137  man_unscope(struct man *m, const struct man_node *to, 
Line 143  man_unscope(struct man *m, const struct man_node *to, 
         if ( ! man_valid_post(m))          if ( ! man_valid_post(m))
                 return(0);                  return(0);
   
         m->next = MAN_ROOT == m->last->type ?  
                 MAN_NEXT_CHILD : MAN_NEXT_SIBLING;  
   
         return(1);          return(1);
 }  }
   
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 304  blk_exp(MACRO_PROT_ARGS)
Line 307  blk_exp(MACRO_PROT_ARGS)
          * anywhere.           * anywhere.
          */           */
   
         if ( ! rew_scope(MAN_BODY, m, tok))  
                 return(0);  
         if ( ! rew_scope(MAN_BLOCK, m, tok))  
                 return(0);  
   
         if ( ! man_block_alloc(m, line, ppos, tok))          if ( ! man_block_alloc(m, line, ppos, tok))
                 return(0);                  return(0);
         if ( ! man_head_alloc(m, line, ppos, tok))          if ( ! man_head_alloc(m, line, ppos, tok))
Line 316  blk_exp(MACRO_PROT_ARGS)
Line 314  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 340  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 364  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 393  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 404  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 444  in_line_eoln(MACRO_PROT_ARGS)
Line 428  in_line_eoln(MACRO_PROT_ARGS)
                 assert( ! (MAN_SCOPED & man_macros[tok].flags));                  assert( ! (MAN_SCOPED & man_macros[tok].flags));
                 m->flags |= MAN_ILINE;                  m->flags |= MAN_ILINE;
         }          }
   
           assert(MAN_ROOT != m->last->type);
           m->next = MAN_NEXT_SIBLING;
   
         /*          /*
          * Rewind our element scope.  Note that when TH is pruned, we'll           * Rewind our element scope.  Note that when TH is pruned, we'll
Line 469  in_line_eoln(MACRO_PROT_ARGS)
Line 456  in_line_eoln(MACRO_PROT_ARGS)
         if (m->last->type != MAN_ROOT && ! man_valid_post(m))          if (m->last->type != MAN_ROOT && ! man_valid_post(m))
                 return(0);                  return(0);
   
         m->next = MAN_ROOT == m->last->type ?  
                 MAN_NEXT_CHILD : MAN_NEXT_SIBLING;  
   
         return(1);          return(1);
 }  }
   
Line 483  man_macroend(struct man *m)
Line 467  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.57  
changed lines
  Added in v.1.71

CVSweb