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

Diff for /mandoc/Attic/macro.c between version 1.62 and 1.66

version 1.62, 2009/03/08 20:57:35 version 1.66, 2009/03/11 00:39:58
Line 21 
Line 21 
 #include <stdlib.h>  #include <stdlib.h>
 #include <stdio.h>  #include <stdio.h>
 #include <string.h>  #include <string.h>
 #ifdef  __linux__  
 #include <time.h>  
 #endif  
   
   #include "private.h"
   
 /*  /*
  * This has scanning/parsing routines, each of which extract a macro and   * This has scanning/parsing routines, each of which extract a macro and
  * its arguments and parameters, then know how to progress to the next   * its arguments and parameters, then know how to progress to the next
  * macro.   * macro.
  */   */
   
 #include "private.h"  /* FIXME: .Fl, .Ar, .Cd handling of `|'. */
   
 static int        macro_obsolete(MACRO_PROT_ARGS);  static int        macro_obsolete(MACRO_PROT_ARGS);
 static int        macro_constant(MACRO_PROT_ARGS);  static int        macro_constant(MACRO_PROT_ARGS);
Line 183  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
Line 182  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
         { macro_constant, 0 }, /* Lb */          { macro_constant, 0 }, /* Lb */
         { macro_constant_delimited, MDOC_CALLABLE | MDOC_PARSED }, /* Ap */          { macro_constant_delimited, MDOC_CALLABLE | MDOC_PARSED }, /* Ap */
         { macro_text, 0 }, /* Lp */          { macro_text, 0 }, /* Lp */
           { macro_text, MDOC_PARSED }, /* Lk */
           { macro_text, MDOC_PARSED }, /* Mt */
           { macro_scoped_line, MDOC_CALLABLE | MDOC_PARSED }, /* Brq */
           { macro_constant_scoped, MDOC_CALLABLE | MDOC_PARSED | MDOC_EXPLICIT }, /* Bro */
           { macro_scoped_close, MDOC_EXPLICIT | MDOC_CALLABLE | MDOC_PARSED }, /* Brc */
 };  };
   
 const   struct mdoc_macro * const mdoc_macros = __mdoc_macros;  const   struct mdoc_macro * const mdoc_macros = __mdoc_macros;
Line 325  rewind_alt(int tok)
Line 329  rewind_alt(int tok)
                 return(MDOC_Ao);                  return(MDOC_Ao);
         case (MDOC_Bc):          case (MDOC_Bc):
                 return(MDOC_Bo);                  return(MDOC_Bo);
           case (MDOC_Brc):
                   return(MDOC_Bro);
         case (MDOC_Dc):          case (MDOC_Dc):
                 return(MDOC_Do);                  return(MDOC_Do);
         case (MDOC_Ec):          case (MDOC_Ec):
Line 374  rewind_dohalt(int tok, enum mdoc_type type, const stru
Line 380  rewind_dohalt(int tok, enum mdoc_type type, const stru
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Bq):          case (MDOC_Bq):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
           case (MDOC_Brq):
                   /* FALLTHROUGH */
         case (MDOC_D1):          case (MDOC_D1):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Dl):          case (MDOC_Dl):
Line 428  rewind_dohalt(int tok, enum mdoc_type type, const stru
Line 436  rewind_dohalt(int tok, enum mdoc_type type, const stru
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Bo):          case (MDOC_Bo):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
           case (MDOC_Bro):
                   /* FALLTHROUGH */
         case (MDOC_Do):          case (MDOC_Do):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Eo):          case (MDOC_Eo):
Line 454  rewind_dohalt(int tok, enum mdoc_type type, const stru
Line 464  rewind_dohalt(int tok, enum mdoc_type type, const stru
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Bc):          case (MDOC_Bc):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
           case (MDOC_Brc):
                   /* FALLTHROUGH */
         case (MDOC_Dc):          case (MDOC_Dc):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Ec):          case (MDOC_Ec):
Line 799  macro_text(MACRO_PROT_ARGS)
Line 811  macro_text(MACRO_PROT_ARGS)
         for (;;) {          for (;;) {
                 la = *pos;                  la = *pos;
                 w = mdoc_args(mdoc, line, pos, buf, tok, &p);                  w = mdoc_args(mdoc, line, pos, buf, tok, &p);
                 assert(ARGS_PHRASE != c);                  assert(ARGS_PHRASE != w);
   
                 if (ARGS_ERROR == w)                  if (ARGS_ERROR == w)
                         return(0);                          return(0);
Line 808  macro_text(MACRO_PROT_ARGS)
Line 820  macro_text(MACRO_PROT_ARGS)
                 if (ARGS_PUNCT == w)                  if (ARGS_PUNCT == w)
                         break;                          break;
   
                   /* Quoted words shouldn't be looked-up. */
   
                 c = ARGS_QWORD == w ? MDOC_MAX :                  c = ARGS_QWORD == w ? MDOC_MAX :
                         lookup(mdoc, line, la, tok, p);                          lookup(mdoc, line, la, tok, p);
   
                   /* MDOC_MAX (not a macro) or -1 (error). */
   
                 if (MDOC_MAX != c && -1 != c) {                  if (MDOC_MAX != c && -1 != c) {
                         if (0 == lastpunct && ! rewind_elem(mdoc, tok))                          if (0 == lastpunct && ! rewind_elem(mdoc, tok))
                                 return(0);                                  return(0);
Line 823  macro_text(MACRO_PROT_ARGS)
Line 839  macro_text(MACRO_PROT_ARGS)
                 } else if (-1 == c)                  } else if (-1 == c)
                         return(0);                          return(0);
   
                 /* FIXME: .Fl and .Ar handling of `|'. */                  /* Non-quote-enclosed punctuation. */
   
                 if (ARGS_QWORD != w && mdoc_isdelim(p)) {                  if (ARGS_QWORD != w && mdoc_isdelim(p)) {
                         if (0 == lastpunct && ! rewind_elem(mdoc, tok))                          if (0 == lastpunct && ! rewind_elem(mdoc, tok))

Legend:
Removed from v.1.62  
changed lines
  Added in v.1.66

CVSweb