summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libstdio/printf.c
blob: 571420dc3cbc75d67b1dbd69d04c0c942c6fdcff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdarg.h>
#include <linux/types.h>
#include <unistd.h>
#include <stdlib.h>
#include "dietstdio.h"

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

int printf(const char *format,...)
{
  int n;
  char *printf_buf;
/*  char printf_buf[1024]; */
  va_list arg_ptr;
  va_start(arg_ptr, format);
  n=vsnprintf(0,1000000,format,arg_ptr);
/*  write(1,printf_buf,strlen(printf_buf)); */
  va_end (arg_ptr);
  va_start (arg_ptr, format);
  printf_buf=alloca(n+2);
  n=vsnprintf(printf_buf,n+1,format,arg_ptr);
#ifdef WANT_BUFFERED_STDIO
  fwrite(printf_buf,n,1,stdout);
#else
  write(1,printf_buf,n);
#endif
  va_end (arg_ptr);
  return n;
}