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

Diff for /mandoc/mdoc_argv.c between version 1.30 and 1.31

version 1.30, 2009/10/24 05:52:13 version 1.31, 2009/10/28 19:21:59
Line 23 
Line 23 
 #include <string.h>  #include <string.h>
   
 #include "libmdoc.h"  #include "libmdoc.h"
   #include "libmandoc.h"
   
 /*  /*
  * Routines to parse arguments of macros.  Arguments follow the syntax   * Routines to parse arguments of macros.  Arguments follow the syntax
Line 266  mdoc_argv(struct mdoc *m, int line, int tok,
Line 267  mdoc_argv(struct mdoc *m, int line, int tok,
         if ( ! argv(m, line, &tmp, pos, buf))          if ( ! argv(m, line, &tmp, pos, buf))
                 return(ARGV_ERROR);                  return(ARGV_ERROR);
   
         if (NULL == (arg = *v)) {          if (NULL == (arg = *v))
                 *v = calloc(1, sizeof(struct mdoc_arg));                  arg = mandoc_calloc(1, sizeof(struct mdoc_arg));
                 if (NULL == *v) {  
                         (void)mdoc_nerr(m, m->last, EMALLOC);  
                         return(ARGV_ERROR);  
                 }  
                 arg = *v;  
         }  
   
         arg->argc++;          arg->argc++;
         arg->argv = realloc(arg->argv, arg->argc *          arg->argv = mandoc_realloc
                         sizeof(struct mdoc_argv));                  (arg->argv, arg->argc * sizeof(struct mdoc_argv));
   
         if (NULL == arg->argv) {  
                 (void)mdoc_nerr(m, m->last, EMALLOC);  
                 return(ARGV_ERROR);  
         }  
   
         (void)memcpy(&arg->argv[(int)arg->argc - 1],          (void)memcpy(&arg->argv[(int)arg->argc - 1],
                         &tmp, sizeof(struct mdoc_argv));                          &tmp, sizeof(struct mdoc_argv));
   
Line 673  argv_multi(struct mdoc *m, int line, 
Line 663  argv_multi(struct mdoc *m, int line, 
                 else if (ARGS_EOLN == c)                  else if (ARGS_EOLN == c)
                         break;                          break;
   
                 if (0 == v->sz % MULTI_STEP) {                  if (0 == v->sz % MULTI_STEP)
                         v->value = realloc(v->value,                          v->value = mandoc_realloc(v->value,
                                 (v->sz + MULTI_STEP) * sizeof(char *));                                  (v->sz + MULTI_STEP) * sizeof(char *));
                         if (NULL == v->value) {  
                                 (void)mdoc_nerr(m, m->last, EMALLOC);                  v->value[(int)v->sz] = mandoc_strdup(p);
                                 return(ARGV_ERROR);  
                         }  
                 }  
                 if (NULL == (v->value[(int)v->sz] = strdup(p)))  
                         return(mdoc_nerr(m, m->last, EMALLOC));  
         }          }
   
         return(1);          return(1);
Line 706  argv_opt_single(struct mdoc *m, int line, 
Line 691  argv_opt_single(struct mdoc *m, int line, 
                 return(1);                  return(1);
   
         v->sz = 1;          v->sz = 1;
         if (NULL == (v->value = calloc(1, sizeof(char *))))          v->value = mandoc_malloc(sizeof(char *));
                 return(mdoc_nerr(m, m->last, EMALLOC));          v->value[0] = mandoc_strdup(p);
         if (NULL == (v->value[0] = strdup(p)))  
                 return(mdoc_nerr(m, m->last, EMALLOC));  
   
         return(1);          return(1);
 }  }
Line 734  argv_single(struct mdoc *m, int line, 
Line 717  argv_single(struct mdoc *m, int line, 
                 return(mdoc_perr(m, line, ppos, EARGVAL));                  return(mdoc_perr(m, line, ppos, EARGVAL));
   
         v->sz = 1;          v->sz = 1;
         if (NULL == (v->value = calloc(1, sizeof(char *))))          v->value = mandoc_malloc(sizeof(char *));
                 return(mdoc_nerr(m, m->last, EMALLOC));          v->value[0] = mandoc_strdup(p);
         if (NULL == (v->value[0] = strdup(p)))  
                 return(mdoc_nerr(m, m->last, EMALLOC));  
   
         return(1);          return(1);
 }  }

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31

CVSweb