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