Index: include/iconv.h =================================================================== RCS file: /cvsroot/src/include/iconv.h,v retrieving revision 1.6 diff -u -r1.6 iconv.h --- include/iconv.h 3 Feb 2005 04:39:32 -0000 1.6 +++ include/iconv.h 4 Apr 2006 04:14:03 -0000 @@ -55,6 +55,7 @@ size_t __iconv(iconv_t, const char **, size_t *, char **, size_t *, __uint32_t, size_t *); #define __ICONV_F_HIDE_INVALID 0x0001 +#define __ICONV_F_STOP_NO_CORRESPONDING_CHAR 0x0002 __END_DECLS #endif /* !_ICONV_H_ */ Index: lib/libc/citrus/citrus_iconv.h =================================================================== RCS file: /cvsroot/src/lib/libc/citrus/citrus_iconv.h,v retrieving revision 1.4 diff -u -r1.4 citrus_iconv.h --- lib/libc/citrus/citrus_iconv.h 12 Mar 2005 04:20:30 -0000 1.4 +++ lib/libc/citrus/citrus_iconv.h 4 Apr 2006 04:14:03 -0000 @@ -44,6 +44,7 @@ #include "citrus_iconv_local.h" #define _CITRUS_ICONV_F_HIDE_INVALID 0x0001 +#define _CITRUS_ICONV_F_STOP_NO_CORRESPONDING_CHAR 0x0002 /* * _citrus_iconv_convert: Index: lib/libc/citrus/modules/citrus_iconv_std.c =================================================================== RCS file: /cvsroot/src/lib/libc/citrus/modules/citrus_iconv_std.c,v retrieving revision 1.13 diff -u -r1.13 citrus_iconv_std.c --- lib/libc/citrus/modules/citrus_iconv_std.c 19 Mar 2006 01:15:06 -0000 1.13 +++ lib/libc/citrus/modules/citrus_iconv_std.c 4 Apr 2006 04:14:04 -0000 @@ -540,6 +540,11 @@ ret = do_conv(is, sc, &csid, &idx); if (ret) { if (ret == E_NO_CORRESPONDING_CHAR) { + /* for glibc/GNU ibiconv compatibility */ + if ((flags & _CITRUS_ICONV_F_STOP_NO_CORRESPONDING_CHAR) != 0) + ret = EILSEQ; + goto err; + } inval++; szrout = 0; if ((flags&_CITRUS_ICONV_F_HIDE_INVALID)==0 &&