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