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