multibyte.c revision 1.4.24.1 1 1.4.24.1 tls /* $NetBSD: multibyte.c,v 1.4.24.1 2013/06/23 06:26:20 tls 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.4.24.1 tls #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.4.24.1 tls mbrtowc_l(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps, locale_t loc)
20 1.4.24.1 tls {
21 1.4.24.1 tls return mbrtowc(wc, str, max_sz, ps);
22 1.4.24.1 tls }
23 1.4.24.1 tls
24 1.4.24.1 tls 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.4.24.1 tls
32 1.4.24.1 tls size_t
33 1.4.24.1 tls wcrtomb_l(char *str, wchar_t wc, mbstate_t *ps, locale_t loc)
34 1.4.24.1 tls {
35 1.4.24.1 tls return wcrtomb(str, wc, ps);
36 1.4.24.1 tls }
37 1.4.24.1 tls
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.4.24.1 tls int
45 1.4.24.1 tls wctob_l(wint_t x, locale_t loc)
46 1.4.24.1 tls {
47 1.4.24.1 tls return x;
48 1.4.24.1 tls }
49 1.4.24.1 tls
50 1.4.24.1 tls wint_t
51 1.4.24.1 tls btowc(int x)
52 1.4.24.1 tls {
53 1.4.24.1 tls return x;
54 1.4.24.1 tls }
55 1.4.24.1 tls
56 1.1 christos wint_t
57 1.4.24.1 tls btowc_l(int x, locale_t loc)
58 1.4.24.1 tls {
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.4.24.1 tls
73 1.4.24.1 tls size_t
74 1.4.24.1 tls mbrlen_l(const char * __restrict p, size_t l, mbstate_t * __restrict v,
75 1.4.24.1 tls locale_t loc)
76 1.4.24.1 tls {
77 1.4.24.1 tls return mbrlen(p, l, v);
78 1.4.24.1 tls }
79 1.4.24.1 tls
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.4.24.1 tls
105 1.4.24.1 tls size_t
106 1.4.24.1 tls mbsrtowcs_l(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
107 1.4.24.1 tls mbstate_t * __restrict ps, locale_t loc)
108 1.4.24.1 tls {
109 1.4.24.1 tls return mbsrtowcs(pwcs, s, n, ps);
110 1.4.24.1 tls }
111 1.4.24.1 tls
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.4.24.1 tls
130 1.4.24.1 tls size_t
131 1.4.24.1 tls wcsrtombs_l(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
132 1.4.24.1 tls mbstate_t * __restrict ps, locale_t loc)
133 1.4.24.1 tls {
134 1.4.24.1 tls return wcsrtombs(s, pwcs, n, ps);
135 1.4.24.1 tls }
136 1.4.24.1 tls
137 1.4.24.1 tls size_t
138 1.4.24.1 tls _mb_cur_max_l(locale_t loc)
139 1.4.24.1 tls {
140 1.4.24.1 tls return MB_CUR_MAX;
141 1.4.24.1 tls }
142