multibyte.c revision 1.4.24.1 1 /* $NetBSD: multibyte.c,v 1.4.24.1 2013/06/23 06:26:20 tls Exp $ */
2
3 /*
4 * Ignore all multibyte sequences, removes all the citrus code.
5 * Probably only used by vfprintf() when parsing the format string.
6 * And possibly from libcurses if compiled with HAVE_WCHAR.
7 */
8
9 #include <stdlib.h>
10 #include <wchar.h>
11
12 size_t
13 mbrtowc(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps)
14 {
15 return str == NULL || (*wc = (unsigned char)*str) == 0 ? 0 : 1;
16 }
17
18 size_t
19 mbrtowc_l(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps, locale_t loc)
20 {
21 return mbrtowc(wc, str, max_sz, ps);
22 }
23
24 size_t
25 wcrtomb(char *str, wchar_t wc, mbstate_t *ps)
26 {
27 *str = wc & 0xFF;
28 return 1;
29 }
30
31
32 size_t
33 wcrtomb_l(char *str, wchar_t wc, mbstate_t *ps, locale_t loc)
34 {
35 return wcrtomb(str, wc, ps);
36 }
37
38 int
39 wctob(wint_t x)
40 {
41 return x;
42 }
43
44 int
45 wctob_l(wint_t x, locale_t loc)
46 {
47 return x;
48 }
49
50 wint_t
51 btowc(int x)
52 {
53 return x;
54 }
55
56 wint_t
57 btowc_l(int x, locale_t loc)
58 {
59 return x;
60 }
61
62 size_t
63 mbrlen(const char * __restrict p, size_t l, mbstate_t * __restrict v)
64 {
65 size_t i;
66 for (i = 0; i < l; i++)
67 if (p[i] == '\0')
68 return i;
69 return l;
70 }
71
72
73 size_t
74 mbrlen_l(const char * __restrict p, size_t l, mbstate_t * __restrict v,
75 locale_t loc)
76 {
77 return mbrlen(p, l, v);
78 }
79
80 int
81 mbsinit(const mbstate_t *s)
82 {
83 return 0;
84 }
85
86 size_t
87 mbsrtowcs(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
88 mbstate_t * __restrict ps)
89 {
90 const char *p;
91 wchar_t *d;
92 size_t count;
93
94 for (p = *s, d = pwcs, count = 0;
95 count <= n;
96 count++, d++, p++)
97 {
98 if (mbrtowc(d, p, 1, ps) == 0)
99 break;
100 }
101 return count;
102 }
103
104
105 size_t
106 mbsrtowcs_l(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
107 mbstate_t * __restrict ps, locale_t loc)
108 {
109 return mbsrtowcs(pwcs, s, n, ps);
110 }
111
112 size_t
113 wcsrtombs(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
114 mbstate_t * __restrict ps)
115 {
116 char *d;
117 const wchar_t *p;
118 size_t count;
119
120 for (p = *pwcs, d = s, count = 0;
121 count <= n && *p != 0;
122 count++, d++, p++)
123 {
124 wcrtomb(d, *p, ps);
125 }
126 *d = 0;
127 return count;
128 }
129
130 size_t
131 wcsrtombs_l(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
132 mbstate_t * __restrict ps, locale_t loc)
133 {
134 return wcsrtombs(s, pwcs, n, ps);
135 }
136
137 size_t
138 _mb_cur_max_l(locale_t loc)
139 {
140 return MB_CUR_MAX;
141 }
142