diff options
author | Tim J. Robbins <tjr@FreeBSD.org> | 2004-04-04 11:31:29 +0000 |
---|---|---|
committer | Tim J. Robbins <tjr@FreeBSD.org> | 2004-04-04 11:31:29 +0000 |
commit | 4fb9e805dc7791b3a0b7f760e2c3f23c27ec6269 (patch) | |
tree | e55b69186236f3d02d9104179bb76be616d5a4d6 | |
parent | 4f6d4aa30de4474cc1ef2671d91991ad3d391ec6 (diff) |
Remove support for emulating mbrtowc() and wcrtomb() in terms of the
old rune interface now that it is no longer needed.
Notes
Notes:
svn path=/head/; revision=127835
-rw-r--r-- | lib/libc/locale/mbrtowc.c | 51 | ||||
-rw-r--r-- | lib/libc/locale/setrunelocale.c | 8 | ||||
-rw-r--r-- | lib/libc/locale/table.c | 5 | ||||
-rw-r--r-- | lib/libc/locale/wcrtomb.c | 29 |
4 files changed, 4 insertions, 89 deletions
diff --git a/lib/libc/locale/mbrtowc.c b/lib/libc/locale/mbrtowc.c index e99308242a8c..f3b12b43b721 100644 --- a/lib/libc/locale/mbrtowc.c +++ b/lib/libc/locale/mbrtowc.c @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2002, 2003 Tim J. Robbins. + * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,9 +27,6 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include <errno.h> -#include <rune.h> -#include <stdlib.h> #include <wchar.h> extern size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict, @@ -42,49 +39,3 @@ mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, return (__mbrtowc(pwc, s, n, ps)); } - -/* - * Emulate the ISO C mbrtowc() function in terms of the deprecated - * 4.4BSD sgetrune() function. - */ -size_t -__emulated_mbrtowc(wchar_t * __restrict pwc, const char * __restrict s, - size_t n, mbstate_t * __restrict ps __unused) -{ - const char *e; - rune_t r; - - if (s == NULL) { - pwc = NULL; - s = ""; - n = 1; - } - - if ((r = sgetrune(s, n, &e)) == _INVALID_RUNE) { - /* - * The design of sgetrune() doesn't give us any way to tell - * between incomplete and invalid multibyte sequences. - */ - - if (n >= (size_t)MB_CUR_MAX) { - /* - * If we have been supplied with at least MB_CUR_MAX - * bytes and still cannot find a valid character, the - * data must be invalid. - */ - errno = EILSEQ; - return ((size_t)-1); - } - - /* - * .. otherwise, it's an incomplete character or an invalid - * character we cannot detect yet. - */ - return ((size_t)-2); - } - - if (pwc != NULL) - *pwc = (wchar_t)r; - - return (r != 0 ? (size_t)(e - s) : 0); -} diff --git a/lib/libc/locale/setrunelocale.c b/lib/libc/locale/setrunelocale.c index 165f87779ed7..11378a081848 100644 --- a/lib/libc/locale/setrunelocale.c +++ b/lib/libc/locale/setrunelocale.c @@ -65,10 +65,6 @@ extern _RuneLocale *_Read_RuneMagi(FILE *); extern size_t (*__mbrtowc)(wchar_t * __restrict, const char * __restrict, size_t, mbstate_t * __restrict); extern size_t (*__wcrtomb)(char * __restrict, wchar_t, mbstate_t * __restrict); -extern size_t __emulated_mbrtowc(wchar_t * __restrict, const char * __restrict, - size_t, mbstate_t * __restrict ps); -extern size_t __emulated_wcrtomb(char * __restrict, wchar_t, - mbstate_t * __restrict ps); extern rune_t __emulated_sgetrune(const char *, size_t, const char **); extern int __emulated_sputrune(rune_t, char *, size_t, char **); extern size_t _none_mbrtowc(wchar_t * __restrict, const char * __restrict, @@ -156,8 +152,8 @@ __setrunelocale(const char *encoding) } (void)fclose(fp); - __mbrtowc = __emulated_mbrtowc; - __wcrtomb = __emulated_wcrtomb; + __mbrtowc = NULL; + __wcrtomb = NULL; rl->sputrune = __emulated_sputrune; rl->sgetrune = __emulated_sgetrune; if (strcmp(rl->encoding, "NONE") == 0) diff --git a/lib/libc/locale/table.c b/lib/libc/locale/table.c index 6497a24b7119..f93fc1a7cc46 100644 --- a/lib/libc/locale/table.c +++ b/lib/libc/locale/table.c @@ -47,11 +47,6 @@ __FBSDID("$FreeBSD$"); extern size_t _none_mbrtowc(wchar_t * __restrict, const char * __restrict, size_t, mbstate_t * __restrict); extern size_t _none_wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict); -extern size_t __emulated_mbrtowc(wchar_t * __restrict, - const char * __restrict, size_t, - mbstate_t * __restrict ps); -extern size_t __emulated_wcrtomb(char * __restrict, wchar_t, - mbstate_t * __restrict ps); extern rune_t __emulated_sgetrune(const char *, size_t, const char **); extern int __emulated_sputrune(rune_t, char *, size_t, char **); diff --git a/lib/libc/locale/wcrtomb.c b/lib/libc/locale/wcrtomb.c index cd1c45b514f9..722e5c1ffb21 100644 --- a/lib/libc/locale/wcrtomb.c +++ b/lib/libc/locale/wcrtomb.c @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2002, 2003 Tim J. Robbins. + * Copyright (c) 2002-2004 Tim J. Robbins. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,10 +27,6 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include <errno.h> -#include <limits.h> -#include <rune.h> -#include <stdlib.h> #include <wchar.h> extern size_t (*__wcrtomb)(char * __restrict, wchar_t, mbstate_t * __restrict); @@ -41,26 +37,3 @@ wcrtomb(char * __restrict s, wchar_t wc, mbstate_t * __restrict ps) return (__wcrtomb(s, wc, ps)); } - -/* - * Emulate the ISO C wcrtomb() function in terms of the deprecated - * 4.4BSD sputrune() function. - */ -size_t -__emulated_wcrtomb(char * __restrict s, wchar_t wc, - mbstate_t * __restrict ps __unused) -{ - char *e; - char buf[MB_LEN_MAX]; - - if (s == NULL) { - s = buf; - wc = L'\0'; - } - sputrune(wc, s, MB_CUR_MAX, &e); - if (e == NULL) { - errno = EILSEQ; - return ((size_t)-1); - } - return ((size_t)(e - s)); -} |