[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.162 and 1.163

version 1.162, 2015/02/01 16:47:39 version 1.163, 2015/02/01 17:30:45
Line 1340  blk_part_exp(MACRO_PROT_ARGS)
Line 1340  blk_part_exp(MACRO_PROT_ARGS)
         int               la, nl;          int               la, nl;
         enum margserr     ac;          enum margserr     ac;
         struct mdoc_node *head; /* keep track of head */          struct mdoc_node *head; /* keep track of head */
         struct mdoc_node *body; /* keep track of body */  
         char             *p;          char             *p;
   
         nl = MDOC_NEWLINE & mdoc->flags;          nl = MDOC_NEWLINE & mdoc->flags;
Line 1352  blk_part_exp(MACRO_PROT_ARGS)
Line 1351  blk_part_exp(MACRO_PROT_ARGS)
          */           */
   
         mdoc_block_alloc(mdoc, line, ppos, tok, NULL);          mdoc_block_alloc(mdoc, line, ppos, tok, NULL);
         for (head = body = NULL; ; ) {          head = NULL;
           for (;;) {
                 la = *pos;                  la = *pos;
                 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);                  ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
                 if (ac == ARGS_PUNCT || ac == ARGS_EOLN)                  if (ac == ARGS_PUNCT || ac == ARGS_EOLN)
Line 1362  blk_part_exp(MACRO_PROT_ARGS)
Line 1362  blk_part_exp(MACRO_PROT_ARGS)
   
                 if (head == NULL && ac != ARGS_QWORD &&                  if (head == NULL && ac != ARGS_QWORD &&
                     mdoc_isdelim(p) == DELIM_OPEN) {                      mdoc_isdelim(p) == DELIM_OPEN) {
                         assert(NULL == body);  
                         dword(mdoc, line, la, p, DELIM_OPEN, 0);                          dword(mdoc, line, la, p, DELIM_OPEN, 0);
                         continue;                          continue;
                 }                  }
   
                 if (head == NULL) {                  if (head == NULL) {
                         assert(body == NULL);  
                         head = mdoc_head_alloc(mdoc, line, ppos, tok);                          head = mdoc_head_alloc(mdoc, line, ppos, tok);
                 }                          if (tok == MDOC_Eo)  /* Not parsed. */
   
                 /*  
                  * `Eo' gobbles any data into the head, but most other  
                  * macros just immediately close out and begin the body.  
                  */  
   
                 if (body == NULL) {  
                         assert(head);  
                         /* No check whether it's a macro! */  
                         if (tok == MDOC_Eo)  
                                 dword(mdoc, line, la, p, DELIM_MAX, 0);                                  dword(mdoc, line, la, p, DELIM_MAX, 0);
                         rew_sub(MDOC_HEAD, mdoc, tok, line, ppos);                          rew_last(mdoc, head);
                         body = mdoc_body_alloc(mdoc, line, ppos, tok);                          mdoc_body_alloc(mdoc, line, ppos, tok);
                         if (tok == MDOC_Eo)                          if (tok == MDOC_Eo)
                                 continue;                                  continue;
                 }                  }
                 assert(head != NULL && body != NULL);  
   
                 if (macro_or_word(mdoc, tok, line, la, pos, buf, 1))                  if (macro_or_word(mdoc, tok, line, la, pos, buf, 1))
                         break;                          break;
Line 1395  blk_part_exp(MACRO_PROT_ARGS)
Line 1382  blk_part_exp(MACRO_PROT_ARGS)
   
         /* Clean-up to leave in a consistent state. */          /* Clean-up to leave in a consistent state. */
   
         if (head == NULL)          if (head == NULL) {
                 mdoc_head_alloc(mdoc, line, ppos, tok);                  rew_last(mdoc, mdoc_head_alloc(mdoc, line, ppos, tok));
   
         if (body == NULL) {  
                 rew_sub(MDOC_HEAD, mdoc, tok, line, ppos);  
                 mdoc_body_alloc(mdoc, line, ppos, tok);                  mdoc_body_alloc(mdoc, line, ppos, tok);
         }          }
         if (nl)          if (nl)

Legend:
Removed from v.1.162  
changed lines
  Added in v.1.163

CVSweb