[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.138 and 1.142

version 1.138, 2014/07/30 17:06:26 version 1.142, 2014/08/21 12:57:17
Line 15 
Line 15 
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
 #ifdef HAVE_CONFIG_H  
 #include "config.h"  #include "config.h"
 #endif  
   
   #include <sys/types.h>
   
 #include <assert.h>  #include <assert.h>
 #include <ctype.h>  #include <ctype.h>
 #include <stdlib.h>  #include <stdlib.h>
Line 843  blk_exp_close(MACRO_PROT_ARGS)
Line 843  blk_exp_close(MACRO_PROT_ARGS)
 static int  static int
 in_line(MACRO_PROT_ARGS)  in_line(MACRO_PROT_ARGS)
 {  {
         int              la, scope, cnt, nc, nl;          int              la, scope, cnt, mayopen, nc, nl;
         enum margverr    av;          enum margverr    av;
         enum mdoct       ntok;          enum mdoct       ntok;
         enum margserr    ac;          enum margserr    ac;
Line 894  in_line(MACRO_PROT_ARGS)
Line 894  in_line(MACRO_PROT_ARGS)
                 return(0);                  return(0);
         }          }
   
           mayopen = 1;
         for (cnt = scope = 0;; ) {          for (cnt = scope = 0;; ) {
                 la = *pos;                  la = *pos;
                 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);                  ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
Line 950  in_line(MACRO_PROT_ARGS)
Line 951  in_line(MACRO_PROT_ARGS)
                          * If we encounter closing punctuation, no word                           * If we encounter closing punctuation, no word
                          * has been omitted, no scope is open, and we're                           * has been omitted, no scope is open, and we're
                          * allowed to have an empty element, then start                           * allowed to have an empty element, then start
                          * a new scope.  `Ar', `Fl', and `Li', only do                           * a new scope.
                          * this once per invocation.  There may be more  
                          * of these (all of them?).  
                          */                           */
                         if (0 == cnt && (nc || MDOC_Li == tok) &&                          if ((d == DELIM_CLOSE ||
                             DELIM_CLOSE == d && ! scope) {                               (d == DELIM_MIDDLE && tok == MDOC_Fl)) &&
                               (nc || tok == MDOC_Li) &&
                               !scope && !cnt && mayopen) {
                                 if ( ! mdoc_elem_alloc(mdoc,                                  if ( ! mdoc_elem_alloc(mdoc,
                                     line, ppos, tok, arg))                                      line, ppos, tok, arg))
                                         return(0);                                          return(0);
                                 if (MDOC_Ar == tok || MDOC_Li == tok ||  
                                     MDOC_Fl == tok)  
                                         cnt++;  
                                 scope = 1;                                  scope = 1;
                                   cnt++;
                                   if (MDOC_Li == tok || MDOC_Nm == tok)
                                           mayopen = 0;
                         }                          }
                         /*                          /*
                          * Close out our scope, if one is open, before                           * Close out our scope, if one is open, before
Line 971  in_line(MACRO_PROT_ARGS)
Line 972  in_line(MACRO_PROT_ARGS)
                         if (scope && ! rew_elem(mdoc, tok))                          if (scope && ! rew_elem(mdoc, tok))
                                 return(0);                                  return(0);
                         scope = 0;                          scope = 0;
                 } else if ( ! scope) {                  } else if (mayopen && !scope) {
                         if ( ! mdoc_elem_alloc(mdoc, line, ppos, tok, arg))                          if ( ! mdoc_elem_alloc(mdoc, line, ppos, tok, arg))
                                 return(0);                                  return(0);
                         scope = 1;                          scope = 1;
                           cnt++;
                 }                  }
   
                 if (DELIM_NONE == d)  
                         cnt++;  
   
                 if ( ! dword(mdoc, line, la, p, d,                  if ( ! dword(mdoc, line, la, p, d,
                     MDOC_JOIN & mdoc_macros[tok].flags))                      MDOC_JOIN & mdoc_macros[tok].flags))
                         return(0);                          return(0);
Line 1041  blk_full(MACRO_PROT_ARGS)
Line 1040  blk_full(MACRO_PROT_ARGS)
   
         if (tok == MDOC_It) {          if (tok == MDOC_It) {
                 for (n = mdoc->last; n; n = n->parent)                  for (n = mdoc->last; n; n = n->parent)
                         if (n->tok == MDOC_Bl)                          if (n->tok == MDOC_Bl &&
                               ! (n->flags & MDOC_VALID))
                                 break;                                  break;
                 if (n == NULL) {                  if (n == NULL) {
                         mandoc_vmsg(MANDOCERR_IT_STRAY, mdoc->parse,                          mandoc_vmsg(MANDOCERR_IT_STRAY, mdoc->parse,
Line 1785  phrase_ta(MACRO_PROT_ARGS)
Line 1785  phrase_ta(MACRO_PROT_ARGS)
                 n = n->parent;                  n = n->parent;
         if (NULL == n || LIST_column != n->norm->Bl.type) {          if (NULL == n || LIST_column != n->norm->Bl.type) {
                 mandoc_msg(MANDOCERR_TA_STRAY, mdoc->parse,                  mandoc_msg(MANDOCERR_TA_STRAY, mdoc->parse,
                     line, ppos, NULL);                      line, ppos, "Ta");
                 return(1);                  return(1);
         }          }
   

Legend:
Removed from v.1.138  
changed lines
  Added in v.1.142

CVSweb