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