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

Diff for /docbook2mdoc/parse.c between version 1.28 and 1.29

version 1.28, 2019/04/09 13:35:29 version 1.29, 2019/04/09 15:23:51
Line 280  static void  parse_fd(struct parse *, int);
Line 280  static void  parse_fd(struct parse *, int);
   
   
 static void  static void
   fatal(struct parse *p)
   {
           fprintf(stderr, "%s:%d:%d: FATAL: ", p->fname, p->line, p->col);
           perror(NULL);
           exit(6);
   }
   
   static void
 error_msg(struct parse *p, const char *fmt, ...)  error_msg(struct parse *p, const char *fmt, ...)
 {  {
         va_list          ap;          va_list          ap;
   
         fprintf(stderr, "%s:%d:%d: ", p->fname, p->line, p->col);          fprintf(stderr, "%s:%d:%d: ERROR: ", p->fname, p->line, p->col);
         va_start(ap, fmt);          va_start(ap, fmt);
         vfprintf(stderr, fmt, ap);          vfprintf(stderr, fmt, ap);
         va_end(ap);          va_end(ap);
         fputc('\n', stderr);          fputc('\n', stderr);
         p->tree->flags |= TREE_FAIL;          p->tree->flags |= TREE_ERROR;
 }  }
   
 static void  static void
Line 300  warn_msg(struct parse *p, const char *fmt, ...)
Line 308  warn_msg(struct parse *p, const char *fmt, ...)
         if ((p->flags & PFLAG_WARN) == 0)          if ((p->flags & PFLAG_WARN) == 0)
                 return;                  return;
   
         fprintf(stderr, "%s:%d:%d: warning: ", p->fname, p->line, p->col);          fprintf(stderr, "%s:%d:%d: WARNING: ", p->fname, p->line, p->col);
         va_start(ap, fmt);          va_start(ap, fmt);
         vfprintf(stderr, fmt, ap);          vfprintf(stderr, fmt, ap);
         va_end(ap);          va_end(ap);
         fputc('\n', stderr);          fputc('\n', stderr);
           p->tree->flags |= TREE_WARN;
 }  }
   
 /*  /*
Line 327  xml_char(struct parse *ps, const char *p, int sz)
Line 336  xml_char(struct parse *ps, const char *p, int sz)
         }          }
   
         if (ps->cur->node != NODE_TEXT) {          if (ps->cur->node != NODE_TEXT) {
                 if ((dat = calloc(1, sizeof(*dat))) == NULL) {                  if ((dat = calloc(1, sizeof(*dat))) == NULL)
                         perror(NULL);                          fatal(ps);
                         exit(1);  
                 }  
                 dat->node = NODE_TEXT;                  dat->node = NODE_TEXT;
                 dat->spc = (ps->flags & PFLAG_SPC) != 0;                  dat->spc = (ps->flags & PFLAG_SPC) != 0;
                 dat->parent = ps->cur;                  dat->parent = ps->cur;
Line 348  xml_char(struct parse *ps, const char *p, int sz)
Line 355  xml_char(struct parse *ps, const char *p, int sz)
   
         assert(sz >= 0);          assert(sz >= 0);
         newsz = ps->cur->bsz + (ps->cur->bsz && (ps->flags & PFLAG_SPC)) + sz;          newsz = ps->cur->bsz + (ps->cur->bsz && (ps->flags & PFLAG_SPC)) + sz;
         ps->cur->b = realloc(ps->cur->b, newsz + 1);          if ((ps->cur->b = realloc(ps->cur->b, newsz + 1)) == NULL)
         if (ps->cur->b == NULL) {                  fatal(ps);
                 perror(NULL);  
                 exit(1);  
         }  
         if (ps->cur->bsz && (ps->flags & PFLAG_SPC))          if (ps->cur->bsz && (ps->flags & PFLAG_SPC))
                 ps->cur->b[ps->cur->bsz++] = ' ';                  ps->cur->b[ps->cur->bsz++] = ' ';
         memcpy(ps->cur->b + ps->cur->bsz, p, sz);          memcpy(ps->cur->b + ps->cur->bsz, p, sz);
Line 420  xml_entity(struct parse *p, const char *name)
Line 424  xml_entity(struct parse *p, const char *name)
                                 if ((ccp = pnode_getattr_raw(dat,                                  if ((ccp = pnode_getattr_raw(dat,
                                      ATTRKEY_DEFINITION, NULL)) == NULL)                                       ATTRKEY_DEFINITION, NULL)) == NULL)
                                         continue;                                          continue;
                                 if ((cp = strdup(ccp)) == NULL) {                                  if ((cp = strdup(ccp)) == NULL)
                                         perror(NULL);                                          fatal(p);
                                         exit(1);  
                                 }  
                                 pstate = PARSE_ELEM;                                  pstate = PARSE_ELEM;
                                 parse_string(p, cp, strlen(cp), &pstate, 0);                                  parse_string(p, cp, strlen(cp), &pstate, 0);
                                 p->flags &= ~PFLAG_SPC;                                  p->flags &= ~PFLAG_SPC;
Line 437  xml_entity(struct parse *p, const char *name)
Line 439  xml_entity(struct parse *p, const char *name)
   
         /* Create, append, and close out an entity node. */          /* Create, append, and close out an entity node. */
         if ((dat = calloc(1, sizeof(*dat))) == NULL ||          if ((dat = calloc(1, sizeof(*dat))) == NULL ||
             (dat->b = dat->real = strdup(entity->roff)) == NULL) {              (dat->b = dat->real = strdup(entity->roff)) == NULL)
                 perror(NULL);                  fatal(p);
                 exit(1);  
         }  
         dat->node = NODE_ESCAPE;          dat->node = NODE_ESCAPE;
         dat->bsz = strlen(dat->b);          dat->bsz = strlen(dat->b);
         dat->spc = (p->flags & PFLAG_SPC) != 0;          dat->spc = (p->flags & PFLAG_SPC) != 0;
