update for HEAD-2003091401
[reactos.git] / lib / msvcrt / 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 /*
8  * @implemented
9  */
10 int
11 vsprintf(char *str, const char *fmt, va_list ap)
12 {
13   FILE f;
14   int len;
15
16   f._flag = _IOWRT|_IOSTRG|_IOBINARY;;
17   f._ptr = str;
18   f._cnt = INT_MAX;
19   f._file = -1;
20   len = vfprintf(&f,fmt, ap);
21   *f._ptr = 0;
22   return len;
23 }
24
25 /*
26  * @implemented
27  */
28 int
29 vswprintf(wchar_t *str, const wchar_t *fmt, va_list ap)
30 {
31   FILE f;
32   int len;
33
34   f._flag = _IOWRT|_IOSTRG|_IOBINARY;
35   f._ptr = (char*)str;
36   f._cnt = INT_MAX;
37   f._file = -1;
38   len = vfwprintf(&f,fmt, ap);
39   *(wchar_t*)f._ptr = 0;
40   return len;
41 }
42
43
44 /*
45  * @implemented
46  */
47 int
48 _vsnprintf(char *str, size_t maxlen, const char *fmt, va_list ap)
49 {
50   FILE f;
51   int len;
52   f._flag = _IOWRT|_IOSTRG|_IOBINARY;
53   f._ptr = str;
54   f._cnt = maxlen;
55   f._file = -1;
56   len = vfprintf(&f,fmt, ap);
57   // what if the buffer is full ??
58   *f._ptr = 0;
59   return len;
60 }
61
62 /*
63  * @implemented
64  */
65 int
66 _vsnwprintf(wchar_t *str, size_t maxlen, const wchar_t *fmt, va_list ap)
67 {
68   FILE f;
69   int len;
70   f._flag = _IOWRT|_IOSTRG|_IOBINARY;
71   f._ptr = (char*)str;
72   f._cnt = maxlen;
73   f._file = -1;
74   len = vfwprintf(&f,fmt, ap);
75   // what if the buffer is full ??
76   *(wchar_t*)f._ptr = 0;
77   return len;
78 }
79
80