[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.147 and 1.148

version 1.147, 2014/11/26 19:22:51 version 1.148, 2014/11/27 22:27:56
Line 693  static int
Line 693  static int
 blk_exp_close(MACRO_PROT_ARGS)  blk_exp_close(MACRO_PROT_ARGS)
 {  {
         struct mdoc_node *body;         /* Our own body. */          struct mdoc_node *body;         /* Our own body. */
           struct mdoc_node *endbody;      /* Our own end marker. */
         struct mdoc_node *later;        /* A sub-block starting later. */          struct mdoc_node *later;        /* A sub-block starting later. */
         struct mdoc_node *n;            /* For searching backwards. */          struct mdoc_node *n;            /* For searching backwards. */
   
Line 719  blk_exp_close(MACRO_PROT_ARGS)
Line 720  blk_exp_close(MACRO_PROT_ARGS)
          * both of our own and of pending sub-blocks.           * both of our own and of pending sub-blocks.
          */           */
         atok = rew_alt(tok);          atok = rew_alt(tok);
         body = later = NULL;          body = endbody = later = NULL;
         for (n = mdoc->last; n; n = n->parent) {          for (n = mdoc->last; n; n = n->parent) {
                 if (MDOC_VALID & n->flags)                  if (MDOC_VALID & n->flags)
                         continue;                          continue;
Line 758  blk_exp_close(MACRO_PROT_ARGS)
Line 759  blk_exp_close(MACRO_PROT_ARGS)
                         if ( ! mdoc_endbody_alloc(mdoc, line, ppos,                          if ( ! mdoc_endbody_alloc(mdoc, line, ppos,
                             atok, body, ENDBODY_SPACE))                              atok, body, ENDBODY_SPACE))
                                 return(0);                                  return(0);
                           if (maxargs) {
                                   endbody = mdoc->last;
                                   mdoc->next = MDOC_NEXT_CHILD;
                           }
                         break;                          break;
                 }                  }
   
Line 787  blk_exp_close(MACRO_PROT_ARGS)
Line 792  blk_exp_close(MACRO_PROT_ARGS)
         if ( ! rew_sub(MDOC_BODY, mdoc, tok, line, ppos))          if ( ! rew_sub(MDOC_BODY, mdoc, tok, line, ppos))
                 return(0);                  return(0);
   
         if (NULL == later && maxargs > 0)          if (maxargs && endbody == NULL) {
                 if ( ! mdoc_tail_alloc(mdoc, line, ppos, rew_alt(tok)))                  if (n == NULL) {
                           /*
                            * Stray .Ec without previous .Eo:
                            * Break the output line, ignore any arguments.
                            */
                           if ( ! mdoc_elem_alloc(mdoc, line, ppos,
                               MDOC_br, NULL))
                                   return(0);
                           if ( ! rew_elem(mdoc, MDOC_br))
                                   return(0);
                   } else if ( ! mdoc_tail_alloc(mdoc, line, ppos, atok))
                         return(0);                          return(0);
           }
   
         for (flushed = j = 0; ; j++) {          flushed = n == NULL;
           for (j = 0; ; j++) {
                 lastarg = *pos;                  lastarg = *pos;
   
                 if (j == maxargs && ! flushed) {                  if (j == maxargs && ! flushed) {
                         if ( ! rew_sub(MDOC_BLOCK, mdoc, tok, line, ppos))                          if ( ! (endbody != NULL ? rew_last(mdoc, endbody) :
                               rew_sub(MDOC_BLOCK, mdoc, tok, line, ppos)))
                                 return(0);                                  return(0);
                         flushed = 1;                          flushed = 1;
                 }                  }
Line 819  blk_exp_close(MACRO_PROT_ARGS)
Line 837  blk_exp_close(MACRO_PROT_ARGS)
                 }                  }
   
                 if ( ! flushed) {                  if ( ! flushed) {
                         if ( ! rew_sub(MDOC_BLOCK, mdoc, tok, line, ppos))                          if ( ! (endbody != NULL ? rew_last(mdoc, endbody) :
                               rew_sub(MDOC_BLOCK, mdoc, tok, line, ppos)))
                                 return(0);                                  return(0);
                         flushed = 1;                          flushed = 1;
                 }                  }
Line 831  blk_exp_close(MACRO_PROT_ARGS)
Line 850  blk_exp_close(MACRO_PROT_ARGS)
                 break;                  break;
         }          }
   
         if ( ! flushed && ! rew_sub(MDOC_BLOCK, mdoc, tok, line, ppos))          if ( ! flushed && ! (endbody != NULL ? rew_last(mdoc, endbody) :
               rew_sub(MDOC_BLOCK, mdoc, tok, line, ppos)))
                 return(0);                  return(0);
   
         if ( ! nl)          if ( ! nl)

Legend:
Removed from v.1.147  
changed lines
  Added in v.1.148

CVSweb