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

Diff for /mandoc/mdoc.c between version 1.213 and 1.219

version 1.213, 2014/04/20 16:46:05 version 1.219, 2014/07/07 15:03:43
Line 35 
Line 35 
 #include "libmdoc.h"  #include "libmdoc.h"
 #include "libmandoc.h"  #include "libmandoc.h"
   
 const   char *const __mdoc_macronames[MDOC_MAX] = {  const   char *const __mdoc_macronames[MDOC_MAX + 1] = {
         "Ap",           "Dd",           "Dt",           "Os",          "Ap",           "Dd",           "Dt",           "Os",
         "Sh",           "Ss",           "Pp",           "D1",          "Sh",           "Ss",           "Pp",           "D1",
         "Dl",           "Bd",           "Ed",           "Bl",          "Dl",           "Bd",           "Ed",           "Bl",
Line 66  const char *const __mdoc_macronames[MDOC_MAX] = {
Line 66  const char *const __mdoc_macronames[MDOC_MAX] = {
         "Lk",           "Mt",           "Brq",          "Bro",          "Lk",           "Mt",           "Brq",          "Bro",
         "Brc",          "%C",           "Es",           "En",          "Brc",          "%C",           "Es",           "En",
         "Dx",           "%Q",           "br",           "sp",          "Dx",           "%Q",           "br",           "sp",
         "%U",           "Ta",           "ll",          "%U",           "Ta",           "ll",           "text",
         };          };
   
 const   char *const __mdoc_argnames[MDOC_ARG_MAX] = {  const   char *const __mdoc_argnames[MDOC_ARG_MAX] = {
Line 227  mdoc_addeqn(struct mdoc *mdoc, const struct eqn *ep)
Line 227  mdoc_addeqn(struct mdoc *mdoc, const struct eqn *ep)
   
         assert( ! (MDOC_HALT & mdoc->flags));          assert( ! (MDOC_HALT & mdoc->flags));
   
         /* No text before an initial macro. */  
   
         if (SEC_NONE == mdoc->lastnamed) {  
                 mdoc_pmsg(mdoc, ep->ln, ep->pos, MANDOCERR_NOTEXT);  
                 return(1);  
         }  
   
         n = node_alloc(mdoc, ep->ln, ep->pos, MDOC_MAX, MDOC_EQN);          n = node_alloc(mdoc, ep->ln, ep->pos, MDOC_MAX, MDOC_EQN);
         n->eqn = ep;          n->eqn = ep;
   
Line 251  mdoc_addspan(struct mdoc *mdoc, const struct tbl_span 
Line 244  mdoc_addspan(struct mdoc *mdoc, const struct tbl_span 
   
         assert( ! (MDOC_HALT & mdoc->flags));          assert( ! (MDOC_HALT & mdoc->flags));
   
         /* No text before an initial macro. */  
   
         if (SEC_NONE == mdoc->lastnamed) {  
                 mdoc_pmsg(mdoc, sp->line, 0, MANDOCERR_NOTEXT);  
                 return(1);  
         }  
   
         n = node_alloc(mdoc, sp->line, 0, MDOC_MAX, MDOC_TBL);          n = node_alloc(mdoc, sp->line, 0, MDOC_MAX, MDOC_TBL);
         n->span = sp;          n->span = sp;
   
Line 305  mdoc_macro(MACRO_PROT_ARGS)
Line 291  mdoc_macro(MACRO_PROT_ARGS)
   
         if (MDOC_PROLOGUE & mdoc_macros[tok].flags &&          if (MDOC_PROLOGUE & mdoc_macros[tok].flags &&
             MDOC_PBODY & mdoc->flags) {              MDOC_PBODY & mdoc->flags) {
                 mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADBODY);                  mandoc_vmsg(MANDOCERR_PROLOG_ONLY, mdoc->parse,
                       line, ppos, "%s", mdoc_macronames[tok]);
                 return(1);                  return(1);
         }          }
   
Line 313  mdoc_macro(MACRO_PROT_ARGS)
Line 300  mdoc_macro(MACRO_PROT_ARGS)
   
         if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) &&          if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) &&
              ! (MDOC_PBODY & mdoc->flags)) {               ! (MDOC_PBODY & mdoc->flags)) {
                 mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADPROLOG);                  mandoc_vmsg(MANDOCERR_PROLOG_BAD, mdoc->parse,
                       line, ppos, "%s", mdoc_macronames[tok]);
                 if (NULL == mdoc->meta.msec)                  if (NULL == mdoc->meta.msec)
                         mdoc->meta.msec = mandoc_strdup("1");                          mdoc->meta.msec = mandoc_strdup("1");
                 if (NULL == mdoc->meta.title)                  if (NULL == mdoc->meta.title)
Line 514  mdoc_block_alloc(struct mdoc *mdoc, int line, int pos,
Line 502  mdoc_block_alloc(struct mdoc *mdoc, int line, int pos,
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case MDOC_Bl:          case MDOC_Bl:
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
           case MDOC_En:
                   /* FALLTHROUGH */
         case MDOC_Rs:          case MDOC_Rs:
                 p->norm = mandoc_calloc(1, sizeof(union mdoc_data));                  p->norm = mandoc_calloc(1, sizeof(union mdoc_data));
                 break;                  break;
Line 718  mdoc_ptext(struct mdoc *mdoc, int line, char *buf, int
Line 708  mdoc_ptext(struct mdoc *mdoc, int line, char *buf, int
         char             *c, *ws, *end;          char             *c, *ws, *end;
         struct mdoc_node *n;          struct mdoc_node *n;
   
         /* No text before an initial macro. */  
   
         if (SEC_NONE == mdoc->lastnamed) {  
                 mdoc_pmsg(mdoc, line, offs, MANDOCERR_NOTEXT);  
                 return(1);  
         }  
   
         assert(mdoc->last);          assert(mdoc->last);
         n = mdoc->last;          n = mdoc->last;
   
Line 793  mdoc_ptext(struct mdoc *mdoc, int line, char *buf, int
Line 776  mdoc_ptext(struct mdoc *mdoc, int line, char *buf, int
         *end = '\0';          *end = '\0';
   
         if (ws)          if (ws)
                 mdoc_pmsg(mdoc, line, (int)(ws-buf), MANDOCERR_EOLNSPACE);                  mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
                       line, (int)(ws-buf), NULL);
   
         if ('\0' == buf[offs] && ! (MDOC_LITERAL & mdoc->flags)) {          if ('\0' == buf[offs] && ! (MDOC_LITERAL & mdoc->flags)) {
                 mdoc_pmsg(mdoc, line, (int)(c-buf), MANDOCERR_NOBLANKLN);                  mandoc_msg(MANDOCERR_FI_BLANK, mdoc->parse,
                       line, (int)(c - buf), NULL);
   
                 /*                  /*
                  * Insert a `sp' in the case of a blank line.  Technically,                   * Insert a `sp' in the case of a blank line.  Technically,
Line 846  mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int 
Line 831  mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int 
         /* Empty post-control lines are ignored. */          /* Empty post-control lines are ignored. */
   
         if ('"' == buf[offs]) {          if ('"' == buf[offs]) {
                 mdoc_pmsg(mdoc, ln, offs, MANDOCERR_BADCOMMENT);                  mandoc_msg(MANDOCERR_COMMENT_BAD, mdoc->parse,
                       ln, offs, NULL);
                 return(1);                  return(1);
         } else if ('\0' == buf[offs])          } else if ('\0' == buf[offs])
                 return(1);                  return(1);
Line 865  mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int 
Line 851  mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int 
   
         mac[i] = '\0';          mac[i] = '\0';
   
         tok = (i > 1 || i < 4) ? mdoc_hash_find(mac) : MDOC_MAX;          tok = (i > 1 && i < 4) ? mdoc_hash_find(mac) : MDOC_MAX;
   
         if (MDOC_MAX == tok) {          if (MDOC_MAX == tok) {
                 mandoc_vmsg(MANDOCERR_MACRO, mdoc->parse,                  mandoc_vmsg(MANDOCERR_MACRO, mdoc->parse,
Line 889  mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int 
Line 875  mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int 
          */           */
   
         if ('\0' == buf[offs] && ' ' == buf[offs - 1])          if ('\0' == buf[offs] && ' ' == buf[offs - 1])
                 mdoc_pmsg(mdoc, ln, offs - 1, MANDOCERR_EOLNSPACE);                  mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
                       ln, offs - 1, NULL);
   
         /*          /*
          * If an initial macro or a list invocation, divert directly           * If an initial macro or a list invocation, divert directly

Legend:
Removed from v.1.213  
changed lines
  Added in v.1.219

CVSweb