Merge 13159:13510 from trunk
[reactos.git] / reactos / lib / crt / stdio / vsprintf.c
1 /* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
2 #include <msvcrt/stdio.h>
3 #include <msvcrt/stdarg.h>
4 #include <limits.h>
5 #include <msvcrt/internal/file.h>
6
7 int
8 crt_vsprintf(char *str, const char *fmt, va_list ap)
9 {
10 FILE f;
11 int len;
12
13 f._flag = _IOWRT|_IOSTRG|_IOBINARY;
14 f._ptr = str;
15 f._cnt = INT_MAX;
16 f._file = -1;
17 len = vfprintf(&f,fmt, ap);
18 *f._ptr = 0;
19 return len;
20 }
21
22 /*
23 * @implemented
24 */
25 int
26 vswprintf(wchar_t *str, const wchar_t *fmt, va_list ap)
27 {
28 FILE f;
29 int len;
30
31 f._flag = _IOWRT|_IOSTRG|_IOBINARY;
32 f._ptr = (char*)str;
33 f._cnt = INT_MAX;
34 f._file = -1;
35 len = vfwprintf(&f,fmt, ap);
36 *(wchar_t*)f._ptr = 0;
37 return len;
38 }
39
40
41 int
42 crt__vsnprintf(char *str, size_t maxlen, const char *fmt, va_list ap)
43 {
44 FILE f;
45 int len;
46 f._flag = _IOWRT|_IOSTRG|_IOBINARY;
47 f._ptr = str;
48 f._cnt = maxlen;
49 f._file = -1;
50 len = vfprintf(&f,fmt, ap);
51 // what if the buffer is full ??
52 *f._ptr = 0;
53 return len;
54 }
55
56 int
57 crt__vsnwprintf(wchar_t *str, size_t maxlen, const wchar_t *fmt, va_list ap)
58 {
59 FILE f;
60 int len;
61 f._flag = _IOWRT|_IOSTRG|_IOBINARY;
62 f._ptr = (char*)str;
63 f._cnt = maxlen;
64 f._file = -1;
65 len = vfwprintf(&f,fmt, ap);
66 // what if the buffer is full ??
67 *(wchar_t*)f._ptr = 0;
68 return len;
69 }
70
71