]> pd.if.org Git - pdclib/blob - functions/uchar/_PDCLIB_mbsrtoc32s.c
Cosmetic comment fixes.
[pdclib] / functions / uchar / _PDCLIB_mbsrtoc32s.c
1 /* _PDCLIB_mbsrtoc32s( char32_t *, const char * *, size_t, mbstate_t * )
2
3    This file is part of the Public Domain C Library (PDCLib).
4    Permission is granted to use, modify, and / or redistribute at will.
5 */
6
7 #ifndef REGTEST
8 #include <uchar.h>
9 #include <errno.h>
10 #include <stdint.h>
11 #include <string.h>
12 #include "_PDCLIB_encoding.h"
13 #include "_PDCLIB_locale.h"
14
15 static size_t _PDCLIB_mbsrtoc32s_l
16 (
17     char32_t        *restrict   dst, 
18     const char     **restrict   src, 
19     size_t                      len, 
20     mbstate_t       *restrict   ps,
21     locale_t         restrict   l
22 )
23 {
24     size_t dstlen = len = dst ? len : SIZE_MAX;
25     char32_t *restrict *restrict dstp = dst ? &dst : NULL;
26
27     size_t                     srclen = strlen(*src);
28     if(l->_Codec->__mbstoc32s(dstp, &dstlen, src, &srclen, ps)) {
29         return len - dstlen;
30     } else {
31         errno = EILSEQ;
32         return (size_t) -1;
33     }
34 }
35
36 size_t _PDCLIB_mbsrtoc32s(
37     char32_t        *restrict   dst, 
38     const char     **restrict   src, 
39     size_t                      len, 
40     mbstate_t       *restrict   ps
41 )
42 {
43     return _PDCLIB_mbsrtoc32s_l(dst, src, len, ps, _PDCLIB_threadlocale());
44 }
45
46 #endif
47
48 #ifdef TEST
49 #include "_PDCLIB_test.h"
50
51 int main( void )
52 {
53     TESTCASE( NO_TESTDRIVER );
54     return TEST_RESULTS;
55 }
56 #endif