]> git.ipfire.org Git - thirdparty/glibc.git/blame - iconvdata/tst-table.sh
support: Expose sbindir as support_sbindir_prefix
[thirdparty/glibc.git] / iconvdata / tst-table.sh
CommitLineData
b79f74cd 1#!/bin/sh
04277e02 2# Copyright (C) 2000-2019 Free Software Foundation, Inc.
b79f74cd
UD
3# This file is part of the GNU C Library.
4# Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
5#
41bdb6e2 6
b79f74cd 7# The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
8# modify it under the terms of the GNU Lesser General Public
9# License as published by the Free Software Foundation; either
10# version 2.1 of the License, or (at your option) any later version.
11
b79f74cd
UD
12# The GNU C Library is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2
AJ
15# Lesser General Public License for more details.
16
17# You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
18# License along with the GNU C Library; if not, see
19# <http://www.gnu.org/licenses/>.
b79f74cd
UD
20
21# Checks that the iconv() implementation (in both directions) for a
22# stateless encoding agrees with the charmap table.
23
24common_objpfx=$1
25objpfx=$2
740b3dbe 26test_program_prefix=$3
e40a0d21
JM
27charset=$4
28charmap=$5
b79f74cd 29
8540f6d2 30# sort is used on the build system.
b79f74cd
UD
31LC_ALL=C
32export LC_ALL
33
34set -e
35
36# Get the charmap.
54399c08 37./tst-table-charmap.sh ${charmap:-$charset} \
b79f74cd
UD
38 < ../localedata/charmaps/${charmap:-$charset} \
39 > ${objpfx}tst-${charset}.charmap.table
be479a6d
UD
40# When the charset is GB18030, truncate this table because for this encoding,
41# the tst-table-from and tst-table-to programs scan the Unicode BMP only.
42if test ${charset} = GB18030; then
43 grep '0x....$' < ${objpfx}tst-${charset}.charmap.table \
44 > ${objpfx}tst-${charset}.truncated.table
45 mv ${objpfx}tst-${charset}.truncated.table ${objpfx}tst-${charset}.charmap.table
46fi
b79f74cd 47
9813858f
UD
48# Precomputed expexted differences between the charmap and iconv forward.
49precomposed=${charset}.precomposed
50
51# Precompute expected differences between the charmap and iconv backward.
b79f74cd
UD
52if test ${charset} = EUC-TW; then
53 irreversible=${objpfx}tst-${charset}.irreversible
289ac9dd
UD
54 (grep '^0x8EA1' ${objpfx}tst-${charset}.charmap.table
55 cat ${charset}.irreversible
56 ) > ${irreversible}
b79f74cd
UD
57else
58 irreversible=${charset}.irreversible
59fi
60
61# iconv in one direction.
740b3dbe 62${test_program_prefix} \
b79f74cd
UD
63${objpfx}tst-table-from ${charset} \
64 > ${objpfx}tst-${charset}.table
65
66# iconv in the other direction.
740b3dbe 67${test_program_prefix} \
b79f74cd
UD
68${objpfx}tst-table-to ${charset} | sort \
69 > ${objpfx}tst-${charset}.inverse.table
70
9813858f
UD
71# Difference between the charmap and iconv backward.
72diff ${objpfx}tst-${charset}.charmap.table ${objpfx}tst-${charset}.inverse.table | \
b79f74cd
UD
73 grep '^[<>]' | sed -e 's,^. ,,' > ${objpfx}tst-${charset}.irreversible.table
74
9813858f
UD
75# Check 1: charmap and iconv forward should be identical, except for
76# precomposed characters.
be479a6d
UD
77if test -f ${precomposed}; then
78 cat ${objpfx}tst-${charset}.table ${precomposed} | sort | uniq -u \
79 > ${objpfx}tst-${charset}.tmp.table
80 cmp -s ${objpfx}tst-${charset}.charmap.table ${objpfx}tst-${charset}.tmp.table ||
601d2942
UD
81 exit 1
82else
be479a6d
UD
83 cmp -s ${objpfx}tst-${charset}.charmap.table ${objpfx}tst-${charset}.table ||
84 exit 1
601d2942 85fi
b79f74cd 86
9813858f 87# Check 2: the difference between the charmap and iconv backward.
b79f74cd
UD
88if test -f ${irreversible}; then
89 cat ${objpfx}tst-${charset}.charmap.table ${irreversible} | sort | uniq -u \
90 > ${objpfx}tst-${charset}.tmp.table
63e18f77
UD
91 cmp -s ${objpfx}tst-${charset}.tmp.table ${objpfx}tst-${charset}.inverse.table ||
92 exit 1
b79f74cd 93else
9813858f 94 cmp -s ${objpfx}tst-${charset}.charmap.table ${objpfx}tst-${charset}.inverse.table ||
63e18f77 95 exit 1
b79f74cd
UD
96fi
97
98exit 0