summaryrefslogtreecommitdiffstats
path: root/lib/libc/locale/none.c
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2004-04-07 10:48:19 +0000
committertjr <tjr@FreeBSD.org>2004-04-07 10:48:19 +0000
commit54a18fa1d63375b790f3bf3157f6b64b294e5d16 (patch)
tree44e2a3f83138ea23f4b4f68cbea18e4f60c8745e /lib/libc/locale/none.c
parenta6980b04fc41a4c6dc314dc3aa00de7e7834ba7b (diff)
downloadFreeBSD-src-54a18fa1d63375b790f3bf3157f6b64b294e5d16.zip
FreeBSD-src-54a18fa1d63375b790f3bf3157f6b64b294e5d16.tar.gz
Allow partial multibyte characters to accumulate in conversion state
objects passed to mbrtowc(), mbsrtowcs(), and mbrlen(), as required by C99.
Diffstat (limited to 'lib/libc/locale/none.c')
-rw-r--r--lib/libc/locale/none.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/libc/locale/none.c b/lib/libc/locale/none.c
index 3c4d8c7..a94d040 100644
--- a/lib/libc/locale/none.c
+++ b/lib/libc/locale/none.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2002, 2003 Tim J. Robbins. All rights reserved.
+ * Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved.
* Copyright (c) 1993
* The Regents of the University of California. All rights reserved.
*
@@ -51,11 +51,13 @@ __FBSDID("$FreeBSD$");
extern size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict,
size_t, mbstate_t * __restrict);
+extern int (*__mbsinit)(const mbstate_t *);
extern size_t (*__wcrtomb)(char * __restrict, wchar_t, mbstate_t * __restrict);
int _none_init(_RuneLocale *);
size_t _none_mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
mbstate_t * __restrict);
+int _none_mbsinit(const mbstate_t *);
size_t _none_wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
int
@@ -63,12 +65,24 @@ _none_init(_RuneLocale *rl)
{
__mbrtowc = _none_mbrtowc;
+ __mbsinit = _none_mbsinit;
__wcrtomb = _none_wcrtomb;
_CurrentRuneLocale = rl;
__mb_cur_max = 1;
return(0);
}
+int
+_none_mbsinit(const mbstate_t *ps __unused)
+{
+
+ /*
+ * Encoding is not state dependent - we are always in the
+ * initial state.
+ */
+ return (1);
+}
+
size_t
_none_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n,
mbstate_t * __restrict ps __unused)
OpenPOWER on IntegriCloud