From d75ad2e129b3f22296cead3db53c784527deab60 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Fri, 18 Sep 2009 16:07:31 +0200 Subject: [PATCH 4/9] fix make {,install_}{,host}utils Signed-off-by: Bernhard Reutner-Fischer --- extra/locale/programs/locale.c | 3 +- libc/misc/wchar/wchar.c | 88 +++++++++++++++++++++------------------- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/extra/locale/programs/locale.c b/extra/locale/programs/locale.c index 462a579..dfd2029 100644 --- a/extra/locale/programs/locale.c +++ b/extra/locale/programs/locale.c @@ -10,10 +10,9 @@ * */ - +#include #include #include -#include #include #include #ifdef __UCLIBC_HAS_GETOPT_LONG__ diff --git a/libc/misc/wchar/wchar.c b/libc/misc/wchar/wchar.c index 290e680..3ce884d 100644 --- a/libc/misc/wchar/wchar.c +++ b/libc/misc/wchar/wchar.c @@ -171,7 +171,6 @@ extern size_t _wchar_utf8sntowcs(wchar_t *__restrict pwc, size_t wn, extern size_t _wchar_wcsntoutf8s(char *__restrict s, size_t n, const wchar_t **__restrict src, size_t wn) attribute_hidden; - #endif /* _LIBC */ /**********************************************************************/ #ifdef L_btowc @@ -1201,45 +1200,6 @@ typedef struct { int skip_invalid_input; /* To support iconv -c option. */ } _UC_iconv_t; - - -#ifdef L_iconv - -#include -#include -#include -#include - -#if (__BYTE_ORDER != __BIG_ENDIAN) && (__BYTE_ORDER != __LITTLE_ENDIAN) -#error unsupported endianness for iconv -#endif - -#ifndef __CTYPE_HAS_8_BIT_LOCALES -#error currently iconv requires 8 bit locales -#endif -#ifndef __CTYPE_HAS_UTF_8_LOCALES -#error currently iconv requires UTF-8 locales -#endif - - -enum { - IC_WCHAR_T = 0xe0, - IC_MULTIBYTE = 0xe0, -#if __BYTE_ORDER == __BIG_ENDIAN - IC_UCS_4 = 0xec, - IC_UTF_32 = 0xe4, - IC_UCS_2 = 0xe2, - IC_UTF_16 = 0xea, -#else - IC_UCS_4 = 0xed, - IC_UTF_32 = 0xe5, - IC_UCS_2 = 0xe3, - IC_UTF_16 = 0xeb, -#endif - IC_UTF_8 = 2, - IC_ASCII = 1 -}; - /* For the multibyte * bit 0 means swap endian * bit 1 means 2 byte @@ -1247,8 +1207,13 @@ enum { * */ +#if defined L_iconv && defined _LIBC +/* Used externally only by iconv utility */ extern const unsigned char __iconv_codesets[]; libc_hidden_proto(__iconv_codesets) +#endif + +#if defined L_iconv || defined L_iconv_main const unsigned char __iconv_codesets[] = "\x0a\xe0""WCHAR_T\x00" /* superset of UCS-4 but platform-endian */ #if __BYTE_ORDER == __BIG_ENDIAN @@ -1281,7 +1246,48 @@ const unsigned char __iconv_codesets[] = "\x08\x02""UTF-8\x00" "\x0b\x01""US-ASCII\x00" "\x07\x01""ASCII"; /* Must be last! (special case to save a nul) */ +#endif +#if defined L_iconv && defined _LIBC libc_hidden_data_def(__iconv_codesets) +#endif + + +#ifdef L_iconv + +#include +#include +#include +#include + +#if (__BYTE_ORDER != __BIG_ENDIAN) && (__BYTE_ORDER != __LITTLE_ENDIAN) +#error unsupported endianness for iconv +#endif + +#ifndef __CTYPE_HAS_8_BIT_LOCALES +#error currently iconv requires 8 bit locales +#endif +#ifndef __CTYPE_HAS_UTF_8_LOCALES +#error currently iconv requires UTF-8 locales +#endif + + +enum { + IC_WCHAR_T = 0xe0, + IC_MULTIBYTE = 0xe0, +#if __BYTE_ORDER == __BIG_ENDIAN + IC_UCS_4 = 0xec, + IC_UTF_32 = 0xe4, + IC_UCS_2 = 0xe2, + IC_UTF_16 = 0xea, +#else + IC_UCS_4 = 0xed, + IC_UTF_32 = 0xe5, + IC_UCS_2 = 0xe3, + IC_UTF_16 = 0xeb, +#endif + IC_UTF_8 = 2, + IC_ASCII = 1 +}; /* Experimentally off - libc_hidden_proto(strcasecmp) */ @@ -1575,6 +1581,4 @@ size_t weak_function iconv(iconv_t cd, char **__restrict inbuf, } return nrcount; } - #endif - -- 1.6.6.1