[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.96 and 1.97

version 1.96, 2014/08/10 23:54:41 version 1.97, 2014/11/28 03:14:18
Line 1 
Line 1 
 /*      $Id$ */  /*      $OpenBSD$ */
 /*  /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2012 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2012 Ingo Schwarze <schwarze@openbsd.org>
Line 54  static void   argn_free(struct mdoc_arg *, int);
Line 54  static void   argn_free(struct mdoc_arg *, int);
 static  enum margserr    args(struct mdoc *, int, int *,  static  enum margserr    args(struct mdoc *, int, int *,
                                 char *, enum argsflag, char **);                                  char *, enum argsflag, char **);
 static  int              args_checkpunct(const char *, int);  static  int              args_checkpunct(const char *, int);
 static  int              argv_multi(struct mdoc *, int,  static  void             argv_multi(struct mdoc *, int,
                                 struct mdoc_argv *, int *, char *);                                  struct mdoc_argv *, int *, char *);
 static  int              argv_single(struct mdoc *, int,  static  void             argv_single(struct mdoc *, int,
                                 struct mdoc_argv *, int *, char *);                                  struct mdoc_argv *, int *, char *);
   
 static  const enum argvflag argvflags[MDOC_ARG_MAX] = {  static  const enum argvflag argvflags[MDOC_ARG_MAX] = {
Line 342  mdoc_argv(struct mdoc *mdoc, int line, enum mdoct tok,
Line 342  mdoc_argv(struct mdoc *mdoc, int line, enum mdoct tok,
   
         switch (argvflags[tmp.arg]) {          switch (argvflags[tmp.arg]) {
         case ARGV_SINGLE:          case ARGV_SINGLE:
                 if ( ! argv_single(mdoc, line, &tmp, pos, buf))                  argv_single(mdoc, line, &tmp, pos, buf);
                         return(ARGV_ERROR);  
                 break;                  break;
         case ARGV_MULTI:          case ARGV_MULTI:
                 if ( ! argv_multi(mdoc, line, &tmp, pos, buf))                  argv_multi(mdoc, line, &tmp, pos, buf);
                         return(ARGV_ERROR);  
                 break;                  break;
         case ARGV_NONE:          case ARGV_NONE:
                 break;                  break;
Line 652  args_checkpunct(const char *buf, int i)
Line 650  args_checkpunct(const char *buf, int i)
         return('\0' == buf[i]);          return('\0' == buf[i]);
 }  }
   
 static int  static void
 argv_multi(struct mdoc *mdoc, int line,  argv_multi(struct mdoc *mdoc, int line,
                 struct mdoc_argv *v, int *pos, char *buf)                  struct mdoc_argv *v, int *pos, char *buf)
 {  {
Line 660  argv_multi(struct mdoc *mdoc, int line,
Line 658  argv_multi(struct mdoc *mdoc, int line,
         char            *p;          char            *p;
   
         for (v->sz = 0; ; v->sz++) {          for (v->sz = 0; ; v->sz++) {
                 if ('-' == buf[*pos])                  if (buf[*pos] == '-')
                         break;                          break;
                 ac = args(mdoc, line, pos, buf, ARGSFL_NONE, &p);                  ac = args(mdoc, line, pos, buf, ARGSFL_NONE, &p);
                 if (ARGS_ERROR == ac)                  if (ac == ARGS_EOLN)
                         return(0);  
                 else if (ARGS_EOLN == ac)  
                         break;                          break;
   
                 if (0 == v->sz % MULTI_STEP)                  if (v->sz % MULTI_STEP == 0)
                         v->value = mandoc_reallocarray(v->value,                          v->value = mandoc_reallocarray(v->value,
                             v->sz + MULTI_STEP, sizeof(char *));                              v->sz + MULTI_STEP, sizeof(char *));
   
                 v->value[(int)v->sz] = mandoc_strdup(p);                  v->value[(int)v->sz] = mandoc_strdup(p);
         }          }
   
         return(1);  
 }  }
   
 static int  static void
 argv_single(struct mdoc *mdoc, int line,  argv_single(struct mdoc *mdoc, int line,
                 struct mdoc_argv *v, int *pos, char *buf)                  struct mdoc_argv *v, int *pos, char *buf)
 {  {
Line 686  argv_single(struct mdoc *mdoc, int line,
Line 680  argv_single(struct mdoc *mdoc, int line,
         char            *p;          char            *p;
   
         ac = args(mdoc, line, pos, buf, ARGSFL_NONE, &p);          ac = args(mdoc, line, pos, buf, ARGSFL_NONE, &p);
         if (ARGS_ERROR == ac)          if (ac == ARGS_EOLN)
                 return(0);                  return;
         if (ARGS_EOLN == ac)  
                 return(1);  
   
         v->sz = 1;          v->sz = 1;
         v->value = mandoc_malloc(sizeof(char *));          v->value = mandoc_malloc(sizeof(char *));
         v->value[0] = mandoc_strdup(p);          v->value[0] = mandoc_strdup(p);
   
         return(1);  
 }  }

Legend:
Removed from v.1.96  
changed lines
  Added in v.1.97

CVSweb