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