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

Diff for /mandoc/Attic/mdocml.c between version 1.41 and 1.43

version 1.41, 2009/01/12 16:39:57 version 1.43, 2009/01/15 15:59:19
Line 42  struct md_parse {
Line 42  struct md_parse {
         u_long           bufsz;          u_long           bufsz;
         char            *name;          char            *name;
         int              fd;          int              fd;
         int              lnn;  
         char            *line;  
 };  };
   
 static  void             usage(void);  static  void             usage(void);
Line 192  print_node(const struct mdoc_node *n, int indent)
Line 190  print_node(const struct mdoc_node *n, int indent)
         params = NULL;          params = NULL;
         sz = 0;          sz = 0;
   
         /* FIXME: put parts of this in util.c. */          t = mdoc_type2a(n->type);
   
         switch (n->type) {          switch (n->type) {
         case (MDOC_TEXT):          case (MDOC_TEXT):
                 assert(NULL == n->child);                  assert(NULL == n->child);
                 p = n->data.text.string;                  p = n->data.text.string;
                 t = "text";  
                 break;                  break;
         case (MDOC_BODY):          case (MDOC_BODY):
                 p = mdoc_macronames[n->tok];                  p = mdoc_macronames[n->tok];
                 t = "block-body";  
                 break;                  break;
         case (MDOC_HEAD):          case (MDOC_HEAD):
                 p = mdoc_macronames[n->tok];                  p = mdoc_macronames[n->tok];
                 t = "block-head";  
                 break;                  break;
         case (MDOC_TAIL):          case (MDOC_TAIL):
                 p = mdoc_macronames[n->tok];                  p = mdoc_macronames[n->tok];
                 t = "block-tail";  
                 break;                  break;
         case (MDOC_ELEM):          case (MDOC_ELEM):
                 p = mdoc_macronames[n->tok];                  p = mdoc_macronames[n->tok];
                 t = "element";  
                 argv = n->data.elem.argv;                  argv = n->data.elem.argv;
                 argc = n->data.elem.argc;                  argc = n->data.elem.argc;
                 break;                  break;
         case (MDOC_BLOCK):          case (MDOC_BLOCK):
                 p = mdoc_macronames[n->tok];                  p = mdoc_macronames[n->tok];
                 t = "block";  
                 argv = n->data.block.argv;                  argv = n->data.block.argv;
                 argc = n->data.block.argc;                  argc = n->data.block.argc;
                 break;                  break;
         case (MDOC_ROOT):          case (MDOC_ROOT):
                 p = "root";                  p = "root";
                 t = "root";  
                 break;                  break;
         default:          default:
                 abort();                  abort();
Line 238  print_node(const struct mdoc_node *n, int indent)
Line 230  print_node(const struct mdoc_node *n, int indent)
   
         for (i = 0; i < (int)argc; i++) {          for (i = 0; i < (int)argc; i++) {
                 (void)printf(" -%s", mdoc_argnames[argv[i].arg]);                  (void)printf(" -%s", mdoc_argnames[argv[i].arg]);
                 if (j > 0)                  if (argv[i].sz > 0)
                         (void)printf(" [");                          (void)printf(" [");
                 for (j = 0; j < (int)argv[i].sz; j++)                  for (j = 0; j < (int)argv[i].sz; j++)
                         (void)printf(" [%s]", argv[i].value[j]);                          (void)printf(" [%s]", argv[i].value[j]);
                 if (j > 0)                  if (argv[i].sz > 0)
                         (void)printf(" ]");                          (void)printf(" ]");
         }          }
   
Line 284  parse_begin(struct md_parse *p)
Line 276  parse_begin(struct md_parse *p)
         size_t           pos;          size_t           pos;
         char             line[256], sv[256];          char             line[256], sv[256];
         struct mdoc_cb   cb;          struct mdoc_cb   cb;
           int              lnn;
   
         cb.mdoc_err = msg_err;          cb.mdoc_err = msg_err;
         cb.mdoc_warn = msg_warn;          cb.mdoc_warn = msg_warn;
Line 292  parse_begin(struct md_parse *p)
Line 285  parse_begin(struct md_parse *p)
         if (NULL == (p->mdoc = mdoc_alloc(p, &cb)))          if (NULL == (p->mdoc = mdoc_alloc(p, &cb)))
                 return(parse_leave(p, 0));                  return(parse_leave(p, 0));
   
         p->lnn = 1;          for (lnn = 1, pos = 0; ; ) {
         p->line = sv;  
   
         for (pos = 0; ; ) {  
                 if (-1 == (sz = read(p->fd, p->buf, p->bufsz))) {                  if (-1 == (sz = read(p->fd, p->buf, p->bufsz))) {
                         warn("%s", p->name);                          warn("%s", p->name);
                         return(parse_leave(p, 0));                          return(parse_leave(p, 0));
Line 311  parse_begin(struct md_parse *p)
Line 301  parse_begin(struct md_parse *p)
                                         continue;                                          continue;
                                 }                                  }
                                 warnx("%s: line %d too long",                                  warnx("%s: line %d too long",
                                                 p->name, p->lnn);                                                  p->name, lnn);
                                 return(parse_leave(p, 0));                                  return(parse_leave(p, 0));
                         }                          }
   
                         line[(int)pos] = sv[(int)pos] = 0;                          line[(int)pos] = sv[(int)pos] = 0;
                         if ( ! mdoc_parseln(p->mdoc, p->lnn, line))                          if ( ! mdoc_parseln(p->mdoc, lnn, line))
                                 return(parse_leave(p, 0));                                  return(parse_leave(p, 0));
   
                         p->lnn++;                          lnn++;
                         pos = 0;                          pos = 0;
                 }                  }
         }          }
Line 361  msg_err(void *arg, int line, int col, enum mdoc_err ty
Line 351  msg_err(void *arg, int line, int col, enum mdoc_err ty
                 lit = "syntax: unknown argument for macro";                  lit = "syntax: unknown argument for macro";
                 break;                  break;
         case (ERR_SCOPE_BREAK):          case (ERR_SCOPE_BREAK):
                 /* Which scope is broken? */                  lit = "scope: macro breaks prior scope";
                 lit = "scope: macro breaks prior explicit scope";  
                 break;                  break;
         case (ERR_SCOPE_NOCTX):          case (ERR_SCOPE_NOCTX):
                 lit = "scope: closure macro has no context";                  lit = "scope: closure macro has no context";

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.43

CVSweb