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