X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Funicodeio.c;h=7665144edd3949c10625026a6d8698d5107511f8;hb=6b66ce308dae8448f02da645a9fd8fb992349f06;hp=b6fd658ee7f930131a3816a7106ff8a9bf3c7552;hpb=97b954ff1a428ff32f0be07f99a95a2dd58aa8e9;p=gnulib.git diff --git a/lib/unicodeio.c b/lib/unicodeio.c index b6fd658ee..7665144ed 100644 --- a/lib/unicodeio.c +++ b/lib/unicodeio.c @@ -1,6 +1,6 @@ /* Unicode character output to streams with locale dependent encoding. - Copyright (C) 2000-2003, 2006, 2008-2009 Free Software Foundation, Inc. + Copyright (C) 2000-2003, 2006, 2008-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -63,11 +63,11 @@ Assumes that the locale doesn't change between two calls. */ long unicode_to_mb (unsigned int code, - long (*success) (const char *buf, size_t buflen, - void *callback_arg), - long (*failure) (unsigned int code, const char *msg, - void *callback_arg), - void *callback_arg) + long (*success) (const char *buf, size_t buflen, + void *callback_arg), + long (*failure) (unsigned int code, const char *msg, + void *callback_arg), + void *callback_arg) { static int initialized; static int is_utf8; @@ -85,12 +85,12 @@ unicode_to_mb (unsigned int code, is_utf8 = !strcmp (charset, UTF8_NAME); #if HAVE_ICONV if (!is_utf8) - { - utf8_to_local = iconv_open (charset, UTF8_NAME); - if (utf8_to_local == (iconv_t)(-1)) - /* For an unknown encoding, assume ASCII. */ - utf8_to_local = iconv_open ("ASCII", UTF8_NAME); - } + { + utf8_to_local = iconv_open (charset, UTF8_NAME); + if (utf8_to_local == (iconv_t)(-1)) + /* For an unknown encoding, assume ASCII. */ + utf8_to_local = iconv_open ("ASCII", UTF8_NAME); + } #endif initialized = 1; } @@ -100,7 +100,7 @@ unicode_to_mb (unsigned int code, { #if HAVE_ICONV if (utf8_to_local == (iconv_t)(-1)) - return failure (code, N_("iconv function not usable"), callback_arg); + return failure (code, N_("iconv function not usable"), callback_arg); #else return failure (code, N_("iconv function not available"), callback_arg); #endif @@ -128,24 +128,26 @@ unicode_to_mb (unsigned int code, /* Convert the character from UTF-8 to the locale's charset. */ res = iconv (utf8_to_local, - (ICONV_CONST char **)&inptr, &inbytesleft, - &outptr, &outbytesleft); + (ICONV_CONST char **)&inptr, &inbytesleft, + &outptr, &outbytesleft); if (inbytesleft > 0 || res == (size_t)(-1) - /* Irix iconv() inserts a NUL byte if it cannot convert. */ + /* Irix iconv() inserts a NUL byte if it cannot convert. */ # if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi) - || (res > 0 && code != 0 && outptr - outbuf == 1 && *outbuf == '\0') + || (res > 0 && code != 0 && outptr - outbuf == 1 && *outbuf == '\0') # endif ) - return failure (code, NULL, callback_arg); + return failure (code, NULL, callback_arg); /* Avoid glibc-2.1 bug and Solaris 7 bug. */ # if defined _LIBICONV_VERSION \ - || !((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) || defined __sun) + || !(((__GLIBC__ - 0 == 2 && __GLIBC_MINOR__ - 0 <= 1) \ + && !defined __UCLIBC__) \ + || defined __sun) /* Get back to the initial shift state. */ res = iconv (utf8_to_local, NULL, NULL, &outptr, &outbytesleft); if (res == (size_t)(-1)) - return failure (code, NULL, callback_arg); + return failure (code, NULL, callback_arg); # endif return success (outbuf, outptr - outbuf, callback_arg); @@ -174,13 +176,13 @@ fwrite_success_callback (const char *buf, size_t buflen, void *callback_arg) /* Simple failure callback that displays an error and exits. */ static long exit_failure_callback (unsigned int code, const char *msg, - void *callback_arg _UNUSED_PARAMETER_) + void *callback_arg _GL_UNUSED) { if (msg == NULL) error (1, 0, _("cannot convert U+%04X to local character set"), code); else error (1, 0, _("cannot convert U+%04X to local character set: %s"), code, - gettext (msg)); + gettext (msg)); return -1; } @@ -188,8 +190,8 @@ exit_failure_callback (unsigned int code, const char *msg, ASCII, using the same notation as ISO C99 strings. */ static long fallback_failure_callback (unsigned int code, - const char *msg _UNUSED_PARAMETER_, - void *callback_arg) + const char *msg _GL_UNUSED, + void *callback_arg) { FILE *stream = (FILE *) callback_arg; @@ -207,8 +209,8 @@ void print_unicode_char (FILE *stream, unsigned int code, int exit_on_error) { unicode_to_mb (code, fwrite_success_callback, - exit_on_error - ? exit_failure_callback - : fallback_failure_callback, - stream); + exit_on_error + ? exit_failure_callback + : fallback_failure_callback, + stream); }