multibyte.c revision 1.6 1 /* $NetBSD: multibyte.c,v 1.6 2014/11/15 17:49:19 christos 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 wchar_t c;
16
17 if (str == NULL)
18 return 0;
19
20 if (wc != NULL)
21 *wc = (unsigned char)*str;
22
23 return *str == '\0' ? 0 : 1;
24 }
25
26 size_t
27 mbrtowc_l(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps, locale_t loc)
28 {
29 return mbrtowc(wc, str, max_sz, ps);
30 }
31
32 size_t
33 wcrtomb(char *str, wchar_t wc, mbstate_t *ps)
34 {
35 *str = wc & 0xFF;
36 return 1;
37 }
38
39
40 size_t
41 wcrtomb_l(char *str, wchar_t wc, mbstate_t *ps, locale_t loc)
42 {
43 return wcrtomb(str, wc, ps);
44 }
45
46 int
47 wctob(wint_t x)
48 {
49 return x;
50 }
51
52 int
53 wctob_l(wint_t x, locale_t loc)
54 {
55 return x;
56 }
57
58 wint_t
59 btowc(int x)
60 {
61 return x;
62 }
63
64 wint_t
65 btowc_l(int x, locale_t loc)
66 {
67 return x;
68 }
69
70 size_t
71 mbrlen(const char * __restrict p, size_t l, mbstate_t * __restrict v)
72 {
73 size_t i;
74 for (i = 0; i < l; i++)
75 if (p[i] == '\0')
76 return i;
77 return l;
78 }
79
80
81 size_t
82 mbrlen_l(const char * __restrict p, size_t l, mbstate_t * __restrict v,
83 locale_t loc)
84 {
85 return mbrlen(p, l, v);
86 }
87
88 int
89 mbsinit(const mbstate_t *s)
90 {
91 return 0;
92 }
93
94 size_t
95 mbsrtowcs(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
96 mbstate_t * __restrict ps)
97 {
98 const char *p;
99 wchar_t *d;
100 size_t count;
101
102 for (p = *s, d = pwcs, count = 0;
103 count <= n;
104 count++, d++, p++)
105 {
106 if (mbrtowc(d, p, 1, ps) == 0)
107 break;
108 }
109 return count;
110 }
111
112
113 size_t
114 mbsrtowcs_l(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
115 mbstate_t * __restrict ps, locale_t loc)
116 {
117 return mbsrtowcs(pwcs, s, n, ps);
118 }
119
120 size_t
121 wcsrtombs(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
122 mbstate_t * __restrict ps)
123 {
124 char *d;
125 const wchar_t *p;
126 size_t count;
127
128 for (p = *pwcs, d = s, count = 0;
129 count <= n && *p != 0;
130 count++, d++, p++)
131 {
132 wcrtomb(d, *p, ps);
133 }
134 *d = 0;
135 return count;
136 }
137
138 size_t
139 wcsrtombs_l(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
140 mbstate_t * __restrict ps, locale_t loc)
141 {
142 return wcsrtombs(s, pwcs, n, ps);
143 }
144
145 size_t
146 _mb_cur_max_l(locale_t loc)
147 {
148 return MB_CUR_MAX;
149 }
150