]> pd.if.org Git - pdclib/blob - functions/wchar/mbsinit.c
145edd81983ab07b7ebd0360361ce1a8e53e156a
[pdclib] / functions / wchar / mbsinit.c
1 /* mbsinit(mbstate_t *ps);\r
2 \r
3    This file is part of the Public Domain C Library (PDCLib).\r
4    Permission is granted to use, modify, and / or redistribute at will.\r
5 */\r
6 \r
7 #include <wchar.h>\r
8 #ifndef REGTEST\r
9 #include <_PDCLIB_encoding.h>\r
10 #include <_PDCLIB_locale.h>\r
11 \r
12 int _PDCLIB_mbsinit_l( const mbstate_t *ps, locale_t l )\r
13 {\r
14     if( ps ) {\r
15         return ps->_Surrogate == 0\r
16             && ps->_PendState == 0\r
17             && l->_Codec->__mbsinit(ps);\r
18     } else return 1;\r
19 }\r
20 \r
21 int mbsinit( const mbstate_t * ps )\r
22 {\r
23     return _PDCLIB_mbsinit_l(ps, _PDCLIB_threadlocale());\r
24 }\r
25 \r
26 #endif\r
27 \r
28 #ifdef TEST\r
29 #include <_PDCLIB_test.h>\r
30 \r
31 int main( void )\r
32 {\r
33     mbstate_t mbs;\r
34     memset(&mbs, 0, sizeof mbs);\r
35 \r
36     TESTCASE(mbsinit(NULL) != 0);\r
37     TESTCASE(mbsinit(&mbs) != 0);\r
38 \r
39 #ifndef REGTEST\r
40     // Surrogate pending\r
41     mbs._Surrogate = 0xFEED;\r
42     TESTCASE(mbsinit(&mbs) == 0);\r
43 \r
44     mbs._Surrogate = 0;\r
45     mbs._PendState = 1;\r
46     TESTCASE(mbsinit(&mbs) == 0);\r
47 #endif\r
48     return TEST_RESULTS;\r
49 }\r
50 #endif\r
51 \r
52 \r
53 \r