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