[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.69 and 1.70

version 1.69, 2010/05/26 09:35:35 version 1.70, 2010/05/29 18:47:54
Line 754  blk_exp_close(MACRO_PROT_ARGS)
Line 754  blk_exp_close(MACRO_PROT_ARGS)
 static int  static int
 in_line(MACRO_PROT_ARGS)  in_line(MACRO_PROT_ARGS)
 {  {
         int              la, lastpunct, cnt, nc, nl;          int              la, scope, cnt, nc, nl;
         enum margverr    av;          enum margverr    av;
         enum mdoct       ntok;          enum mdoct       ntok;
         enum margserr    ac;          enum margserr    ac;
Line 805  in_line(MACRO_PROT_ARGS)
Line 805  in_line(MACRO_PROT_ARGS)
                 return(0);                  return(0);
         }          }
   
         for (cnt = 0, lastpunct = 1;; ) {          for (cnt = scope = 0;; ) {
                 la = *pos;                  la = *pos;
                 ac = mdoc_args(m, line, pos, buf, tok, &p);                  ac = mdoc_args(m, line, pos, buf, tok, &p);
   
Line 826  in_line(MACRO_PROT_ARGS)
Line 826  in_line(MACRO_PROT_ARGS)
                  */                   */
   
                 if (MDOC_MAX != ntok) {                  if (MDOC_MAX != ntok) {
                         if (0 == lastpunct && ! rew_elem(m, tok))                          if (scope && ! rew_elem(m, tok))
                                 return(0);                                  return(0);
                         if (nc && 0 == cnt) {                          if (nc && 0 == cnt) {
                                 if ( ! mdoc_elem_alloc(m, line, ppos, tok, arg))                                  if ( ! mdoc_elem_alloc(m, line, ppos, tok, arg))
Line 853  in_line(MACRO_PROT_ARGS)
Line 853  in_line(MACRO_PROT_ARGS)
   
                 d = ARGS_QWORD == ac ? DELIM_NONE : mdoc_isdelim(p);                  d = ARGS_QWORD == ac ? DELIM_NONE : mdoc_isdelim(p);
   
                 if (ARGS_QWORD != ac && DELIM_NONE != d) {                  if (DELIM_NONE != d) {
                         if (0 == lastpunct && ! rew_elem(m, tok))                          /*
                            * If we encounter closing punctuation, no word
                            * has been omitted, no scope is open, and we're
                            * allowed to have an empty element, then start
                            * a new scope.  `Ar', `Fl', and `Li', only do
                            * this once per invocation.  There may be more
                            * of these (all of them?).
                            */
                           if (0 == cnt && (nc || MDOC_Li == tok) &&
                                           DELIM_CLOSE == d && ! scope) {
                                   if ( ! mdoc_elem_alloc(m, line, ppos, tok, arg))
                                           return(0);
                                   if (MDOC_Ar == tok || MDOC_Li == tok ||
                                                   MDOC_Fl == tok)
                                           cnt++;
                                   scope = 1;
                           }
                           /*
                            * Close out our scope, if one is open, before
                            * any punctuation.
                            */
                           if (scope && ! rew_elem(m, tok))
                                 return(0);                                  return(0);
                         lastpunct = 1;                          scope = 0;
                 } else if (lastpunct) {                  } else if ( ! scope) {
                         if ( ! mdoc_elem_alloc(m, line, ppos, tok, arg))                          if ( ! mdoc_elem_alloc(m, line, ppos, tok, arg))
                                 return(0);                                  return(0);
                         lastpunct = 0;                          scope = 1;
                 }                  }
   
                 if (DELIM_NONE == d)                  if (DELIM_NONE == d)
Line 873  in_line(MACRO_PROT_ARGS)
Line 894  in_line(MACRO_PROT_ARGS)
                  * word so that the `-' can be added to each one without                   * word so that the `-' can be added to each one without
                  * having to parse out spaces.                   * having to parse out spaces.
                  */                   */
                 if (0 == lastpunct && MDOC_Fl == tok) {                  if (scope && MDOC_Fl == tok) {
                         if ( ! rew_elem(m, tok))                          if ( ! rew_elem(m, tok))
                                 return(0);                                  return(0);
                         lastpunct = 1;                          scope = 0;
                 }                  }
         }          }
   
         if (0 == lastpunct && ! rew_elem(m, tok))          if (scope && ! rew_elem(m, tok))
                 return(0);                  return(0);
   
         /*          /*

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

CVSweb