[BACK]Return to mdoc_validate.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mandoc

Diff for /src/usr.bin/mandoc/mdoc_validate.c between version 1.160 and 1.161

version 1.160, 2014/08/08 16:11:10 version 1.161, 2014/08/08 16:17:09
Line 110 
Line 110 
 static  int      post_ns(POST_ARGS);  static  int      post_ns(POST_ARGS);
 static  int      post_os(POST_ARGS);  static  int      post_os(POST_ARGS);
 static  int      post_par(POST_ARGS);  static  int      post_par(POST_ARGS);
 static  int      post_prol(POST_ARGS);  
 static  int      post_root(POST_ARGS);  static  int      post_root(POST_ARGS);
 static  int      post_rs(POST_ARGS);  static  int      post_rs(POST_ARGS);
 static  int      post_sh(POST_ARGS);  static  int      post_sh(POST_ARGS);
Line 839 
Line 838 
 pre_dt(PRE_ARGS)  pre_dt(PRE_ARGS)
 {  {
   
         if (NULL == mdoc->meta.date || mdoc->meta.os)          if (mdoc->meta.title != NULL)
                 mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,  
                     n->line, n->pos, "Dt");  
   
         if (mdoc->meta.title)  
                 mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,                  mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,
                     n->line, n->pos, "Dt");                      n->line, n->pos, "Dt");
           else if (mdoc->meta.os != NULL)
                   mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,
                       n->line, n->pos, "Dt after Os");
         return(1);          return(1);
 }  }
   
Line 854 
Line 851 
 pre_os(PRE_ARGS)  pre_os(PRE_ARGS)
 {  {
   
         if (NULL == mdoc->meta.title || NULL == mdoc->meta.date)          if (mdoc->meta.os != NULL)
                 mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,  
                     n->line, n->pos, "Os");  
   
         if (mdoc->meta.os)  
                 mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,                  mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,
                     n->line, n->pos, "Os");                      n->line, n->pos, "Os");
           else if (mdoc->flags & MDOC_PBODY)
                   mandoc_msg(MANDOCERR_PROLOG_LATE, mdoc->parse,
                       n->line, n->pos, "Os");
         return(1);          return(1);
 }  }
   
Line 869 
Line 864 
 pre_dd(PRE_ARGS)  pre_dd(PRE_ARGS)
 {  {
   
         if (mdoc->meta.title || mdoc->meta.os)          if (mdoc->meta.date != NULL)
                 mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,  
                     n->line, n->pos, "Dd");  
   
         if (mdoc->meta.date)  
                 mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,                  mandoc_msg(MANDOCERR_PROLOG_REP, mdoc->parse,
                     n->line, n->pos, "Dd");                      n->line, n->pos, "Dd");
           else if (mdoc->flags & MDOC_PBODY)
                   mandoc_msg(MANDOCERR_PROLOG_LATE, mdoc->parse,
                       n->line, n->pos, "Dd");
           else if (mdoc->meta.title != NULL)
                   mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,
                       n->line, n->pos, "Dd after Dt");
           else if (mdoc->meta.os != NULL)
                   mandoc_msg(MANDOCERR_PROLOG_ORDER, mdoc->parse,
                       n->line, n->pos, "Dd after Os");
         return(1);          return(1);
 }  }
   
