2922a9cf861569be2d04d15013013e3f75264927
[reactos.git] / reactos / lib / string / wcstombs.c
1 #include <windows.h>
2 #define NTOS_MODE_USER
3 #define _NTSYSTEM_
4 #include <ndk/umtypes.h>
5 #include <ndk/rtlfuncs.h>
6
7 /*
8 * @implemented
9 */
10 int wctomb (char *mbchar, wchar_t wchar)
11 {
12 NTSTATUS Status;
13 ULONG Size;
14
15 if (mbchar == NULL)
16 return 0;
17
18 Status = RtlUnicodeToMultiByteN (mbchar,
19 1,
20 &Size,
21 &wchar,
22 sizeof(WCHAR));
23 if (!NT_SUCCESS(Status))
24 return -1;
25
26 return (int)Size;
27 }
28
29 /*
30 * @implemented
31 */
32 size_t wcstombs (char *mbstr, const wchar_t *wcstr, size_t count)
33 {
34 NTSTATUS Status;
35 ULONG Size;
36 ULONG Length;
37
38 Length = wcslen (wcstr);
39
40 if (mbstr == NULL)
41 {
42 RtlUnicodeToMultiByteSize (&Size,
43 (wchar_t *)wcstr,
44 Length * sizeof(WCHAR));
45
46 return (size_t)Size;
47 }
48
49 Status = RtlUnicodeToMultiByteN (mbstr,
50 count,
51 &Size,
52 (wchar_t *)wcstr,
53 Length * sizeof(WCHAR));
54 if (!NT_SUCCESS(Status))
55 return -1;
56
57 return (size_t)Size;
58 }
59
60 /* EOF */