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

Diff for /src/usr.bin/mandoc/mdoc_term.c between version 1.3 and 1.4

version 1.3, 2009/06/15 01:07:46 version 1.4, 2009/06/15 02:53:35
Line 320 
Line 320 
 static  void      print_body(DECL_ARGS);  static  void      print_body(DECL_ARGS);
 static  void      print_foot(struct termp *,  static  void      print_foot(struct termp *,
                         const struct mdoc_meta *);                          const struct mdoc_meta *);
 static  void      sanity(const struct mdoc_node *);  
   
   
 int  int
 mdoc_run(struct termp *p, const struct mdoc *m)  mdoc_run(struct termp *p, const struct mdoc *m)
 {  {
           /*
            * Main output function.  When this is called, assume that the
            * tree is properly formed.
            */
   
         print_head(p, mdoc_meta(m));          print_head(p, mdoc_meta(m));
         print_body(p, NULL, mdoc_meta(m), mdoc_node(m));          print_body(p, NULL, mdoc_meta(m), mdoc_node(m));
Line 351 
Line 354 
         int              dochild;          int              dochild;
         struct termpair  npair;          struct termpair  npair;
   
         /* Some quick sanity-checking. */  
   
         sanity(node);  
   
         /* Pre-processing. */          /* Pre-processing. */
   
         dochild = 1;          dochild = 1;
Line 503 
Line 502 
   
         free(title);          free(title);
         free(buf);          free(buf);
 }  
   
   
 static void  
 sanity(const struct mdoc_node *n)  
 {  
         char            *p;  
   
         p = "regular form violated";  
   
         switch (n->type) {  
         case (MDOC_TEXT):  
                 if (n->child)  
                         errx(1, p);  
                 if (NULL == n->parent)  
                         errx(1, p);  
                 if (NULL == n->string)  
                         errx(1, p);  
                 switch (n->parent->type) {  
                 case (MDOC_TEXT):  
                         /* FALLTHROUGH */  
                 case (MDOC_ROOT):  
                         errx(1, p);  
                         /* NOTREACHED */  
                 default:  
                         break;  
                 }  
                 break;  
         case (MDOC_ELEM):  
                 if (NULL == n->parent)  
                         errx(1, p);  
                 switch (n->parent->type) {  
                 case (MDOC_TAIL):  
                         /* FALLTHROUGH */  
                 case (MDOC_BODY):  
                         /* FALLTHROUGH */  
                 case (MDOC_HEAD):  
                         break;  
                 default:  
                         errx(1, p);  
                         /* NOTREACHED */  
                 }  
                 if (n->child) switch (n->child->type) {  
                 case (MDOC_TEXT):  
                         break;  
                 default:  
                         errx(1, p);  
                         /* NOTREACHED */  
                 }  
                 break;  
         case (MDOC_HEAD):  
                 /* FALLTHROUGH */  
         case (MDOC_BODY):  
                 /* FALLTHROUGH */  
         case (MDOC_TAIL):  
                 if (NULL == n->parent)  
                         errx(1, p);  
                 if (MDOC_BLOCK != n->parent->type)  
                         errx(1, p);  
                 if (n->child) switch (n->child->type) {  
                 case (MDOC_BLOCK):  
                         /* FALLTHROUGH */  
                 case (MDOC_ELEM):  
                         /* FALLTHROUGH */  
                 case (MDOC_TEXT):  
                         break;  
                 default:  
                         errx(1, p);  
                         /* NOTREACHED */  
                 }  
                 break;  
         case (MDOC_BLOCK):  
                 if (NULL == n->parent)  
                         errx(1, p);  
                 if (NULL == n->child)  
                         errx(1, p);  
                 switch (n->parent->type) {  
                 case (MDOC_ROOT):  
                         /* FALLTHROUGH */  
                 case (MDOC_HEAD):  
                         /* FALLTHROUGH */  
                 case (MDOC_BODY):  
                         /* FALLTHROUGH */  
                 case (MDOC_TAIL):  
                         break;  
                 default:  
                         errx(1, p);  
                         /* NOTREACHED */  
                 }  
                 switch (n->child->type) {  
                 case (MDOC_ROOT):  
                         /* FALLTHROUGH */  
                 case (MDOC_ELEM):  
                         errx(1, p);  
                         /* NOTREACHED */  
                 default:  
                         break;  
                 }  
                 break;  
         case (MDOC_ROOT):  
                 if (n->parent)  
                         errx(1, p);  
                 if (NULL == n->child)  
                         errx(1, p);  
                 switch (n->child->type) {  
                 case (MDOC_BLOCK):  
                         break;  
                 default:  
                         errx(1, p);  
                         /* NOTREACHED */  
                 }  
                 break;  
         }  
 }  }
   
   

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4