1 /* $NetBSD: multibyte.c,v 1.4 2008/07/29 13:46:16 tnozaki 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 = (unsigned char)*str) == 0 ? 0 : 1; 15 } 16 17 size_t 18 wcrtomb(char *str, wchar_t wc, mbstate_t *ps) 19 { 20 *str = wc & 0xFF; 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