Line 1623 
Line 1622 
   
         /* Add missing prologue data. */          /* Add missing prologue data. */
   
         if ( ! (MDOC_PBODY & mdoc->flags)) {          if (mdoc->meta.date == NULL)
                 mandoc_msg(MANDOCERR_PROLOG_BAD, mdoc->parse, 0, 0, "EOF");                  mdoc->meta.date = mdoc->quick ?
                 if (mdoc->meta.date == NULL)                      mandoc_strdup("") :
                         mdoc->meta.date = mdoc->quick ?                      mandoc_normdate(mdoc->parse, NULL, 0, 0);
                             mandoc_strdup("") :  
                             mandoc_normdate(mdoc->parse, NULL, 0, 0);          if (mdoc->meta.title == NULL) {
                 if (mdoc->meta.title == NULL)                  mandoc_msg(MANDOCERR_DT_NOTITLE,
                         mdoc->meta.title = mandoc_strdup("UNKNOWN");                      mdoc->parse, 0, 0, "EOF");
                 if (mdoc->meta.vol == NULL)                  mdoc->meta.title = mandoc_strdup("UNTITLED");
                         mdoc->meta.vol = mandoc_strdup("LOCAL");  
                 if (mdoc->meta.arch == NULL)  
                         mdoc->meta.msec = mandoc_strdup("1");  
                 if (mdoc->meta.os == NULL)  
                         mdoc->meta.os = mandoc_strdup("UNKNOWN");  
         }          }
   
           if (mdoc->meta.vol == NULL)
                   mdoc->meta.vol = mandoc_strdup("LOCAL");
   
           if (mdoc->meta.os == NULL) {
                   mandoc_msg(MANDOCERR_OS_MISSING,
                       mdoc->parse, 0, 0, NULL);
                   mdoc->meta.os = mandoc_strdup("");
           }
   
         n = mdoc->first;          n = mdoc->first;
         assert(n);          assert(n);
   
Line 1973 
Line 1976 
   
         /* Check particular section/manual conventions. */          /* Check particular section/manual conventions. */
   
         assert(mdoc->meta.msec);          if (mdoc->meta.msec == NULL) {
                   free(secname);
                   return(1);
           }
   
         goodsec = NULL;          goodsec = NULL;
         switch (sec) {          switch (sec) {
Line 2152 
Line 2158 
         if (NULL == n->child || '\0' == n->child->string[0]) {          if (NULL == n->child || '\0' == n->child->string[0]) {
                 mdoc->meta.date = mdoc->quick ? mandoc_strdup("") :                  mdoc->meta.date = mdoc->quick ? mandoc_strdup("") :
                     mandoc_normdate(mdoc->parse, NULL, n->line, n->pos);                      mandoc_normdate(mdoc->parse, NULL, n->line, n->pos);
                 return(post_prol(mdoc));                  goto out;
         }          }
   
         datestr = NULL;          datestr = NULL;
Line 2164 
Line 2170 
                     datestr, n->line, n->pos);                      datestr, n->line, n->pos);
                 free(datestr);                  free(datestr);
         }          }
         return(post_prol(mdoc));  out:
           mdoc_node_delete(mdoc, n);
           return(1);
 }  }
   
 static int  static int
Line 2176 
Line 2184 
   
         n = mdoc->last;          n = mdoc->last;
   
         if (mdoc->meta.title)          free(mdoc->meta.title);
                 free(mdoc->meta.title);          free(mdoc->meta.msec);
         if (mdoc->meta.vol)          free(mdoc->meta.vol);
                 free(mdoc->meta.vol);          free(mdoc->meta.arch);
         if (mdoc->meta.arch)  
                 free(mdoc->meta.arch);  
   
         mdoc->meta.title = mdoc->meta.vol = mdoc->meta.arch = NULL;          mdoc->meta.title = NULL;
           mdoc->meta.msec = NULL;
           mdoc->meta.vol = NULL;
           mdoc->meta.arch = NULL;
   
         /* First check that all characters are uppercase. */          /* First check that all characters are uppercase. */
   
