iconv exit code on 10.0

Pavel Timofeev timp87 at gmail.com
Tue May 20 12:04:23 UTC 2014


Hi!

I've encountered with wrong iconv work.

root at timbsd:~ # uname -a
FreeBSD timbsd 10.0-RELEASE-p3 FreeBSD 10.0-RELEASE-p3 #0: Tue May 13
18:31:10 UTC 2014
root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

root at timbsd:~ # locale
LANG=
LC_CTYPE=ru_RU.UTF-8
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=

I have file with russian content.
root at timbsd:~ # cat /tmp/delete_it
Какой-то текст на русском. Some text on russian

Еще немного. Some more.


And I wanted to try to convert it to ISO.
root at timbsd:~ # /usr/bin/iconv -t ISO-8859-15 /tmp/delete_it
?????-?? ????? ?? ???????. Some text on russian

??? ???????. Some more.

iconv: warning: invalid characters: 31

root at timbsd:~ # echo $?
0


Why exit code is 0? Base iconv didn't manage to convert strings so
exit code should be more than 0. That's really bad!


converters/libiconv from ports works better in this case!
See:
root at timbsd:~ # /usr/local/bin/iconv -t ISO-8859-15 /tmp/delete_it
/usr/local/bin/iconv: /tmp/delete_it:1:0: cannot convert
root at timbsd:~ # echo $?
1

I tried it on FreeBSD 11-CURRENT and base iconv doesn't have such problem there.
So I hope that suitable fixes will be MFCd to 10-STABLE.


More information about the freebsd-stable mailing list