summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libugly/asprintf.c
blob: d10c20b4a15f1b30ae4964b63b36ddf7dcba0cc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdarg.h>
#include <linux/types.h>
#include <stdlib.h>
#include "dietwarning.h"

extern int vsnprintf (char *str,size_t size,const char *format, va_list arg_ptr);

int asprintf(char **s, const char *format,...)
{
  int n;
  va_list arg_ptr;
  va_start(arg_ptr, format);
  n=vsnprintf(0,1000000,format,arg_ptr);
  va_end (arg_ptr);
  va_start (arg_ptr, format);
  if ((*s=malloc(n+2))) {
    n=vsnprintf(*s,n+1,format,arg_ptr);
    va_end(arg_ptr);
    return n;
  }
  return -1;
}