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

Diff for /mandoc/compat_vasprintf.c between version 1.1 and 1.4

version 1.1, 2015/03/19 14:57:29 version 1.4, 2020/06/15 01:37:15
Line 1 
Line 1 
 #include "config.h"  /* $Id$ */
   
 #if HAVE_VASPRINTF  
   
 int dummy;  
   
 #else  
   
 /*      $Id$    */  
 /*  /*
  * Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>
  *   *
Line 28  int dummy;
Line 20  int dummy;
  * printf(3) or completely reimplementing printf(3), i can't think   * printf(3) or completely reimplementing printf(3), i can't think
  * of another portable solution.   * of another portable solution.
  */   */
   #include "config.h"
   
 #include <stdarg.h>  #include <stdarg.h>
 #include <stdio.h>  #include <stdio.h>
Line 37  int
Line 30  int
 vasprintf(char **ret, const char *format, va_list ap)  vasprintf(char **ret, const char *format, va_list ap)
 {  {
         char     buf[2];          char     buf[2];
           va_list  ap2;
         int      sz;          int      sz;
   
         if ((sz = vsnprintf(buf, sizeof(buf), format, ap)) != -1 &&          va_copy(ap2, ap);
             (*ret = malloc(sz + 1)) != NULL) {          sz = vsnprintf(buf, sizeof(buf), format, ap2);
           va_end(ap2);
   
           if (sz != -1 && (*ret = malloc(sz + 1)) != NULL) {
                 if (vsnprintf(*ret, sz + 1, format, ap) == sz)                  if (vsnprintf(*ret, sz + 1, format, ap) == sz)
                         return(sz);                          return sz;
                 free(*ret);                  free(*ret);
         }          }
         *ret = NULL;          *ret = NULL;
         return(-1);          return -1;
 }  }
   
 #endif  

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

CVSweb