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

Diff for /mandoc/Attic/macro.c between version 1.67 and 1.70

version 1.67, 2009/03/12 02:57:36 version 1.70, 2009/03/12 16:30:50
Line 40  static int   macro_text(MACRO_PROT_ARGS);
Line 40  static int   macro_text(MACRO_PROT_ARGS);
 static  int       macro_scoped(MACRO_PROT_ARGS);  static  int       macro_scoped(MACRO_PROT_ARGS);
 static  int       macro_scoped_close(MACRO_PROT_ARGS);  static  int       macro_scoped_close(MACRO_PROT_ARGS);
 static  int       macro_scoped_line(MACRO_PROT_ARGS);  static  int       macro_scoped_line(MACRO_PROT_ARGS);
 static  int       macro_phrase(struct mdoc *, int, char *);  static  int       macro_phrase(struct mdoc *, int, int, char *);
   
 #define REWIND_REWIND   (1 << 0)  #define REWIND_REWIND   (1 << 0)
 #define REWIND_NOHALT   (1 << 1)  #define REWIND_NOHALT   (1 << 1)
Line 89  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
Line 89  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
         { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */          { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */
         { macro_text, MDOC_PARSED }, /* An */          { macro_text, MDOC_PARSED }, /* An */
         { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */          { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */
         { macro_constant, 0 }, /* Cd */          { macro_constant, MDOC_CALLABLE }, /* Cd */
         { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */          { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */
         { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Dv */          { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Dv */
         { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Er */          { macro_text, MDOC_CALLABLE | MDOC_PARSED }, /* Er */
Line 188  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
Line 188  const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
         { macro_scoped_line, MDOC_CALLABLE | MDOC_PARSED }, /* Brq */          { macro_scoped_line, MDOC_CALLABLE | MDOC_PARSED }, /* Brq */
         { macro_constant_scoped, MDOC_CALLABLE | MDOC_PARSED | MDOC_EXPLICIT }, /* Bro */          { macro_constant_scoped, MDOC_CALLABLE | MDOC_PARSED | MDOC_EXPLICIT }, /* Bro */
         { macro_scoped_close, MDOC_EXPLICIT | MDOC_CALLABLE | MDOC_PARSED }, /* Brc */          { macro_scoped_close, MDOC_EXPLICIT | MDOC_CALLABLE | MDOC_PARSED }, /* Brc */
           { macro_constant, 0 }, /* %C */
 };  };
   
 const   struct mdoc_macro * const mdoc_macros = __mdoc_macros;  const   struct mdoc_macro * const mdoc_macros = __mdoc_macros;
Line 1004  macro_scoped(MACRO_PROT_ARGS)
Line 1005  macro_scoped(MACRO_PROT_ARGS)
                          * in the columnar output of a macro. They need                           * in the columnar output of a macro. They need
                          * special handling.                           * special handling.
                          */                           */
                         if ( ! macro_phrase(mdoc, line, p))                          if ( ! macro_phrase(mdoc, line, lastarg, buf))
                                 return(0);                                  return(0);
                         if ( ! rewind_subblock(MDOC_HEAD, mdoc, tok, line, ppos))                          if ( ! rewind_subblock(MDOC_HEAD, mdoc, tok, line, ppos))
                                 return(0);                                  return(0);
Line 1393  macro_constant(MACRO_PROT_ARGS)
Line 1394  macro_constant(MACRO_PROT_ARGS)
         struct mdoc_arg  *arg;          struct mdoc_arg  *arg;
         char             *p;          char             *p;
   
         assert( ! (MDOC_CALLABLE & mdoc_macros[tok].flags));  
   
         arg = NULL;          arg = NULL;
   
         for (;;) {          for (;;) {
Line 1459  macro_phrase(struct mdoc *mdoc, int line, int ppos, ch
Line 1458  macro_phrase(struct mdoc *mdoc, int line, int ppos, ch
 {  {
         int              i, la, c;          int              i, la, c;
   
         i = ppos;          for (i = ppos; buf[i]; ) {
                   assert(' ' != buf[i]);
   
 again:                  la = i;
         la = i;                  if ('\"' == buf[i]) {
         while (buf[i] && ! isspace((unsigned char)buf[i]))                          la = ++i;
                 i++;                          while (buf[i] && '\"' != buf[i])
                                   i++;
                           if (0 == buf[i])
                                   return(mdoc_err(mdoc, "unterminated quoted parameter"));
                   } else
                           while (buf[i] && ! isspace ((unsigned char)buf[i]))
                                   i++;
   
         if (0 == buf[i])                  if (buf[i])
                 return(mdoc_word_alloc(mdoc, line, la, buf));                          buf[i++] = 0;
   
         buf[i] = 0;                  while (buf[i] && isspace((unsigned char)buf[i]))
                           i++;
   
         if (MDOC_MAX == (c = mdoc_tokhash_find(mdoc->htab, p))) {                  if (MDOC_MAX != (c = mdoc_tokhash_find(mdoc->htab, &buf[la]))) {
                 if ( ! mdoc_word_alloc(mdoc, line,                          if ( ! mdoc_macro(mdoc, c, line, la, &i, buf))
                                   return(0);
                           return(append_delims(mdoc, line, &i, buf));
                   }
   
                   if ( ! mdoc_word_alloc(mdoc, line, la, &buf[la]))
                           return(0);
                   mdoc->next = MDOC_NEXT_SIBLING;
   
                   while (buf[i] && isspace((unsigned char)buf[i]))
                           i++;
         }          }
   
           return(1);
 }  }

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.70

CVSweb