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

Diff for /mandoc/mdoc_validate.c between version 1.308 and 1.309

version 1.308, 2016/08/20 14:43:50 version 1.309, 2016/10/09 18:16:56
Line 67  static void  post_bf(POST_ARGS);
Line 67  static void  post_bf(POST_ARGS);
 static  void     post_bk(POST_ARGS);  static  void     post_bk(POST_ARGS);
 static  void     post_bl(POST_ARGS);  static  void     post_bl(POST_ARGS);
 static  void     post_bl_block(POST_ARGS);  static  void     post_bl_block(POST_ARGS);
 static  void     post_bl_block_tag(POST_ARGS);  
 static  void     post_bl_head(POST_ARGS);  static  void     post_bl_head(POST_ARGS);
 static  void     post_bl_norm(POST_ARGS);  static  void     post_bl_norm(POST_ARGS);
 static  void     post_bx(POST_ARGS);  static  void     post_bx(POST_ARGS);
Line 1099  post_bl_block(POST_ARGS)
Line 1098  post_bl_block(POST_ARGS)
   
         post_prevpar(mdoc);          post_prevpar(mdoc);
   
         /*  
          * These are fairly complicated, so we've broken them into two  
          * functions.  post_bl_block_tag() is called when a -tag is  
          * specified, but no -width (it must be guessed).  The second  
          * when a -width is specified (macro indicators must be  
          * rewritten into real lengths).  
          */  
   
         n = mdoc->last;          n = mdoc->last;
   
         if (n->norm->Bl.type == LIST_tag &&  
             n->norm->Bl.width == NULL) {  
                 post_bl_block_tag(mdoc);  
                 assert(n->norm->Bl.width != NULL);  
         }  
   
         for (ni = n->body->child; ni != NULL; ni = ni->next) {          for (ni = n->body->child; ni != NULL; ni = ni->next) {
                 if (ni->body == NULL)                  if (ni->body == NULL)
                         continue;                          continue;
Line 1169  rewrite_macro2len(char **arg)
Line 1153  rewrite_macro2len(char **arg)
   
         free(*arg);          free(*arg);
         mandoc_asprintf(arg, "%zun", width);          mandoc_asprintf(arg, "%zun", width);
 }  
   
 static void  
 post_bl_block_tag(POST_ARGS)  
 {  
         struct roff_node *n, *nn;  
         size_t            sz, ssz;  
         int               i;  
         char              buf[24];  
   
         /*  
          * Calculate the -width for a `Bl -tag' list if it hasn't been  
          * provided.  Uses the first head macro.  NOTE AGAIN: this is  
          * ONLY if the -width argument has NOT been provided.  See  
          * rewrite_macro2len() for converting the -width string.  
          */  
   
         sz = 10;  
         n = mdoc->last;  
   
         for (nn = n->body->child; nn != NULL; nn = nn->next) {  
                 if (nn->tok != MDOC_It)  
                         continue;  
   
                 assert(nn->type == ROFFT_BLOCK);  
                 nn = nn->head->child;  
   
                 if (nn == NULL)  
                         break;  
   
                 if (nn->type == ROFFT_TEXT) {  
                         sz = strlen(nn->string) + 1;  
                         break;  
                 }  
   
                 if (0 != (ssz = macro2len(nn->tok)))  
                         sz = ssz;  
   
                 break;  
         }  
   
         /* Defaults to ten ens. */  
   
         (void)snprintf(buf, sizeof(buf), "%un", (unsigned int)sz);  
   
         /*  
          * We have to dynamically add this to the macro's argument list.  
          * We're guaranteed that a MDOC_Width doesn't already exist.  
          */  
   
         assert(n->args != NULL);  
         i = (int)(n->args->argc)++;  
   
         n->args->argv = mandoc_reallocarray(n->args->argv,  
             n->args->argc, sizeof(struct mdoc_argv));  
   
         n->args->argv[i].arg = MDOC_Width;  
         n->args->argv[i].line = n->line;  
         n->args->argv[i].pos = n->pos;  
         n->args->argv[i].sz = 1;  
         n->args->argv[i].value = mandoc_malloc(sizeof(char *));  
         n->args->argv[i].value[0] = mandoc_strdup(buf);  
   
         /* Set our width! */  
         n->norm->Bl.width = n->args->argv[i].value[0];  
 }  }
   
 static void  static void

Legend:
Removed from v.1.308  
changed lines
  Added in v.1.309

CVSweb