CVS commit: src/lib/libc/iconv
Module Name:src Committed By: wiz Date: Wed Jun 8 07:53:16 UTC 2016 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Bump date for previous. To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.22 src/lib/libc/iconv/iconv.3:1.23 --- src/lib/libc/iconv/iconv.3:1.22 Wed Jun 8 07:31:45 2016 +++ src/lib/libc/iconv/iconv.3 Wed Jun 8 07:53:15 2016 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.22 2016/06/08 07:31:45 kamil Exp $ +.\" $NetBSD: iconv.3,v 1.23 2016/06/08 07:53:15 wiz Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd March 11, 2013 +.Dd June 8, 2016 .Dt ICONV 3 .Os .\" --
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: kamil Date: Wed Jun 8 07:31:45 UTC 2016 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Sync STANDARDS of iconv(3) with current reality GNU libiconv is no longer incompatible with POSIX since 2007. Solaris 11 moved to POSIX. Illumos moved to POSIX http://illumos.org/man/3c/iconv New software is aligned to POSIX not to the old mistake in the standard. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.21 src/lib/libc/iconv/iconv.3:1.22 --- src/lib/libc/iconv/iconv.3:1.21 Sun May 12 10:44:23 2013 +++ src/lib/libc/iconv/iconv.3 Wed Jun 8 07:31:45 2016 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.21 2013/05/12 10:44:23 wiz Exp $ +.\" $NetBSD: iconv.3,v 1.22 2016/06/08 07:31:45 kamil Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -263,10 +263,6 @@ has always used the const form. It was decided to reject the committee's regression and become .Pq technically incompatible. -GNU libiconv has taken the -.Lk http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.14/ "same route". -Most third party software affected by this issue already handles it -during configuration. .\" -- .Sh BUGS If
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: wiz Date: Sun May 12 10:44:23 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: conforms -> conform, since it's the verb for three nouns and thus plural. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.20 src/lib/libc/iconv/iconv.3:1.21 --- src/lib/libc/iconv/iconv.3:1.20 Sat May 11 19:20:30 2013 +++ src/lib/libc/iconv/iconv.3 Sun May 12 10:44:23 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.20 2013/05/11 19:20:30 rodent Exp $ +.\" $NetBSD: iconv.3,v 1.21 2013/05/12 10:44:23 wiz Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -236,7 +236,7 @@ terminates with an incomplete character .Fn iconv_close , and .Fn iconv -conforms to +conform to .St -p1003.1-2001 . .Pp Historically, the definition of
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: rodent Date: Sat May 11 19:20:30 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: s/conform/conforms/1 To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.19 src/lib/libc/iconv/iconv.3:1.20 --- src/lib/libc/iconv/iconv.3:1.19 Mon Mar 11 10:44:43 2013 +++ src/lib/libc/iconv/iconv.3 Sat May 11 19:20:30 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.19 2013/03/11 10:44:43 yamt Exp $ +.\" $NetBSD: iconv.3,v 1.20 2013/05/11 19:20:30 rodent Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -236,7 +236,7 @@ terminates with an incomplete character .Fn iconv_close , and .Fn iconv -conform to +conforms to .St -p1003.1-2001 . .Pp Historically, the definition of
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: yamt Date: Mon Mar 11 10:44:44 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: fix rev.1.13 To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.18 src/lib/libc/iconv/iconv.3:1.19 --- src/lib/libc/iconv/iconv.3:1.18 Tue Jan 8 19:55:43 2013 +++ src/lib/libc/iconv/iconv.3 Mon Mar 11 10:44:43 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.18 2013/01/08 19:55:43 wiz Exp $ +.\" $NetBSD: iconv.3,v 1.19 2013/03/11 10:44:43 yamt Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 8, 2013 +.Dd March 11, 2013 .Dt ICONV 3 .Os .\" -- @@ -118,11 +118,15 @@ and the conversion is continued. returns the number of such .Dq invalid conversions . .Pp -If the source and/or destination codesets are stateful, +If +.Fa src +or +.Fa *src +is +.Dv NULL +and the source and/or destination codesets are stateful, .Fn iconv places these into their initial state. -There are two special cases of -.Fn iconv : .Bl -enum -offset indent .It If both
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: wiz Date: Tue Jan 8 19:55:43 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Remove trailing whitespace. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.17 src/lib/libc/iconv/iconv.3:1.18 --- src/lib/libc/iconv/iconv.3:1.17 Tue Jan 8 19:19:24 2013 +++ src/lib/libc/iconv/iconv.3 Tue Jan 8 19:55:43 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.17 2013/01/08 19:19:24 dholland Exp $ +.\" $NetBSD: iconv.3,v 1.18 2013/01/08 19:55:43 wiz Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -238,7 +238,7 @@ conform to Historically, the definition of .Ft iconv has not been consistent across operating systems. -This is due to an unfortunate historical mistake, documented in +This is due to an unfortunate historical mistake, documented in .Lk https://www5.opengroup.org/sophocles2/show_mail.tpl?&source=L&listname=austin-group-l&id=7404 "this e-mail". The standards page for the header file .In iconv.h
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: dholland Date: Tue Jan 8 19:19:25 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Rework the description of the const issue to improve the wording, avoid saying "we", fix typos, etc. XXX: groff and mandoc handle the URLs in here differently but both XXX: mangle them, apparently because they're wider than one line. XXX: Does anyone know how to fix this or do we need an URL shortener XXX: on www.NetBSD.org? To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.16 src/lib/libc/iconv/iconv.3:1.17 --- src/lib/libc/iconv/iconv.3:1.16 Fri Jan 4 07:27:57 2013 +++ src/lib/libc/iconv/iconv.3 Tue Jan 8 19:19:24 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.16 2013/01/04 07:27:57 wiz Exp $ +.\" $NetBSD: iconv.3,v 1.17 2013/01/08 19:19:24 dholland Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 3, 2013 +.Dd January 8, 2013 .Dt ICONV 3 .Os .\" -- @@ -235,24 +235,34 @@ and conform to .St -p1003.1-2001 . .Pp -Unfortunately due a historical mistake (documented in -.Lk https://www5.opengroup.org/sophocles2/show_mail.tpl?&source=L&listname=austin-group-l&id=7404 ) , -where the unix header page had the -second argument of -.Fn iconv -as -.Ft char ** -and the manual page had the same as -.Ft const char ** , -the definition of +Historically, the definition of .Ft iconv has not been consistent across operating systems. -Given the committee's decicion to follow the header definition, we had to make -a decision between following the committee's change or keeping our existing -definition which is arguably more correct like others have -.Pq Lk http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.14/ . -We chose to keep our definition and we believe that this is not a problem because -most packages are aware of this issue and handle it anyway during configuration. +This is due to an unfortunate historical mistake, documented in +.Lk https://www5.opengroup.org/sophocles2/show_mail.tpl?&source=L&listname=austin-group-l&id=7404 "this e-mail". +The standards page for the header file +.In iconv.h +defined the second argument of +.Fn iconv +as +.Ft char ** , +but the standards page for the +.Fn iconv +implementation defined it as +.Ft const char ** . +The standards committee later chose to change the function definition to +follow the header file definition +.Pq without const , +even though the version with const is arguably more correct. +.Nx +has always used the const form. +It was decided to reject the committee's regression and become +.Pq technically +incompatible. +GNU libiconv has taken the +.Lk http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.14/ "same route". +Most third party software affected by this issue already handles it +during configuration. .\" -- .Sh BUGS If
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: wiz Date: Fri Jan 4 07:27:58 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Use Lk for links. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.15 src/lib/libc/iconv/iconv.3:1.16 --- src/lib/libc/iconv/iconv.3:1.15 Fri Jan 4 01:21:45 2013 +++ src/lib/libc/iconv/iconv.3 Fri Jan 4 07:27:57 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.15 2013/01/04 01:21:45 christos Exp $ +.\" $NetBSD: iconv.3,v 1.16 2013/01/04 07:27:57 wiz Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -236,7 +236,7 @@ conform to .St -p1003.1-2001 . .Pp Unfortunately due a historical mistake (documented in -.Pa https://www5.opengroup.org/sophocles2/show_mail.tpl?&source=L&listname=austin-group-l&id=7404 ), +.Lk https://www5.opengroup.org/sophocles2/show_mail.tpl?&source=L&listname=austin-group-l&id=7404 ) , where the unix header page had the second argument of .Fn iconv @@ -249,8 +249,8 @@ the definition of has not been consistent across operating systems. Given the committee's decicion to follow the header definition, we had to make a decision between following the committee's change or keeping our existing -definition which is arguably more correct like others have ( -.Pa http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.14/ ). +definition which is arguably more correct like others have +.Pq Lk http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.14/ . We chose to keep our definition and we believe that this is not a problem because most packages are aware of this issue and handle it anyway during configuration. .\" --
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: christos Date: Fri Jan 4 01:21:45 UTC 2013 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Explain why we did not follow the standard. Worth revisiting the proposal: http://marc.info/?l=netbsd-tech-userlevel&m=110019726222841 To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.14 src/lib/libc/iconv/iconv.3:1.15 --- src/lib/libc/iconv/iconv.3:1.14 Wed May 5 18:07:58 2010 +++ src/lib/libc/iconv/iconv.3 Thu Jan 3 20:21:45 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.14 2010/05/05 22:07:58 wiz Exp $ +.\" $NetBSD: iconv.3,v 1.15 2013/01/04 01:21:45 christos Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 5, 2010 +.Dd January 3, 2013 .Dt ICONV 3 .Os .\" -- @@ -234,6 +234,25 @@ and .Fn iconv conform to .St -p1003.1-2001 . +.Pp +Unfortunately due a historical mistake (documented in +.Pa https://www5.opengroup.org/sophocles2/show_mail.tpl?&source=L&listname=austin-group-l&id=7404 ), +where the unix header page had the +second argument of +.Fn iconv +as +.Ft char ** +and the manual page had the same as +.Ft const char ** , +the definition of +.Ft iconv +has not been consistent across operating systems. +Given the committee's decicion to follow the header definition, we had to make +a decision between following the committee's change or keeping our existing +definition which is arguably more correct like others have ( +.Pa http://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.14/ ). +We chose to keep our definition and we believe that this is not a problem because +most packages are aware of this issue and handle it anyway during configuration. .\" -- .Sh BUGS If
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: wiz Date: Wed May 5 22:07:58 UTC 2010 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Sort errors. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.13 src/lib/libc/iconv/iconv.3:1.14 --- src/lib/libc/iconv/iconv.3:1.13 Wed May 5 06:04:19 2010 +++ src/lib/libc/iconv/iconv.3 Wed May 5 22:07:58 2010 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.13 2010/05/05 06:04:19 jruoho Exp $ +.\" $NetBSD: iconv.3,v 1.14 2010/05/05 22:07:58 wiz Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -182,13 +182,13 @@ .Fn iconv_open function may cause an error in the following cases: .Bl -tag -width Er -.It Bq Er ENOMEM -Memory is exhausted. .It Bq Er EINVAL There is no converter specified by .Fa srcname and .Fa dstname . +.It Bq Er ENOMEM +Memory is exhausted. .El .Pp The @@ -205,6 +205,10 @@ .Fn iconv function may cause an error in the following cases: .Bl -tag -width Er +.It Bq Er E2BIG +The output buffer pointed to by +.Fa *dst +is too small to store the result string. .It Bq Er EBADF The conversion descriptor specified by .Fa cd @@ -214,10 +218,6 @@ .Fa *src contains a byte sequence which does not describe a valid character of the source codeset. -.It Bq Er E2BIG -The output buffer pointed to by -.Fa *dst -is too small to store the result string. .It Bq Er EINVAL The string pointed to by .Fa *src
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: jruoho Date: Wed May 5 06:04:20 UTC 2010 Modified Files: src/lib/libc/iconv: iconv.3 Log Message: Properly enumerate the two special cases. Also some markup improvements. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libc/iconv/iconv.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.3 diff -u src/lib/libc/iconv/iconv.3:1.12 src/lib/libc/iconv/iconv.3:1.13 --- src/lib/libc/iconv/iconv.3:1.12 Mon Aug 2 13:38:21 2004 +++ src/lib/libc/iconv/iconv.3 Wed May 5 06:04:19 2010 @@ -1,4 +1,4 @@ -.\" $NetBSD: iconv.3,v 1.12 2004/08/02 13:38:21 tshiozak Exp $ +.\" $NetBSD: iconv.3,v 1.13 2010/05/05 06:04:19 jruoho Exp $ .\" .\" Copyright (c)2003 Citrus Project, .\" All rights reserved. @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 1, 2004 +.Dd May 5, 2010 .Dt ICONV 3 .Os .\" -- @@ -80,14 +80,14 @@ and .Fa dstleft are updated as follows: -.Bl -tag -width 01234567 -.It *src +.Bl -tag -width 01234567 -offset indent +.It Fa *src Pointer to the byte just after the last character fetched. -.It *srcleft +.It Fa *srcleft Number of remaining bytes in the source buffer. -.It *dst +.It Fa *dst Pointer to the byte just after the last character stored. -.It *dstleft +.It Fa *dstleft Number of remainder bytes in the destination buffer. .El .Pp @@ -118,15 +118,13 @@ returns the number of such .Dq invalid conversions . .Pp -There are two special cases of -.Fn iconv : -.Bl -tag -width 0123 -.It "src == NULL || *src == NULL" -.\" If the source and/or destination codesets are stateful, .Fn iconv places these into their initial state. -.Pp +There are two special cases of +.Fn iconv : +.Bl -enum -offset indent +.It If both .Fa dst and @@ -142,7 +140,7 @@ as above. .Fn iconv will fail if the buffer is too small to store the shift sequence. -.Pp +.It On the other hand, .Fa dst or @@ -159,7 +157,9 @@ it returns a conversion descriptor. Otherwise, .Fn iconv_open -returns (iconv_t)\-1 and sets errno to indicate the error. +returns (iconv_t)\-1 and sets +.Va errno +to indicate the error. .Pp Upon successful completion of .Fn iconv_close ,
CVS commit: src/lib/libc/iconv
Module Name:src Committed By: joerg Date: Wed Aug 5 15:17:02 UTC 2009 Modified Files: src/lib/libc/iconv: iconv.c Log Message: Revert to revision 1.8. Blindly ignoring options is not acceptable behavior and hides more problems than it is fixing. Discussion: http://mail-index.netbsd.org/current-users/2009/02/03/msg007761.html Approved by: core@ To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/lib/libc/iconv/iconv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libc/iconv/iconv.c diff -u src/lib/libc/iconv/iconv.c:1.11 src/lib/libc/iconv/iconv.c:1.12 --- src/lib/libc/iconv/iconv.c:1.11 Tue Mar 3 16:22:33 2009 +++ src/lib/libc/iconv/iconv.c Wed Aug 5 15:17:02 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: iconv.c,v 1.11 2009/03/03 16:22:33 explorer Exp $ */ +/* $NetBSD: iconv.c,v 1.12 2009/08/05 15:17:02 joerg Exp $ */ /*- * Copyright (c)2003 Citrus Project, @@ -28,7 +28,7 @@ #include #if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: iconv.c,v 1.11 2009/03/03 16:22:33 explorer Exp $"); +__RCSID("$NetBSD: iconv.c,v 1.12 2009/08/05 15:17:02 joerg Exp $"); #endif /* LIBC_SCCS and not lint */ #include "namespace.h" @@ -47,8 +47,6 @@ #ifdef HAVE_CITRUS #include -#include -#include #include "citrus_types.h" #include "citrus_module.h" #include "citrus_esdb.h" @@ -57,37 +55,14 @@ #define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1) + iconv_t iconv_open(const char *out, const char *in) { int ret; struct _citrus_iconv *handle; - char *out_truncated; - char *p; - - /* - * Remove anything following a //, as these are options (like - * //ignore, //translate, etc) and we just don't handle them. - * This is for compatibilty wiht software that uses thees - * blindly. - */ - out_truncated = strdup(out); - if (out_truncated == NULL) { - errno = ENOMEM; - return ((iconv_t)-1); - } - - p = out_truncated; -while (*p != 0) { -if (p[0] == '/' && p[1] == '/') { -*p = '\0'; -break; -} -p++; -} - ret = _citrus_iconv_open(&handle, _PATH_ICONV, in, out_truncated); - free(out_truncated); + ret = _citrus_iconv_open(&handle, _PATH_ICONV, in, out); if (ret) { errno = ret == ENOENT? EINVAL : ret; return ((iconv_t)-1);