Home | History | Annotate | Line # | Download | only in libhack
multibyte.c revision 1.4.18.1
      1  1.4.18.1      yamt /*      $NetBSD: multibyte.c,v 1.4.18.1 2014/05/22 12:01:35 yamt 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.3       dsl  * And possibly from libcurses if compiled with HAVE_WCHAR.
      7       1.1  christos  */
      8       1.1  christos 
      9  1.4.18.1      yamt #include <stdlib.h>
     10       1.1  christos #include <wchar.h>
     11       1.1  christos 
     12       1.1  christos size_t
     13       1.1  christos mbrtowc(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps)
     14       1.1  christos {
     15       1.4   tnozaki 	return str == NULL || (*wc = (unsigned char)*str) == 0 ? 0 : 1;
     16       1.1  christos }
     17       1.1  christos 
     18       1.1  christos size_t
     19  1.4.18.1      yamt mbrtowc_l(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps, locale_t loc)
     20  1.4.18.1      yamt {
     21  1.4.18.1      yamt 	return mbrtowc(wc, str, max_sz, ps);
     22  1.4.18.1      yamt }
     23  1.4.18.1      yamt 
     24  1.4.18.1      yamt size_t
     25       1.1  christos wcrtomb(char *str, wchar_t wc, mbstate_t *ps)
     26       1.1  christos {
     27       1.4   tnozaki     *str = wc & 0xFF;
     28       1.1  christos     return 1;
     29       1.1  christos }
     30       1.1  christos 
     31  1.4.18.1      yamt 
     32  1.4.18.1      yamt size_t
     33  1.4.18.1      yamt wcrtomb_l(char *str, wchar_t wc, mbstate_t *ps, locale_t loc)
     34  1.4.18.1      yamt {
     35  1.4.18.1      yamt 	return wcrtomb(str, wc, ps);
     36  1.4.18.1      yamt }
     37  1.4.18.1      yamt 
     38       1.1  christos int
     39       1.1  christos wctob(wint_t x)
     40       1.1  christos {
     41       1.1  christos 	return x;
     42       1.1  christos }
     43       1.1  christos 
     44  1.4.18.1      yamt int
     45  1.4.18.1      yamt wctob_l(wint_t x, locale_t loc)
     46  1.4.18.1      yamt {
     47  1.4.18.1      yamt 	return x;
     48  1.4.18.1      yamt }
     49  1.4.18.1      yamt 
     50  1.4.18.1      yamt wint_t
     51  1.4.18.1      yamt btowc(int x)
     52  1.4.18.1      yamt {
     53  1.4.18.1      yamt 	return x;
     54  1.4.18.1      yamt }
     55  1.4.18.1      yamt 
     56       1.1  christos wint_t
     57  1.4.18.1      yamt btowc_l(int x, locale_t loc)
     58  1.4.18.1      yamt {
     59       1.1  christos 	return x;
     60       1.1  christos }
     61       1.1  christos 
     62       1.1  christos size_t
     63       1.1  christos mbrlen(const char * __restrict p, size_t l, mbstate_t * __restrict v)
     64       1.1  christos {
     65       1.1  christos 	size_t i;
     66       1.1  christos 	for (i = 0; i < l; i++)
     67       1.1  christos 		if (p[i] == '\0')
     68       1.1  christos 			return i;
     69       1.1  christos 	return l;
     70       1.1  christos }
     71       1.1  christos 
     72  1.4.18.1      yamt 
     73  1.4.18.1      yamt size_t
     74  1.4.18.1      yamt mbrlen_l(const char * __restrict p, size_t l, mbstate_t * __restrict v,
     75  1.4.18.1      yamt     locale_t loc)
     76  1.4.18.1      yamt {
     77  1.4.18.1      yamt 	return mbrlen(p, l, v);
     78  1.4.18.1      yamt }
     79  1.4.18.1      yamt 
     80       1.1  christos int
     81       1.1  christos mbsinit(const mbstate_t *s)
     82       1.1  christos {
     83       1.1  christos 	return 0;
     84       1.1  christos }
     85       1.1  christos 
     86       1.1  christos size_t
     87       1.1  christos mbsrtowcs(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
     88       1.1  christos     mbstate_t * __restrict ps)
     89       1.1  christos {
     90       1.2        he 	const char *p;
     91       1.2        he 	wchar_t *d;
     92       1.2        he 	size_t count;
     93       1.2        he 
     94       1.2        he 	for (p = *s, d = pwcs, count = 0;
     95       1.2        he 		count <= n;
     96       1.2        he 		count++, d++, p++)
     97       1.2        he 	{
     98       1.2        he 		if (mbrtowc(d, p, 1, ps) == 0)
     99       1.2        he 			break;
    100       1.2        he 	}
    101       1.2        he 	return count;
    102       1.1  christos }
    103       1.1  christos 
    104  1.4.18.1      yamt 
    105  1.4.18.1      yamt size_t
    106  1.4.18.1      yamt mbsrtowcs_l(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
    107  1.4.18.1      yamt     mbstate_t * __restrict ps, locale_t loc)
    108  1.4.18.1      yamt {
    109  1.4.18.1      yamt 	return mbsrtowcs(pwcs, s, n, ps);
    110  1.4.18.1      yamt }
    111  1.4.18.1      yamt 
    112       1.1  christos size_t
    113       1.1  christos wcsrtombs(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
    114       1.1  christos     mbstate_t * __restrict ps)
    115       1.1  christos {
    116       1.2        he 	char *d;
    117       1.2        he 	const wchar_t *p;
    118       1.2        he 	size_t count;
    119       1.2        he 
    120       1.2        he 	for (p = *pwcs, d = s, count = 0;
    121       1.2        he 		count <= n && *p != 0;
    122       1.2        he 		count++, d++, p++)
    123       1.2        he 	{
    124       1.2        he 		wcrtomb(d, *p, ps);
    125       1.2        he 	}
    126       1.2        he 	*d = 0;
    127       1.2        he 	return count;
    128       1.1  christos }
    129  1.4.18.1      yamt 
    130  1.4.18.1      yamt size_t
    131  1.4.18.1      yamt wcsrtombs_l(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
    132  1.4.18.1      yamt     mbstate_t * __restrict ps, locale_t loc)
    133  1.4.18.1      yamt {
    134  1.4.18.1      yamt 	return wcsrtombs(s, pwcs, n, ps);
    135  1.4.18.1      yamt }
    136  1.4.18.1      yamt 
    137  1.4.18.1      yamt size_t
    138  1.4.18.1      yamt _mb_cur_max_l(locale_t loc)
    139  1.4.18.1      yamt {
    140  1.4.18.1      yamt 	return MB_CUR_MAX;
    141  1.4.18.1      yamt }
    142