Line 2198 
Line 2207 
                         break;                          break;
                 }                  }
   
         /* Handles: `.Dt'          /* No argument: msec and arch remain NULL. */
          * title = unknown, volume = local, msec = 0, arch = NULL  
          */  
   
         if (NULL == (nn = n->child)) {          if (NULL == (nn = n->child)) {
                 /* XXX: make these macro values. */                  mandoc_msg(MANDOCERR_DT_NOTITLE,
                 /* FIXME: warn about missing values. */                      mdoc->parse, n->line, n->pos, "Dt");
                 mdoc->meta.title = mandoc_strdup("UNKNOWN");                  mdoc->meta.title = mandoc_strdup("UNTITLED");
                 mdoc->meta.vol = mandoc_strdup("LOCAL");                  mdoc->meta.vol = mandoc_strdup("LOCAL");
                 mdoc->meta.msec = mandoc_strdup("1");                  goto out;
                 return(post_prol(mdoc));  
         }          }
   
         /* Handles: `.Dt TITLE'          /* One argument: msec and arch remain NULL. */
          * title = TITLE, volume = local, msec = 0, arch = NULL  
          */  
   
         mdoc->meta.title = mandoc_strdup(          mdoc->meta.title = mandoc_strdup(
             '\0' == nn->string[0] ? "UNKNOWN" : nn->string);              '\0' == nn->string[0] ? "UNTITLED" : nn->string);
   
         if (NULL == (nn = nn->next)) {          if (NULL == (nn = nn->next)) {
                 /* FIXME: warn about missing msec. */                  mandoc_vmsg(MANDOCERR_MSEC_MISSING,
                 /* XXX: make this a macro value. */                      mdoc->parse, n->line, n->pos,
                       "Dt %s", mdoc->meta.title);
                 mdoc->meta.vol = mandoc_strdup("LOCAL");                  mdoc->meta.vol = mandoc_strdup("LOCAL");
                 mdoc->meta.msec = mandoc_strdup("1");                  goto out;
                 return(post_prol(mdoc));  
         }          }
   
         /* Handles: `.Dt TITLE SEC'          /* Handles: `.Dt TITLE SEC'
Line 2245 
Line 2249 
         }          }
   
         if (NULL == (nn = nn->next))          if (NULL == (nn = nn->next))
                 return(post_prol(mdoc));                  goto out;
   
         /* Handles: `.Dt TITLE SEC VOL'          /* Handles: `.Dt TITLE SEC VOL'
          * title = TITLE,           * title = TITLE,
Line 2271 
Line 2275 
   
         /* Ignore any subsequent parameters... */          /* Ignore any subsequent parameters... */
         /* FIXME: warn about subsequent parameters. */          /* FIXME: warn about subsequent parameters. */
   out:
         return(post_prol(mdoc));          mdoc_node_delete(mdoc, n);
 }  
   
 static int  
 post_prol(POST_ARGS)  
 {  
         /*  
          * Remove prologue macros from the document after they're  
          * processed.  The final document uses mdoc_meta for these  
          * values and discards the originals.  
          */  
   
         mdoc_node_delete(mdoc, mdoc->last);  
         if (mdoc->meta.title && mdoc->meta.date && mdoc->meta.os)  
                 mdoc->flags |= MDOC_PBODY;  
   
         return(1);          return(1);
 }  }
   
Line 2333 
Line 2322 
         mdoc->meta.os = NULL;          mdoc->meta.os = NULL;
         mdoc_deroff(&mdoc->meta.os, n);          mdoc_deroff(&mdoc->meta.os, n);
         if (mdoc->meta.os)          if (mdoc->meta.os)
                 return(post_prol(mdoc));                  goto out;
   
         if (mdoc->defos) {          if (mdoc->defos) {
                 mdoc->meta.os = mandoc_strdup(mdoc->defos);                  mdoc->meta.os = mandoc_strdup(mdoc->defos);
                 return(post_prol(mdoc));                  goto out;
         }          }
   
 #ifdef OSNAME  #ifdef OSNAME
Line 2354 
Line 2343 
         }          }
         mdoc->meta.os = mandoc_strdup(defbuf);          mdoc->meta.os = mandoc_strdup(defbuf);
 #endif /*!OSNAME*/  #endif /*!OSNAME*/
         return(post_prol(mdoc));  
   out:
           mdoc_node_delete(mdoc, n);
           return(1);
 }  }
   
 /*  /*

Legend:
Removed from v.1.160  
changed lines
  Added in v.1.161