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