Home | History | Annotate | Line # | Download | only in libhack
multibyte.c revision 1.2
      1  1.2        he /*      $NetBSD: multibyte.c,v 1.2 2007/05/29 17:46:44 he 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.1  christos  */
      7  1.1  christos 
      8  1.1  christos #include <wchar.h>
      9  1.1  christos 
     10  1.1  christos size_t
     11  1.1  christos mbrtowc(wchar_t *wc, const char *str, size_t max_sz, mbstate_t *ps)
     12  1.1  christos {
     13  1.1  christos 	return (*wc = *str) == 0 ? 0 : 1;
     14  1.1  christos }
     15  1.1  christos 
     16  1.1  christos size_t
     17  1.1  christos wcrtomb(char *str, wchar_t wc, mbstate_t *ps)
     18  1.1  christos {
     19  1.1  christos     *str = wc;
     20  1.1  christos     return 1;
     21  1.1  christos }
     22  1.1  christos 
     23  1.1  christos int
     24  1.1  christos wctob(wint_t x)
     25  1.1  christos {
     26  1.1  christos 	return x;
     27  1.1  christos }
     28  1.1  christos 
     29  1.1  christos wint_t
     30  1.1  christos btowc(int x) {
     31  1.1  christos 	return x;
     32  1.1  christos }
     33  1.1  christos 
     34  1.1  christos size_t
     35  1.1  christos mbrlen(const char * __restrict p, size_t l, mbstate_t * __restrict v)
     36  1.1  christos {
     37  1.1  christos 	size_t i;
     38  1.1  christos 	for (i = 0; i < l; i++)
     39  1.1  christos 		if (p[i] == '\0')
     40  1.1  christos 			return i;
     41  1.1  christos 	return l;
     42  1.1  christos }
     43  1.1  christos 
     44  1.1  christos int
     45  1.1  christos mbsinit(const mbstate_t *s)
     46  1.1  christos {
     47  1.1  christos 	return 0;
     48  1.1  christos }
     49  1.1  christos 
     50  1.1  christos size_t
     51  1.1  christos mbsrtowcs(wchar_t * __restrict pwcs, const char ** __restrict s, size_t n,
     52  1.1  christos     mbstate_t * __restrict ps)
     53  1.1  christos {
     54  1.2        he 	const char *p;
     55  1.2        he 	wchar_t *d;
     56  1.2        he 	size_t count;
     57  1.2        he 
     58  1.2        he 	for (p = *s, d = pwcs, count = 0;
     59  1.2        he 		count <= n;
     60  1.2        he 		count++, d++, p++)
     61  1.2        he 	{
     62  1.2        he 		if (mbrtowc(d, p, 1, ps) == 0)
     63  1.2        he 			break;
     64  1.2        he 	}
     65  1.2        he 	return count;
     66  1.1  christos }
     67  1.1  christos 
     68  1.1  christos size_t
     69  1.1  christos wcsrtombs(char * __restrict s, const wchar_t ** __restrict pwcs, size_t n,
     70  1.1  christos     mbstate_t * __restrict ps)
     71  1.1  christos {
     72  1.2        he 	char *d;
     73  1.2        he 	const wchar_t *p;
     74  1.2        he 	size_t count;
     75  1.2        he 
     76  1.2        he 	for (p = *pwcs, d = s, count = 0;
     77  1.2        he 		count <= n && *p != 0;
     78  1.2        he 		count++, d++, p++)
     79  1.2        he 	{
     80  1.2        he 		wcrtomb(d, *p, ps);
     81  1.2        he 	}
     82  1.2        he 	*d = 0;
     83  1.2        he 	return count;
     84  1.1  christos }
     85