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

Diff for /mandoc/man_validate.c between version 1.157 and 1.158

version 1.157, 2022/08/02 12:02:28 version 1.158, 2023/04/28 20:23:19
Line 44 
Line 44 
   
 typedef void    (*v_check)(CHKARGS);  typedef void    (*v_check)(CHKARGS);
   
 static  void      check_abort(CHKARGS) __attribute__((__noreturn__));  
 static  void      check_par(CHKARGS);  static  void      check_par(CHKARGS);
 static  void      check_part(CHKARGS);  static  void      check_part(CHKARGS);
 static  void      check_root(CHKARGS);  static  void      check_root(CHKARGS);
Line 69  static const v_check man_valids[MAN_MAX - MAN_TH] = {
Line 68  static const v_check man_valids[MAN_MAX - MAN_TH] = {
         post_SH,    /* SS */          post_SH,    /* SS */
         post_TP,    /* TP */          post_TP,    /* TP */
         post_TP,    /* TQ */          post_TP,    /* TQ */
         check_abort,/* LP */          check_par,  /* LP */
         check_par,  /* PP */          check_par,  /* PP */
         check_abort,/* P */          check_par,  /* P */
         post_IP,    /* IP */          post_IP,    /* IP */
         NULL,       /* HP */          NULL,       /* HP */
         NULL,       /* SM */          NULL,       /* SM */
Line 112  man_validate(struct roff_man *man)
Line 111  man_validate(struct roff_man *man)
         const v_check    *cp;          const v_check    *cp;
   
         /*          /*
          * Translate obsolete macros such that later code  
          * does not need to look for them.  
          */  
   
         n = man->last;  
         switch (n->tok) {  
         case MAN_LP:  
         case MAN_P:  
                 n->tok = MAN_PP;  
                 break;  
         default:  
                 break;  
         }  
   
         /*  
          * Iterate over all children, recursing into each one           * Iterate over all children, recursing into each one
          * in turn, depth-first.           * in turn, depth-first.
          */           */
   
           n = man->last;
         man->last = man->last->child;          man->last = man->last->child;
         while (man->last != NULL) {          while (man->last != NULL) {
                 man_validate(man);                  man_validate(man);
Line 200  check_root(CHKARGS)
Line 185  check_root(CHKARGS)
                     "(OpenBSD)" : "(NetBSD)");                      "(OpenBSD)" : "(NetBSD)");
 }  }
   
 static void  
 check_abort(CHKARGS)  
 {  
         abort();  
 }  
   
 /*  /*
  * Skip leading whitespace, dashes, backslashes, and font escapes,   * Skip leading whitespace, dashes, backslashes, and font escapes,
  * then create a tag if the first following byte is a letter.   * then create a tag if the first following byte is a letter.
Line 340  post_SH(CHKARGS)
Line 319  post_SH(CHKARGS)
                 return;                  return;
         }          }
   
         if (nc->tok == MAN_PP && nc->body->child != NULL) {          if ((nc->tok == MAN_LP || nc->tok == MAN_PP || nc->tok == MAN_P) &&
               nc->body->child != NULL) {
                 while (nc->body->last != NULL) {                  while (nc->body->last != NULL) {
                         man->next = ROFF_NEXT_CHILD;                          man->next = ROFF_NEXT_CHILD;
                         roff_node_relink(man, nc->body->last);                          roff_node_relink(man, nc->body->last);
Line 348  post_SH(CHKARGS)
Line 328  post_SH(CHKARGS)
                 }                  }
         }          }
   
         if (nc->tok == MAN_PP || nc->tok == ROFF_sp || nc->tok == ROFF_br) {          if (nc->tok == MAN_LP || nc->tok == MAN_PP || nc->tok == MAN_P ||
               nc->tok == ROFF_sp || nc->tok == ROFF_br) {
                 mandoc_msg(MANDOCERR_PAR_SKIP, nc->line, nc->pos,                  mandoc_msg(MANDOCERR_PAR_SKIP, nc->line, nc->pos,
                     "%s after %s", roff_name[nc->tok], roff_name[n->tok]);                      "%s after %s", roff_name[nc->tok], roff_name[n->tok]);
                 roff_node_delete(man, nc);                  roff_node_delete(man, nc);

Legend:
Removed from v.1.157  
changed lines
  Added in v.1.158

CVSweb