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

Diff for /mandoc/Attic/action.c between version 1.5 and 1.8

version 1.5, 2009/01/08 15:59:58 version 1.8, 2009/01/16 11:50:54
Line 159  post_sh(struct mdoc *mdoc)
Line 159  post_sh(struct mdoc *mdoc)
         if (MDOC_HEAD != mdoc->last->type)          if (MDOC_HEAD != mdoc->last->type)
                 return(1);                  return(1);
   
         assert(MDOC_Sh == mdoc->last->data.head.tok);          assert(MDOC_Sh == mdoc->last->tok);
   
         n = mdoc->last->child;          n = mdoc->last->child;
         assert(n);          assert(n);
Line 189  post_dt(struct mdoc *mdoc)
Line 189  post_dt(struct mdoc *mdoc)
         struct mdoc_node *n;          struct mdoc_node *n;
   
         assert(MDOC_ELEM == mdoc->last->type);          assert(MDOC_ELEM == mdoc->last->type);
         assert(MDOC_Dt == mdoc->last->data.elem.tok);          assert(MDOC_Dt == mdoc->last->tok);
         assert(0 == mdoc->meta.title[0]);          assert(0 == mdoc->meta.title[0]);
   
         sz = META_TITLE_SZ;          sz = META_TITLE_SZ;
Line 203  post_dt(struct mdoc *mdoc)
Line 203  post_dt(struct mdoc *mdoc)
                 case (0):                  case (0):
                         if (xstrlcpy(mdoc->meta.title, p, sz))                          if (xstrlcpy(mdoc->meta.title, p, sz))
                                 break;                                  break;
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual title parameter"));
                 case (1):                  case (1):
                         mdoc->meta.msec = mdoc_atomsec(p);                          mdoc->meta.msec = mdoc_atomsec(p);
                         if (MSEC_DEFAULT != mdoc->meta.msec)                          if (MSEC_DEFAULT != mdoc->meta.msec)
                                 break;                                  break;
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual section parameter"));
                 case (2):                  case (2):
                         mdoc->meta.vol = mdoc_atovol(p);                          mdoc->meta.vol = mdoc_atovol(p);
                         if (VOL_DEFAULT != mdoc->meta.vol)                          if (VOL_DEFAULT != mdoc->meta.vol)
Line 216  post_dt(struct mdoc *mdoc)
Line 216  post_dt(struct mdoc *mdoc)
                         mdoc->meta.arch = mdoc_atoarch(p);                          mdoc->meta.arch = mdoc_atoarch(p);
                         if (ARCH_DEFAULT != mdoc->meta.arch)                          if (ARCH_DEFAULT != mdoc->meta.arch)
                                 break;                                  break;
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual volume parameter"));
                 default:                  default:
                         return(mdoc_err(mdoc, ERR_ARGS_MANY));                          return(mdoc_nerr(mdoc, n, "too many parameters"));
                 }                  }
         }          }
   
         mdoc_msg(mdoc, "parsed title: %s", mdoc->meta.title);          mdoc_msg(mdoc, "parsed title: %s", mdoc->meta.title);
         /* TODO: have vol2a functions. */          /* TODO: print vol2a functions. */
         return(1);          return(1);
 }  }
   
