1#!/bin/sh
2# Copyright (C) 2000-2022 Free Software Foundation, Inc.
3# This file is part of the GNU C Library.
4#
5
6# The GNU C Library is free software; you can redistribute it and/or
7# modify it under the terms of the GNU Lesser General Public
8# License as published by the Free Software Foundation; either
9# version 2.1 of the License, or (at your option) any later version.
10
11# The GNU C Library is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14# Lesser General Public License for more details.
15
16# You should have received a copy of the GNU Lesser General Public
17# License along with the GNU C Library; if not, see
18# <https://www.gnu.org/licenses/>.
19
20# Checks that the iconv() implementation (in both directions) for the
21# stateless encodings agrees with the corresponding charmap table.
22
23common_objpfx=$1
24objpfx=$2
25test_program_prefix=$3
26
27status=0
28
29cat <<EOF |
30  # Single-byte and other "small" encodings come here.
31  # Keep this list in the same order as gconv-modules.
32  #
33  # charset name    table name          comment
34  ASCII             ANSI_X3.4-1968
35  ISO646-GB         BS_4730
36  ISO646-CA         CSA_Z243.4-1985-1
37  ISO646-CA2        CSA_Z243.4-1985-2
38  ISO646-DE         DIN_66003
39  ISO646-DK         DS_2089
40  ISO646-ES         ES
41  ISO646-ES2        ES2
42  ISO646-CN         GB_1988-80
43  ISO646-IT         IT
44  ISO646-JP         JIS_C6220-1969-RO
45  ISO646-JP-OCR-B   JIS_C6229-1984-B
46  ISO646-YU         JUS_I.B1.002
47  ISO646-KR         KSC5636
48  ISO646-HU         MSZ_7795.3
49  ISO646-CU         NC_NC00-10
50  ISO646-FR         NF_Z_62-010
51  ISO646-FR1        NF_Z_62-010_1973
52  ISO646-NO         NS_4551-1
53  ISO646-NO2        NS_4551-2
54  ISO646-PT         PT
55  ISO646-PT2        PT2
56  ISO646-SE         SEN_850200_B
57  ISO646-SE2        SEN_850200_C
58  ISO-8859-1
59  ISO-8859-2
60  ISO-8859-3
61  ISO-8859-4
62  ISO-8859-5
63  ISO-8859-6
64  ISO-8859-7
65  ISO-8859-8
66  ISO-8859-9
67  ISO-8859-9E
68  ISO-8859-10
69  ISO-8859-11
70  ISO-8859-13
71  ISO-8859-14
72  ISO-8859-15
73  ISO-8859-16
74  T.61-8BIT
75  ISO_6937
76  #ISO_6937-2        ISO-IR-90          Handling of combining marks is broken
77  KOI-8
78  KOI8-R
79  LATIN-GREEK
80  LATIN-GREEK-1
81  HP-ROMAN8
82  HP-ROMAN9
83  HP-TURKISH8
84  HP-THAI8
85  HP-GREEK8
86  EBCDIC-AT-DE
87  EBCDIC-AT-DE-A
88  EBCDIC-CA-FR
89  EBCDIC-DK-NO
90  EBCDIC-DK-NO-A
91  EBCDIC-ES
92  EBCDIC-ES-A
93  EBCDIC-ES-S
94  EBCDIC-FI-SE
95  EBCDIC-FI-SE-A
96  EBCDIC-FR
97  EBCDIC-IS-FRISS
98  EBCDIC-IT
99  EBCDIC-PT
100  EBCDIC-UK
101  EBCDIC-US
102  IBM037
103  IBM038
104  IBM256
105  IBM273
106  IBM274
107  IBM275
108  IBM277
109  IBM278
110  IBM280
111  IBM281
112  IBM284
113  IBM285
114  IBM290
115  IBM297
116  IBM420
117  IBM423
118  IBM424
119  IBM437
120  IBM500
121  IBM850
122  IBM851
123  IBM852
124  IBM855
125  IBM856
126  IBM857
127  IBM858
128  IBM860
129  IBM861
130  IBM862
131  IBM863
132  IBM864
133  IBM865
134  IBM866
135  IBM866NAV
136  IBM868
137  IBM869
138  IBM870
139  IBM871
140  IBM875
141  IBM880
142  IBM891
143  IBM903
144  IBM904
145  IBM905
146  IBM918
147  IBM922
148  IBM1004
149  IBM1026
150  #IBM1046                              Differs from the AIX and JDK converters
151  IBM1047
152  IBM1124
153  IBM1129
154  IBM1160
155  IBM1161
156  IBM1132
157  IBM1133
158  IBM1162
159  IBM1163
160  IBM1164
161  CP1125
162  CP1250
163  CP1251
164  CP1252
165  CP1253
166  CP1254
167  CP1255
168  CP1256
169  CP1257
170  CP1258
171  IBM874
172  CP737
173  CP770
174  CP771
175  CP772
176  CP773
177  CP774
178  CP775
179  MACINTOSH
180  IEC_P27-1
181  ASMO_449
182  ISO-IR-99         ANSI_X3.110-1983
183  ISO-IR-139        CSN_369103
184  CWI
185  DEC-MCS
186  ECMA-CYRILLIC
187  ISO-IR-153        GOST_19768-74
188  GREEK-CCITT
189  GREEK7
190  GREEK7-OLD
191  INIS
192  INIS-8
193  INIS-CYRILLIC
194  ISO_2033          ISO_2033-1983
195  ISO_5427
196  ISO_5427-EXT
197  #ISO_5428                             Handling of combining marks is broken
198  ISO_10367-BOX
199  MAC-IS
200  MAC-UK
201  CP10007
202  NATS-DANO
203  NATS-SEFI
204  WIN-SAMI-2        SAMI-WS2
205  ISO-IR-197
206  TIS-620
207  KOI8-U
208  #ISIRI-3342                         This charset concept is completely broken
209  VISCII
210  KOI8-T
211  GEORGIAN-PS
212  GEORGIAN-ACADEMY
213  ISO-IR-209
214  MAC-SAMI
215  ARMSCII-8
216  TCVN5712-1
217  TSCII
218  PT154
219  RK1048
220  MIK
221  BRF
222  MAC-CENTRALEUROPE
223  KOI8-RU
224  #
225  # Multibyte encodings come here
226  #
227  SJIS              SHIFT_JIS
228  CP932             WINDOWS-31J
229  #IBM932                               This converter looks quite strange
230  #IBM943                               This converter looks quite strange
231  EUC-KR
232  CP949
233  JOHAB
234  BIG5
235  BIG5HKSCS         BIG5-HKSCS
236  EUC-JP
237  EUC-JP-MS
238  EUC-CN            GB2312
239  GBK
240  EUC-TW
241  GB18030
242  EUC-JISX0213
243  SHIFT_JISX0213
244  #
245  # Stateful encodings not testable this way
246  #
247  #IBM930
248  #IBM933
249  #IBM935
250  #IBM937
251  #IBM939
252  #ISO-2022-JP
253  #ISO-2022-JP-2
254  #ISO-2022-JP-3
255  #ISO-2022-KR
256  #ISO-2022-CN
257  #ISO-2022-CN-EXT
258  #UTF-7
259  #
260EOF
261while read charset charmap; do
262  if test "$charset" = GB18030; then echo "This might take a while" 1>&2; fi
263  case ${charset} in \#*) continue;; esac
264  printf %s "Testing ${charset}" 1>&2
265  if ./tst-table.sh ${common_objpfx} ${objpfx} "${test_program_prefix}" \
266      ${charset} ${charmap} < /dev/null; then
267    echo 1>&2
268  else
269    echo "failed: ./tst-table.sh ${common_objpfx} ${objpfx} ${charset} ${charmap}"
270    echo " *** FAILED ***" 1>&2
271    exit 1
272  fi
273done
274
275exit $?
276