2 # Check of --unicode-subst, --byte-subst, --widechar-subst options.
4 iconv=..
/src
/iconv_no_i18n
5 # Make sure the charset.alias file is found.
9 options_ascii
='--unicode-subst=<U+%04X> --byte-subst=<0x%02x> --widechar-subst=<%08x>'
10 options_utf8
='--unicode-subst=«U+%04X» --byte-subst=«0x%02x» --widechar-subst=«%08x»'
12 # Test of --byte-subst with an ASCII substitution.
17 $iconv $options_ascii -f ASCII
-t ASCII
< tmp-in
> tmp-out
19 B
<0xc3><0xb6>se B
<0xc3><0xbc>bchen
23 # Test of --byte-subst with a non-ASCII substitution.
25 if test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
29 $iconv $options_utf8 -f ASCII
-t UTF-8
2>/dev
/null
< tmp-in
> tmp-out
31 B«
0xc3»«
0xb6»se B«
0xc3»«
0xbc»bchen
36 if test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
40 $iconv $options_utf8 -f ASCII
-t ISO-8859-1
2>/dev
/null
< tmp-in
> tmp-out
41 $iconv -f ISO-8859-1
-t UTF-8
< tmp-out
> tmp-out2
43 B«
0xc3»«
0xb6»se B«
0xc3»«
0xbc»bchen
48 # Test of --byte-subst with a very long substitution.
53 $iconv --byte-subst='<0x%010000x>' -f ASCII
-t ASCII
< tmp-in
> tmp-out
54 # This printf command crashes on Solaris 10.
55 # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
56 # Likewise on OSF/1 5.1.
57 if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok
2>/dev
/null
; then
61 # Test of --unicode-subst with an ASCII substitution.
66 $iconv $options_ascii -f UTF-8
-t ASCII
< tmp-in
> tmp-out
68 B
<U
+00F6
>se B
<U
+00FC
>bchen
75 $iconv $options_ascii -f UTF-8
-t ISO-8859-1
2>/dev
/null
< tmp-in |
$iconv -f ISO-8859-1
-t UTF-8
> tmp-out
77 Russian
(<U
+0420><U
+0443><U
+0441><U
+0441><U
+043A
><U
+0438><U
+0439>)
81 # Test of --unicode-subst with a non-ASCII substitution.
83 if test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
87 $iconv $options_utf8 -f UTF-8
-t ISO-8859-1
2>/dev
/null
< tmp-in
> tmp-out
88 $iconv -f ISO-8859-1
-t UTF-8
< tmp-out
> tmp-out2
90 Russian
(«U
+0420»«U
+0443»«U
+0441»«U
+0441»«U
+043A»«U
+0438»«U
+0439»
)
95 # Test of --unicode-subst with a very long substitution.
100 $iconv --unicode-subst='<U+%010000X>' -f UTF-8
-t ASCII
< tmp-in
> tmp-out
101 # This printf command crashes on Solaris 10.
102 # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
103 if printf 'B<U+%010000X>se B<U+%010000X>bchen\n' 0x00F6 0x00FC > tmp-ok
2>/dev
/null
; then
110 $iconv --byte-subst='<0x%010000x>' -f ASCII
-t ASCII
< tmp-in
> tmp-out
111 # This printf command crashes on Solaris 10.
112 # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
113 # Likewise on OSF/1 5.1.
114 if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok
2>/dev
/null
; then
118 # Test of --widechar-subst:
119 # wcrtomb() doesn't exist on FreeBSD 4.0 and is broken on MacOS X 10.3.
120 # So far this has been tested only on a glibc system with !__STDC_ISO_10646__.
122 if false
&& test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
126 $iconv -f char
-t wchar_t
< tmp-in
> tmp-inw
127 LC_ALL
=C
$iconv $options_ascii -f wchar_t
-t ASCII
< tmp-inw
> tmp-out1
128 LC_ALL
=de_DE.ISO-8859-1
$iconv $options_ascii -f wchar_t
-t ASCII
< tmp-inw
> tmp-out2
130 Russian
(<00000420><00000443><00000441><00000441><0000043a
><00000438><00000439>)
134 if test "`(LC_ALL=de_DE.ISO-8859-1 locale charmap) 2>/dev/null`" = ISO-8859-1
; then
135 options_latin1
=`echo " $options_utf8" | $iconv -f UTF-8 -t ISO-8859-1`
136 LC_ALL
=de_DE.ISO-8859-1
$iconv $options_latin1 -f wchar_t
-t UTF-8
< tmp-inw
> tmp-out1
138 Russian
(«
00000420»«
00000443»«
00000441»«
00000441»«
0000043a»«
00000438»«
00000439»
)
144 rm -f tmp-in
* tmp-out
* tmp-ok