Line 236  post_os(struct mdoc *mdoc)
Line 236  post_os(struct mdoc *mdoc)
         struct mdoc_node *n;          struct mdoc_node *n;
   
         assert(MDOC_ELEM == mdoc->last->type);          assert(MDOC_ELEM == mdoc->last->type);
         assert(MDOC_Os == mdoc->last->data.elem.tok);          assert(MDOC_Os == mdoc->last->tok);
         assert(0 == mdoc->meta.os[0]);          assert(0 == mdoc->meta.os[0]);
   
         sz = META_OS_SZ;          sz = META_OS_SZ;
         (void)xstrlcpy(mdoc->meta.os, "LOCAL", sz);  
   
         for (n = mdoc->last->child; n; n = n->next) {          for (n = mdoc->last->child; n; n = n->next) {
                 assert(MDOC_TEXT == n->type);                  assert(MDOC_TEXT == n->type);
                 p = n->data.text.string;                  p = n->data.text.string;
   
                 if ( ! xstrlcat(mdoc->meta.os, p, sz))                  if ( ! xstrlcat(mdoc->meta.os, p, sz))
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual system parameter"));
                 if ( ! xstrlcat(mdoc->meta.os, " ", sz))                  if ( ! xstrlcat(mdoc->meta.os, " ", sz))
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual system parameter"));
         }          }
   
         mdoc_msg(mdoc, "parsed operating system (entering document body)");          if (0 == mdoc->meta.os[0])
                   (void)xstrlcpy(mdoc->meta.os, "LOCAL", sz);
   
           mdoc_msg(mdoc, "parsed operating system: %s", mdoc->meta.os);
         mdoc->sec_lastn = mdoc->sec_last = SEC_BODY;          mdoc->sec_lastn = mdoc->sec_last = SEC_BODY;
         return(1);          return(1);
 }  }
Line 267  post_dd(struct mdoc *mdoc)
Line 269  post_dd(struct mdoc *mdoc)
         struct mdoc_node *n;          struct mdoc_node *n;
   
         assert(MDOC_ELEM == mdoc->last->type);          assert(MDOC_ELEM == mdoc->last->type);
         assert(MDOC_Dd == mdoc->last->data.elem.tok);          assert(MDOC_Dd == mdoc->last->tok);
   
         n = mdoc->last->child;          n = mdoc->last->child;
         assert(0 == mdoc->meta.date);          assert(0 == mdoc->meta.date);
Line 289  post_dd(struct mdoc *mdoc)
Line 291  post_dd(struct mdoc *mdoc)
                         continue;                          continue;
   
                 if ( ! xstrlcat(date, n->data.text.string, sz))                  if ( ! xstrlcat(date, n->data.text.string, sz))
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual date parameter"));
                 if ( ! xstrlcat(date, " ", sz))                  if ( ! xstrlcat(date, " ", sz))
                         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));                          return(mdoc_nerr(mdoc, n, "badly-formed manual date parameter"));
         }          }
   
         if (mdoc->meta.date && NULL == n) {          if (mdoc->meta.date && NULL == n) {
Line 300  post_dd(struct mdoc *mdoc)
Line 302  post_dd(struct mdoc *mdoc)
                 return(1);                  return(1);
         }          }
   
         return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));          return(mdoc_err(mdoc, "badly-formed manual date"));
 }  }
   
   
Line 315  mdoc_action_pre(struct mdoc *mdoc, struct mdoc_node *n
Line 317  mdoc_action_pre(struct mdoc *mdoc, struct mdoc_node *n
 int  int
 mdoc_action_post(struct mdoc *mdoc)  mdoc_action_post(struct mdoc *mdoc)
 {  {
         int              t;  
   
         switch (mdoc->last->type) {          if (MDOC_TEXT == mdoc->last->type)
         case (MDOC_BODY):  
                 t = mdoc->last->data.body.tok;  
                 break;  
         case (MDOC_ELEM):  
                 t = mdoc->last->data.elem.tok;  
                 break;  
         case (MDOC_BLOCK):  
                 t = mdoc->last->data.block.tok;  
                 break;  
         case (MDOC_HEAD):  
                 t = mdoc->last->data.head.tok;  
                 break;  
         default:  
                 return(1);                  return(1);
         }          if (MDOC_ROOT == mdoc->last->type)
                   return(1);
   
         if (NULL == mdoc_actions[t].post)          if (NULL == mdoc_actions[mdoc->last->tok].post)
                 return(1);                  return(1);
         /* TODO: MDOC_Nm... ? */          /* TODO: MDOC_Nm... ? */
         return((*mdoc_actions[t].post)(mdoc));          return((*mdoc_actions[mdoc->last->tok].post)(mdoc));
 }  }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.8

CVSweb