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

Diff for /mandoc/Attic/action.c between version 1.2 and 1.3

version 1.2, 2009/01/05 16:11:14 version 1.3, 2009/01/07 15:53:00
Line 21 
Line 21 
   
 #include "private.h"  #include "private.h"
   
 typedef int     (*a_act)(struct mdoc *, int, int,  typedef int     (*a_act)(struct mdoc *, int, int);
                         int, const char *[],  
                         int, const struct mdoc_arg *);  
   
   
 struct  actions {  struct  actions {
Line 31  struct actions {
Line 29  struct actions {
 };  };
   
   
   static int       action_sh(struct mdoc *, int, int);
   
   
 const   struct actions mdoc_actions[MDOC_MAX] = {  const   struct actions mdoc_actions[MDOC_MAX] = {
         { NULL }, /* \" */          { NULL }, /* \" */
         { NULL }, /* Dd */          { NULL }, /* Dd */
         { NULL }, /* Dt */          { NULL }, /* Dt */
         { NULL }, /* Os */          { NULL }, /* Os */
         { NULL }, /* Sh */          { action_sh }, /* Sh */
         { NULL }, /* Ss */          { NULL }, /* Ss */
         { NULL }, /* Pp */          { NULL }, /* Pp */
         { NULL }, /* D1 */          { NULL }, /* D1 */
Line 141  const struct actions mdoc_actions[MDOC_MAX] = {
Line 142  const struct actions mdoc_actions[MDOC_MAX] = {
 };  };
   
   
 int  static int
 mdoc_action(struct mdoc *mdoc, int tok, int pos)  action_sh(struct mdoc *mdoc, int tok, int pos)
 {  {
           enum mdoc_sec     sec;
           int               i;
           struct mdoc_node *n;
           char             *args[MDOC_LINEARG_MAX];
   
           if (MDOC_HEAD != mdoc->last->type)
                   return(1);
   
           n = mdoc->last->child;
           assert(n);
   
           for (i = 0; n && i < MDOC_LINEARG_MAX; n = n->next, i++) {
                   assert(MDOC_TEXT == n->type);
                   assert(NULL == n->child);
                   assert(n->data.text.string);
                   args[i] = n->data.text.string;
           }
   
           sec = mdoc_atosec((size_t)i, (const char **)args);
           if (SEC_CUSTOM != sec)
                   mdoc->sec_lastn = sec;
           mdoc->sec_last = sec;
   
         return(1);          return(1);
 }  }
   
 #if 0  
         /* Post-processing. */  int
         switch (tok) {  mdoc_action(struct mdoc *mdoc, int pos)
         case (MDOC_Sh):  {
                 sec = mdoc_atosec((size_t)sz, _CC(args));          int              t;
                 if (SEC_CUSTOM != sec)  
                         mdoc->sec_lastn = sec;          switch (mdoc->last->type) {
                 mdoc->sec_last = sec;          case (MDOC_BODY):
                   t = mdoc->last->data.body.tok;
                 break;                  break;
         default:          case (MDOC_ELEM):
                   t = mdoc->last->data.elem.tok;
                 break;                  break;
           case (MDOC_BLOCK):
                   t = mdoc->last->data.block.tok;
                   break;
           case (MDOC_HEAD):
                   t = mdoc->last->data.head.tok;
                   break;
           default:
                   return(1);
         }          }
   
         MDOC_Nm... ?          if (NULL == mdoc_actions[t].action)
 #endif                  return(1);
           /* TODO: MDOC_Nm... ? */
           return((*mdoc_actions[t].action)(mdoc, t, pos));
   }
   

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

CVSweb