Listing 1

char  *aprintf_base;
char   aprintf_ofst;

const char  *aprintf(const char*Format, ...)
{
  va_list Args;
  va_start(Args,Format);
  aprintf_ofst=0;
  aprintf_base=NULL;
  vdprintf(aprintf_out,Format,Args);
  aprintf_out('\0');
  va_end(Args);
  return aprintf_base;
}

int  aprintf_out(int Char)
{
  aprintf_base=realloc(aprintf_base,aprintf_ofst+1);
  if (aprintf_base==NULL)
    return EOF;
  
  aprintf_base[aprintf_ofst++]=Char;
  return Char;
}