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

Diff for /mandoc/Attic/macro.c between version 1.56 and 1.57

version 1.56, 2009/03/05 12:08:53 version 1.57, 2009/03/06 14:13:47
Line 184  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
Line 184  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
         { macro_constant, 0 }, /* Hf */          { macro_constant, 0 }, /* Hf */
         { macro_obsolete, 0 }, /* Fr */          { macro_obsolete, 0 }, /* Fr */
         { macro_constant, 0 }, /* Ud */          { macro_constant, 0 }, /* Ud */
           { macro_constant, 0 }, /* Lb */
 };  };
   
 const   struct mdoc_macro * const mdoc_macros = __mdoc_macros;  const   struct mdoc_macro * const mdoc_macros = __mdoc_macros;
Line 522  rewind_subblock(enum mdoc_type type, struct mdoc *mdoc
Line 523  rewind_subblock(enum mdoc_type type, struct mdoc *mdoc
                         break;                          break;
                 else if (rewind_dobreak(tok, n))                  else if (rewind_dobreak(tok, n))
                         continue;                          continue;
                 return(mdoc_perr(mdoc, line, ppos, "scope breaks prior %s", mdoc_node2a(n)));                  return(mdoc_perr(mdoc, line, ppos,
                           "scope breaks %s", MDOC_ROOT == n->type ?
                           "<root>" : mdoc_macronames[n->tok]));
         }          }
   
         assert(n);          assert(n);
Line 546  rewind_expblock(struct mdoc *mdoc, int tok, int line, 
Line 549  rewind_expblock(struct mdoc *mdoc, int tok, int line, 
                 else if (rewind_dobreak(tok, n))                  else if (rewind_dobreak(tok, n))
                         continue;                          continue;
                 return(mdoc_perr(mdoc, line, ppos,                  return(mdoc_perr(mdoc, line, ppos,
                                         "scope breaks prior %s",                          "scope breaks %s", MDOC_ROOT == n->type ?
                                         mdoc_node2a(n)));                          "<root>" : mdoc_macronames[n->tok]));
         }          }
   
         assert(n);          assert(n);
Line 571  rewind_impblock(struct mdoc *mdoc, int tok, int line, 
Line 574  rewind_impblock(struct mdoc *mdoc, int tok, int line, 
                 else if (rewind_dobreak(tok, n))                  else if (rewind_dobreak(tok, n))
                         continue;                          continue;
                 return(mdoc_perr(mdoc, line, ppos,                  return(mdoc_perr(mdoc, line, ppos,
                                         "scope breaks prior %s",                          "scope breaks %s", MDOC_ROOT == n->type ?
                                         mdoc_node2a(n)));                          "<root>" : mdoc_macronames[n->tok]));
         }          }
   
         assert(n);          assert(n);
Line 1183  static int
Line 1186  static int
 macro_constant_delimited(MACRO_PROT_ARGS)  macro_constant_delimited(MACRO_PROT_ARGS)
 {  {
         int               lastarg, flushed, j, c, maxargs, argc,          int               lastarg, flushed, j, c, maxargs, argc,
                           igndelim;                            igndelim, ignargs;
         struct mdoc_arg   argv[MDOC_LINEARG_MAX];          struct mdoc_arg   argv[MDOC_LINEARG_MAX];
         char             *p;          char             *p;
   
         lastarg = ppos;          lastarg = ppos;
         flushed = 0;          flushed = 0;
   
   
           /*
            * Maximum arguments per macro.  Some of these have none and
            * exit as soon as they're parsed.
            */
   
         switch (tok) {          switch (tok) {
         case (MDOC_No):          case (MDOC_No):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Ns):          case (MDOC_Ns):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (MDOC_Ux):          case (MDOC_Ux):
                 /* FALLTHROUGH */  
         case (MDOC_St):  
                 maxargs = 0;                  maxargs = 0;
                 break;                  break;
         default:          default:
Line 1205  macro_constant_delimited(MACRO_PROT_ARGS)
Line 1212  macro_constant_delimited(MACRO_PROT_ARGS)
                 break;                  break;
         }          }
   
           /*
            * Whether to ignore delimiter characters.  `Pf' accepts its
            * first token as a parameter no matter what it looks like (if
            * it's text).
            */
   
         switch (tok) {          switch (tok) {
         case (MDOC_Pf):          case (MDOC_Pf):
                 igndelim = 1;                  igndelim = 1;
Line 1214  macro_constant_delimited(MACRO_PROT_ARGS)
Line 1227  macro_constant_delimited(MACRO_PROT_ARGS)
                 break;                  break;
         }          }
   
         for (argc = 0; argc < MDOC_LINEARG_MAX; argc++) {          /*
                 lastarg = *pos;           * Whether to ignore arguments: `St', for example, handles its
                 c = mdoc_argv(mdoc, line, tok, &argv[argc], pos, buf);           * argument-like parameters as regular parameters.
                 if (ARGV_EOLN == c)           */
                         break;  
                 if (ARGV_WORD == c) {          switch (tok) {
                         *pos = lastarg;          case (MDOC_St):
                         break;                  ignargs = 1;
                 } else if (ARGV_ARG == c)                  break;
                         continue;          default:
                 mdoc_argv_free(argc, argv);                  ignargs = 0;
                 return(0);                  break;
         }          }
   
           argc = 0;
   
           if ( ! ignargs)
                   for ( ; argc < MDOC_LINEARG_MAX; argc++) {
                           lastarg = *pos;
                           c = mdoc_argv(mdoc, line, tok,
                                           &argv[argc], pos, buf);
                           if (ARGV_EOLN == c)
                                   break;
                           if (ARGV_WORD == c) {
                                   *pos = lastarg;
                                   break;
                           } else if (ARGV_ARG == c)
                                   continue;
                           mdoc_argv_free(argc, argv);
                           return(0);
                   }
   
         if (MDOC_LINEARG_MAX == argc) {          if (MDOC_LINEARG_MAX == argc) {
                 mdoc_argv_free(argc - 1, argv);                  mdoc_argv_free(argc - 1, argv);

Legend:
Removed from v.1.56  
changed lines
  Added in v.1.57

CVSweb