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

Diff for /mandoc/mdoc_macro.c between version 1.2 and 1.3

version 1.2, 2009/03/23 15:41:09 version 1.3, 2009/03/27 13:44:24
Line 800  blk_exp_close(MACRO_PROT_ARGS)
Line 800  blk_exp_close(MACRO_PROT_ARGS)
 static int  static int
 in_line(MACRO_PROT_ARGS)  in_line(MACRO_PROT_ARGS)
 {  {
         int               la, lastpunct, c, w;          int               la, lastpunct, c, w, cnt, d, call;
         struct mdoc_arg  *arg;          struct mdoc_arg  *arg;
         char             *p;          char             *p;
   
Line 812  in_line(MACRO_PROT_ARGS)
Line 812  in_line(MACRO_PROT_ARGS)
                         *pos = la;                          *pos = la;
                         break;                          break;
                 }                  }
   
                 if (ARGV_EOLN == c)                  if (ARGV_EOLN == c)
                         break;                          break;
                 if (ARGV_ARG == c)                  if (ARGV_ARG == c)
Line 822  in_line(MACRO_PROT_ARGS)
Line 821  in_line(MACRO_PROT_ARGS)
                 return(0);                  return(0);
         }          }
   
         if ( ! mdoc_elem_alloc(mdoc, line, ppos, tok, arg))          for (call = cnt = 0, lastpunct = 1;; ) {
                 return(0);  
         mdoc->next = MDOC_NEXT_CHILD;  
   
         for (lastpunct = 0;; ) {  
                 la = *pos;                  la = *pos;
                 w = mdoc_args(mdoc, line, pos, buf, tok, &p);                  w = mdoc_args(mdoc, line, pos, buf, tok, &p);
   
Line 847  in_line(MACRO_PROT_ARGS)
Line 842  in_line(MACRO_PROT_ARGS)
                 if (MDOC_MAX != c && -1 != c) {                  if (MDOC_MAX != c && -1 != c) {
                         if (0 == lastpunct && ! rew_elem(mdoc, tok))                          if (0 == lastpunct && ! rew_elem(mdoc, tok))
                                 return(0);                                  return(0);
                           if (0 == cnt) {
                                   if ( ! mdoc_elem_alloc(mdoc, line, ppos,
                                                           tok, arg))
                                           return(0);
                                   if ( ! rew_elem(mdoc, tok))
                                           return(0);
                                   mdoc->next = MDOC_NEXT_SIBLING;
                           }
                         c = mdoc_macro(mdoc, c, line, la, pos, buf);                          c = mdoc_macro(mdoc, c, line, la, pos, buf);
                         if (0 == c)                          if (0 == c)
                                 return(0);                                  return(0);
Line 858  in_line(MACRO_PROT_ARGS)
Line 861  in_line(MACRO_PROT_ARGS)
   
                 /* Non-quote-enclosed punctuation. */                  /* Non-quote-enclosed punctuation. */
   
                 if (ARGS_QWORD != w && mdoc_isdelim(p)) {                  d = mdoc_isdelim(p);
   
                   if (ARGS_QWORD != w && d) {
                         if (0 == lastpunct && ! rew_elem(mdoc, tok))                          if (0 == lastpunct && ! rew_elem(mdoc, tok))
                                 return(0);                                  return(0);
                         lastpunct = 1;                          lastpunct = 1;
                 } else if (lastpunct) {                  } else if (lastpunct) {
                         c = mdoc_elem_alloc(mdoc, line, ppos, tok, arg);                          c = mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
   
                         if (0 == c)                          if (0 == c)
                                 return(0);                                  return(0);
   
                         mdoc->next = MDOC_NEXT_CHILD;                          mdoc->next = MDOC_NEXT_CHILD;
                         lastpunct = 0;                          lastpunct = 0;
                 }                  }
   
                   if ( ! d)
                           cnt++;
                 if ( ! mdoc_word_alloc(mdoc, line, la, p))                  if ( ! mdoc_word_alloc(mdoc, line, la, p))
                         return(0);                          return(0);
                 mdoc->next = MDOC_NEXT_SIBLING;                  mdoc->next = MDOC_NEXT_SIBLING;
Line 879  in_line(MACRO_PROT_ARGS)
Line 884  in_line(MACRO_PROT_ARGS)
   
         if (0 == lastpunct && ! rew_elem(mdoc, tok))          if (0 == lastpunct && ! rew_elem(mdoc, tok))
                 return(0);                  return(0);
           if (0 == cnt) {
                   c = mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
                   if (0 == c)
                           return(0);
                   if ( ! rew_elem(mdoc, tok))
                           return(0);
           }
         if (ppos > 1)          if (ppos > 1)
                 return(1);                  return(1);
         return(append_delims(mdoc, line, pos, buf));          return(append_delims(mdoc, line, pos, buf));

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

CVSweb