X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=lib%2Funicodeio.c;h=35bb68075ccdf69c8896157f2138bea7977305e9;hb=1ad624bbbc38cb07899152df9eafb7f5adde71b5;hp=3a5448f059791a625a812189282f20832219eaf1;hpb=a942967415745514873bdaf7039f11438722fae8;p=chaz%2Ftar diff --git a/lib/unicodeio.c b/lib/unicodeio.c index 3a5448f..35bb680 100644 --- a/lib/unicodeio.c +++ b/lib/unicodeio.c @@ -37,8 +37,25 @@ #ifndef errno extern int errno; #endif + +/* Define EILSEQ and ENOTSUP as portably as possible. Some + nonstandard systems, like SunOS 4, don't have EILSEQ. Others, like + BSD/OS 4.1, define it in . Callers that use EILSEQ and/or + ENOTSUP and that want to be portable to these nonstandard systems + should mimic the following includes and defines. */ + +/* BSD/OS 4.1 wchar.h defines EILSEQ, but it requires FILE (defined in + , included above) and struct tm (defined in ) to + be declared. */ +#if HAVE_WCHAR_H && ! defined EILSEQ +# include +# include +#endif + +/* Do not define EILSEQ to be EINVAL, since callers may want to + distinguish EINVAL and EILSEQ. */ #ifndef EILSEQ -# define EILSEQ EINVAL +# define EILSEQ ENOENT #endif #ifndef ENOTSUP # define ENOTSUP EINVAL @@ -48,11 +65,8 @@ extern int errno; # include #endif -#if ENABLE_NLS -# include -# define _(Text) gettext (Text) -#else -# define _(Text) Text +#if HAVE_LANGINFO_CODESET && ! USE_INCLUDED_LIBINTL +# include #endif #include "unicodeio.h" @@ -133,8 +147,18 @@ unicode_to_mb (unsigned int code, if (!initialized) { + const char *charset; + +#if USE_INCLUDED_LIBINTL extern const char *locale_charset PARAMS ((void)); - const char *charset = locale_charset (); + charset = locale_charset (); +#else +# if HAVE_LANGINFO_CODESET + charset = nl_langinfo (CODESET); +# else + charset = ""; +# endif +#endif is_utf8 = !strcmp (charset, UTF8_NAME); #if HAVE_ICONV