2 # Check of --unicode-subst, --byte-subst, --widechar-subst options.
4 iconv=..
/src
/iconv_no_i18n
6 options_ascii
='--unicode-subst=<U+%04X> --byte-subst=<0x%02x> --widechar-subst=<%08x>'
7 options_utf8
='--unicode-subst=«U+%04X» --byte-subst=«0x%02x» --widechar-subst=«%08x»'
9 # Test of --byte-subst with an ASCII substitution.
14 $iconv $options_ascii -f ASCII
-t ASCII
< tmp-in
> tmp-out
16 B
<0xc3><0xb6>se B
<0xc3><0xbc>bchen
20 # Test of --byte-subst with a non-ASCII substitution.
22 if test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
26 $iconv $options_utf8 -f ASCII
-t UTF-8
2>/dev
/null
< tmp-in
> tmp-out
28 B«
0xc3»«
0xb6»se B«
0xc3»«
0xbc»bchen
33 if test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
37 $iconv $options_utf8 -f ASCII
-t ISO-8859-1
2>/dev
/null
< tmp-in
> tmp-out
38 $iconv -f ISO-8859-1
-t UTF-8
< tmp-out
> tmp-out2
40 B«
0xc3»«
0xb6»se B«
0xc3»«
0xbc»bchen
45 # Test of --byte-subst with a very long substitution.
50 $iconv --byte-subst='<0x%010000x>' -f ASCII
-t ASCII
< tmp-in
> tmp-out
51 # This printf command crashes on Solaris 10.
52 # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
53 # Likewise on OSF/1 5.1.
54 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
58 # Test of --unicode-subst with an ASCII substitution.
63 $iconv $options_ascii -f UTF-8
-t ASCII
< tmp-in
> tmp-out
65 B
<U
+00F6
>se B
<U
+00FC
>bchen
72 $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
74 Russian
(<U
+0420><U
+0443><U
+0441><U
+0441><U
+043A
><U
+0438><U
+0439>)
78 # Test of --unicode-subst with a non-ASCII substitution.
80 if test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
84 $iconv $options_utf8 -f UTF-8
-t ISO-8859-1
2>/dev
/null
< tmp-in
> tmp-out
85 $iconv -f ISO-8859-1
-t UTF-8
< tmp-out
> tmp-out2
87 Russian
(«U
+0420»«U
+0443»«U
+0441»«U
+0441»«U
+043A»«U
+0438»«U
+0439»
)
92 # Test of --unicode-subst with a very long substitution.
97 $iconv --unicode-subst='<U+%010000X>' -f UTF-8
-t ASCII
< tmp-in
> tmp-out
98 # This printf command crashes on Solaris 10.
99 # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
100 if printf 'B<U+%010000X>se B<U+%010000X>bchen\n' 0x00F6 0x00FC > tmp-ok
2>/dev
/null
; then
107 $iconv --byte-subst='<0x%010000x>' -f ASCII
-t ASCII
< tmp-in
> tmp-out
108 # This printf command crashes on Solaris 10.
109 # See <http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6550204>.
110 # Likewise on OSF/1 5.1.
111 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
115 # Test of --widechar-subst:
116 # wcrtomb() doesn't exist on FreeBSD 4.0 and is broken on MacOS X 10.3.
117 # So far this has been tested only on a glibc system with !__STDC_ISO_10646__.
119 if false
&& test "`(locale charmap) 2>/dev/null`" = UTF-8
; then
123 $iconv -f char
-t wchar_t
< tmp-in
> tmp-inw
124 LC_ALL
=C
$iconv $options_ascii -f wchar_t
-t ASCII
< tmp-inw
> tmp-out1
125 LC_ALL
=de_DE.ISO-8859-1
$iconv $options_ascii -f wchar_t
-t ASCII
< tmp-inw
> tmp-out2
127 Russian
(<00000420><00000443><00000441><00000441><0000043a
><00000438><00000439>)
131 if test "`(LC_ALL=de_DE.ISO-8859-1 locale charmap) 2>/dev/null`" = ISO-8859-1
; then
132 options_latin1
=`echo " $options_utf8" | $iconv -f UTF-8 -t ISO-8859-1`
133 LC_ALL
=de_DE.ISO-8859-1
$iconv $options_latin1 -f wchar_t
-t UTF-8
< tmp-inw
> tmp-out1
135 Russian
(«
00000420»«
00000443»«
00000441»«
00000441»«
0000043a»«
00000438»«
00000439»
)
141 rm -f tmp-in
* tmp-out
* tmp-ok