[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.68

version 1.67, 2009/03/12 02:57:36 version 1.68, 2009/03/12 06:32:17
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 1004  macro_scoped(MACRO_PROT_ARGS)
Line 1004  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 1459  macro_phrase(struct mdoc *mdoc, int line, int ppos, ch
Line 1459  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(1);
                   }
   
                   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.68

CVSweb