Treat all non-GNU iconv implementations like Irix iconv.
authorBruno Haible <bruno@clisp.org>
Wed, 25 Oct 2006 11:42:18 +0000 (11:42 +0000)
committerBruno Haible <bruno@clisp.org>
Wed, 25 Oct 2006 11:42:18 +0000 (11:42 +0000)
ChangeLog
lib/striconv.c

index b6380bb..58f53df 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-10-24  Bruno Haible  <bruno@clisp.org>
+
+       * lib/striconv.c (mem_cd_iconv, str_cd_iconv): Treat all non-GNU
+       iconv implementations like Irix iconv.
+
 2006-10-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        * modules/vararrays: New file.
index c97d5a0..fc02249 100644 (file)
@@ -80,8 +80,11 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd,
            else
              return -1;
          }
-# if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi)
-       /* Irix iconv() inserts a NUL byte if it cannot convert.  */
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+       /* Irix iconv() inserts a NUL byte if it cannot convert.
+          NetBSD iconv() inserts a question mark if it cannot convert.
+          Only GNU libiconv and GNU libc are known to prefer to fail rather
+          than doing a lossy conversion.  */
        else if (res > 0)
          {
            errno = EILSEQ;
@@ -147,8 +150,11 @@ mem_cd_iconv (const char *src, size_t srclen, iconv_t cd,
            else
              return -1;
          }
-# if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi)
-       /* Irix iconv() inserts a NUL byte if it cannot convert.  */
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+       /* Irix iconv() inserts a NUL byte if it cannot convert.
+          NetBSD iconv() inserts a question mark if it cannot convert.
+          Only GNU libiconv and GNU libc are known to prefer to fail rather
+          than doing a lossy conversion.  */
        else if (res > 0)
          {
            errno = EILSEQ;
@@ -288,8 +294,11 @@ str_cd_iconv (const char *src, iconv_t cd)
            else
              goto failed;
          }
-# if !defined _LIBICONV_VERSION && (defined sgi || defined __sgi)
-       /* Irix iconv() inserts a NUL byte if it cannot convert.  */
+# if !defined _LIBICONV_VERSION && !defined __GLIBC__
+       /* Irix iconv() inserts a NUL byte if it cannot convert.
+          NetBSD iconv() inserts a question mark if it cannot convert.
+          Only GNU libiconv and GNU libc are known to prefer to fail rather
+          than doing a lossy conversion.  */
        else if (res > 0)
          {
            errno = EILSEQ;