- Cleanup the /lib directory, by putting more 3rd-party libs in /3rdparty, and by...
[reactos.git] / reactos / lib / sdk / crt / conio / cprintf.c
1 /*
2 * COPYRIGHT: Winehq
3 * PROJECT: wine
4 * FILE: msvcrt/conio/cprintf.c
5 * PURPOSE: C Runtime
6 * PROGRAMMER: Magnus Olsen (Imported from wine cvs 2006-05-23)
7 */
8
9 #include <precomp.h>
10
11 /*
12 * @implemented
13 */
14 int
15 _cprintf(const char *fmt, ...)
16 {
17 char buf[2048], *mem = buf;
18 int written, resize = sizeof(buf), retval;
19 va_list valist;
20
21 while ((written = _vsnprintf( mem, resize, fmt, valist )) == -1 ||
22 written > resize)
23 {
24 resize = (written == -1 ? resize * 2 : written + 1);
25 if (mem != buf)
26 free (mem);
27 if (!(mem = (char *)malloc(resize)))
28 return EOF;
29 va_start( valist, fmt );
30 }
31 va_end(valist);
32 retval = _cputs( mem );
33 if (mem != buf)
34 free (mem);
35 return retval;
36 }