# Tests for endianness dependent iconv(1) (and therefore iconv(3)) in GNU libc.
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by Bruno Haible <haible@clisp.cons.org>, 2001.
#

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.

# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.

# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <http://www.gnu.org/licenses/>.

# Each line consists of three fields:
# 1. The endianness independent encoding.
# 2. The endianness dependent encoding.
# 3. The filename stem.

UTF-8		UTF-16		alfabeta
UTF-8		UTF-32		alfabeta