Line 503  xml_elem_start(struct parse *ps, const char *name)
Line 503  xml_elem_start(struct parse *ps, const char *name)
         if (ps->tree->flags & TREE_CLOSED && ps->cur->parent == NULL)          if (ps->tree->flags & TREE_CLOSED && ps->cur->parent == NULL)
                 warn_msg(ps, "element after end of document: <%s>", name);                  warn_msg(ps, "element after end of document: <%s>", name);
   
         if ((dat = calloc(1, sizeof(*dat))) == NULL) {          if ((dat = calloc(1, sizeof(*dat))) == NULL)
                 perror(NULL);                  fatal(ps);
                 exit(1);  
         }  
   
         /*          /*
          * Nodes that begin a new macro or request line or start by           * Nodes that begin a new macro or request line or start by
Line 595  xml_attrkey(struct parse *ps, const char *name)
Line 593  xml_attrkey(struct parse *ps, const char *name)
                 ps->flags &= ~PFLAG_ATTR;                  ps->flags &= ~PFLAG_ATTR;
                 return;                  return;
         }          }
         if ((attr = calloc(1, sizeof(*attr))) == NULL) {          if ((attr = calloc(1, sizeof(*attr))) == NULL)
                 perror(NULL);                  fatal(ps);
                 exit(1);  
         }  
         attr->key = key;          attr->key = key;
         attr->val = ATTRVAL__MAX;          attr->val = ATTRVAL__MAX;
         if (value == NULL) {          if (value == NULL) {
                 attr->rawval = NULL;                  attr->rawval = NULL;
                 ps->flags |= PFLAG_ATTR;                  ps->flags |= PFLAG_ATTR;
         } else {          } else {
                 if ((attr->rawval = strdup(value)) == NULL) {                  if ((attr->rawval = strdup(value)) == NULL)
                         perror(NULL);                          fatal(ps);
                         exit(1);  
                 }  
                 ps->flags &= ~PFLAG_ATTR;                  ps->flags &= ~PFLAG_ATTR;
         }          }
         TAILQ_INSERT_TAIL(&ps->cur->attrq, attr, child);          TAILQ_INSERT_TAIL(&ps->cur->attrq, attr, child);
Line 627  xml_attrval(struct parse *ps, const char *name)
Line 622  xml_attrval(struct parse *ps, const char *name)
         if ((attr = TAILQ_LAST(&ps->cur->attrq, pattrq)) == NULL)          if ((attr = TAILQ_LAST(&ps->cur->attrq, pattrq)) == NULL)
                 return;                  return;
         if ((attr->val = attrval_parse(name)) == ATTRVAL__MAX &&          if ((attr->val = attrval_parse(name)) == ATTRVAL__MAX &&
             (attr->rawval = strdup(name)) == NULL) {              (attr->rawval = strdup(name)) == NULL)
                 perror(NULL);                  fatal(ps);
                 exit(1);  
         }  
         ps->flags &= ~PFLAG_ATTR;          ps->flags &= ~PFLAG_ATTR;
 }  }
   

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29

CVSweb