multibyte.c revision 1.2 1 /* $NetBSD: multibyte.c,v 1.2 2007/05/29 17:46:44 he 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 */
7
8 #include <wchar.h>
9
10 size_t
11 mbrtowc(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps)
12 {
13 return (*wc = *str) == 0 ? 0 : 1;
14 }
15
16 size_t
17 wcrtomb(char *str, wchar_t wc, mbstate_t *ps)
18 {
19 *str = wc;
20 return 1;
21 }
22
23 int
24 wctob(wint_t x)
25 {
26 return x;
27 }
28
29 wint_t
30 btowc(int x) {
31 return x;
32 }
33
34 size_t
35 mbrlen(const char * __restrict p, size_t l, mbstate_t * __restrict v)
36 {
37 size_t i;
38 for (i = 0; i < l; i++)
39 if (p[i] == '\0')
40 return i;
41 return l;
42 }
43
44 int
45 mbsinit(const mbstate_t *s)
46 {
47 return 0;
48 }
49
50 size_t
51 mbsrtowcs(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
52 mbstate_t * __restrict ps)
53 {
54 const char *p;
55 wchar_t *d;
56 size_t count;
57
58 for (p = *s, d = pwcs, count = 0;
59 count <= n;
60 count++, d++, p++)
61 {
62 if (mbrtowc(d, p, 1, ps) == 0)
63 break;
64 }
65 return count;
66 }
67
68 size_t
69 wcsrtombs(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
70 mbstate_t * __restrict ps)
71 {
72 char *d;
73 const wchar_t *p;
74 size_t count;
75
76 for (p = *pwcs, d = s, count = 0;
77 count <= n && *p != 0;
78 count++, d++, p++)
79 {
80 wcrtomb(d, *p, ps);
81 }
82 *d = 0;
83 return count;
84 }
85