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

Diff for /mandoc/Attic/mdoc_action.c between version 1.84 and 1.86

version 1.84, 2010/11/29 15:45:15 version 1.86, 2010/11/30 10:32:05
Line 52  static int   concat(struct mdoc *, char *,
Line 52  static int   concat(struct mdoc *, char *,
                         const struct mdoc_node *, size_t);                          const struct mdoc_node *, size_t);
   
 static  int       post_bl(POST_ARGS);  static  int       post_bl(POST_ARGS);
 static  int       post_bl_head(POST_ARGS);  
 static  int       post_bl_tagwidth(POST_ARGS);  static  int       post_bl_tagwidth(POST_ARGS);
 static  int       post_bl_width(POST_ARGS);  static  int       post_bl_width(POST_ARGS);
 static  int       post_dd(POST_ARGS);  static  int       post_dd(POST_ARGS);
 static  int       post_dt(POST_ARGS);  static  int       post_dt(POST_ARGS);
 static  int       post_nm(POST_ARGS);  
 static  int       post_os(POST_ARGS);  static  int       post_os(POST_ARGS);
 static  int       post_pa(POST_ARGS);  
 static  int       post_prol(POST_ARGS);  static  int       post_prol(POST_ARGS);
 static  int       post_std(POST_ARGS);  static  int       post_std(POST_ARGS);
   
Line 96  static const struct actions mdoc_actions[MDOC_MAX] = {
Line 93  static const struct actions mdoc_actions[MDOC_MAX] = {
         { NULL, NULL }, /* In */          { NULL, NULL }, /* In */
         { NULL, NULL }, /* Li */          { NULL, NULL }, /* Li */
         { NULL, NULL }, /* Nd */          { NULL, NULL }, /* Nd */
         { NULL, post_nm }, /* Nm */          { NULL, NULL }, /* Nm */
         { NULL, NULL }, /* Op */          { NULL, NULL }, /* Op */
         { NULL, NULL }, /* Ot */          { NULL, NULL }, /* Ot */
         { NULL, post_pa }, /* Pa */          { NULL, NULL }, /* Pa */
         { NULL, post_std }, /* Rv */          { NULL, post_std }, /* Rv */
         { NULL, NULL }, /* St */          { NULL, NULL }, /* St */
         { NULL, NULL }, /* Va */          { NULL, NULL }, /* Va */
Line 288  post_std(POST_ARGS)
Line 285  post_std(POST_ARGS)
         return(1);          return(1);
 }  }
   
   
 /*  /*
  * The `Nm' macro's first use sets the name of the document.  See also  
  * post_std(), etc.  
  */  
 static int  
 post_nm(POST_ARGS)  
 {  
         char             buf[BUFSIZ];  
   
         if (m->meta.name)  
                 return(1);  
         if ( ! concat(m, buf, n->child, BUFSIZ))  
                 return(0);  
         m->meta.name = mandoc_strdup(buf);  
         return(1);  
 }  
   
 /*  
  * Parse out the contents of `Dt'.  See in-line documentation for how we   * Parse out the contents of `Dt'.  See in-line documentation for how we
  * handle the various fields of this macro.   * handle the various fields of this macro.
  */   */
Line 570  post_bl_width(POST_ARGS)
Line 549  post_bl_width(POST_ARGS)
 }  }
   
   
 /*  
  * Do processing for -column lists, which can have two distinct styles  
  * of invocation.  Merge this two styles into a consistent form.  
  */  
 /* ARGSUSED */  
 static int  static int
 post_bl_head(POST_ARGS)  
 {  
         int                      i, c;  
         struct mdoc_node        *np, *nn, *nnp;  
   
         if (LIST_column != n->data.Bl->type)  
                 return(1);  
         else if (NULL == n->child)  
                 return(1);  
   
         np = n->parent;  
         assert(np->args);  
   
         for (c = 0; c < (int)np->args->argc; c++)  
                 if (MDOC_Column == np->args->argv[c].arg)  
                         break;  
   
         assert(c < (int)np->args->argc);  
         assert(0 == np->args->argv[c].sz);  
   
         /*  
          * Accomodate for new-style groff column syntax.  Shuffle the  
          * child nodes, all of which must be TEXT, as arguments for the  
          * column field.  Then, delete the head children.  
          */  
   
         np->args->argv[c].sz = (size_t)n->nchild;  
         np->args->argv[c].value = mandoc_malloc  
                 ((size_t)n->nchild * sizeof(char *));  
   
         n->data.Bl->ncols = np->args->argv[c].sz;  
         n->data.Bl->cols = (const char **)np->args->argv[c].value;  
   
         for (i = 0, nn = n->child; nn; i++) {  
                 np->args->argv[c].value[i] = nn->string;  
                 nn->string = NULL;  
                 nnp = nn;  
                 nn = nn->next;  
                 mdoc_node_delete(NULL, nnp);  
         }  
   
         n->nchild = 0;  
         n->child = NULL;  
         return(1);  
 }  
   
   
 static int  
 post_bl(POST_ARGS)  post_bl(POST_ARGS)
 {  {
   
         if (MDOC_HEAD == n->type)  
                 return(post_bl_head(m, n));  
         if (MDOC_BLOCK != n->type)          if (MDOC_BLOCK != n->type)
                 return(1);                  return(1);
   
Line 652  post_bl(POST_ARGS)
Line 576  post_bl(POST_ARGS)
         assert(n->data.Bl->width);          assert(n->data.Bl->width);
         return(1);          return(1);
 }  }
   
   
 /*  
  * The `Pa' macro defaults to a tilde if no value is provided as an  
  * argument.  
  */  
 static int  
 post_pa(POST_ARGS)  
 {  
         struct mdoc_node *np;  
   
         if (n->child)  
                 return(1);  
   
         np = n;  
         m->next = MDOC_NEXT_CHILD;  
         if ( ! mdoc_word_alloc(m, n->line, n->pos, "~"))  
                 return(0);  
         m->last = np;  
         return(1);  
 }  
   
   
 /*  /*
  * Parse the date field in `Dd'.   * Parse the date field in `Dd'.

Legend:
Removed from v.1.84  
changed lines
  Added in v.1.86

CVSweb