int vasprintf()

in src/vasprintf.c [623:653]


int vasprintf(char **ptr, const char *format_string, va_list vargs)
{
  xprintf_struct s;
  int retval;

  s.src_string = format_string;
#ifdef va_copy
  va_copy (s.vargs, vargs);
#else
# ifdef __va_copy
  __va_copy (s.vargs, vargs);
# else
#  ifdef WIN32
  s.vargs = vargs;
#  else
  memcpy (&s.vargs, &vargs, sizeof (s.va_args));
#  endif /* WIN32 */
# endif /* __va_copy */
#endif /* va_copy */
  s.maxlen = (size_t)INT_MAX;

  retval = core(&s);
  va_end(s.vargs);
  if (retval == EOF) {
    *ptr = NULL;
    return EOF;
  }

  *ptr = s.buffer_base;
  return retval;
}