aboutsummaryrefslogtreecommitdiff
path: root/iconvdata
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-11-16 08:16:43 +0000
committerUlrich Drepper <drepper@redhat.com>2005-11-16 08:16:43 +0000
commita0e3432cc78283f88f8bf1ea88f1fecf158de9d1 (patch)
tree49668c6b86c266188282a01319034aa1b75db574 /iconvdata
parentff27f3ae96a8e16cfb9a8690f0cf06d177ce30ef (diff)
downloadglibc-a0e3432cc78283f88f8bf1ea88f1fecf158de9d1.zip
glibc-a0e3432cc78283f88f8bf1ea88f1fecf158de9d1.tar.gz
glibc-a0e3432cc78283f88f8bf1ea88f1fecf158de9d1.tar.bz2
* iconvdata/Makefile (modules): Add ISO_11548-1.
(distribute): Add iso_11548-1.c. * iconvdata/gconv-modules: Add entries for ISO 11548-1. * iconvdata/TESTS: Add entry for ISO 11548-1. [BZ 1872] * iconvdata/iso_11548-1.c: New file. * iconvdata/testdata/ISO_11548-1: New file. * iconvdata/testdata/ISO_11548-1..UTF8: New file. Patch by Samuel Thibault <samuel.thibault@ens-lyon.org>.
Diffstat (limited to 'iconvdata')
-rw-r--r--iconvdata/Makefile4
-rw-r--r--iconvdata/TESTS1
-rw-r--r--iconvdata/gconv-modules6
-rw-r--r--iconvdata/iso_11548-1.c73
-rw-r--r--iconvdata/testdata/ISO_11548-1bin0 -> 256 bytes
-rw-r--r--iconvdata/testdata/ISO_11548-1..UTF81
6 files changed, 83 insertions, 2 deletions
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index f6e9c17..39eb1e3 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -58,7 +58,7 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 \
IBM1142 IBM1143 IBM1144 IBM1145 IBM1146 IBM1147 IBM1148 \
IBM1149 IBM1166 IBM1167 IBM4517 IBM4899 IBM4909 IBM4971 \
IBM5347 IBM9030 IBM9066 IBM9448 IBM12712 IBM16804 \
- IBM1364 IBM1371 IBM1388 IBM1390 IBM1399
+ IBM1364 IBM1371 IBM1388 IBM1390 IBM1399 ISO_11548-1
modules.so := $(addsuffix .so, $(modules))
@@ -195,7 +195,7 @@ distribute := gconv-modules extra-module.mk gap.awk gaptab.awk gconv.map \
ibm9030.c ibm9030.h ibm9066.c ibm9066.h ibm9448.c ibm9448.h \
ibm12712.c ibm12712.h ibm16804.c ibm16804.h \
ibm1364.c ibm1364.h ibm1371.c ibm1371.h ibm1388.c ibm1388.h \
- ibm1390.c ibm1390.h ibm1399.c ibm1399.h
+ ibm1390.c ibm1390.h ibm1399.c ibm1399.h iso_11548-1.c
# We build the transformation modules only when we build shared libs.
ifeq (yes,$(build-shared))
diff --git a/iconvdata/TESTS b/iconvdata/TESTS
index 9cd2a75..933c447 100644
--- a/iconvdata/TESTS
+++ b/iconvdata/TESTS
@@ -164,3 +164,4 @@ IBM1371 IBM1371 N UTF8
IBM1388 IBM1388 N UTF8
IBM1390 IBM1390 N UTF8
IBM1399 IBM1399 N UTF8
+ISO_11548-1 ISO_11548-1 - UTF8
diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules
index 37b3e5f..421dc67 100644
--- a/iconvdata/gconv-modules
+++ b/iconvdata/gconv-modules
@@ -1897,3 +1897,9 @@ alias CP1399// IBM1399//
alias CSIBM1399// IBM1399//
module IBM1399// INTERNAL IBM1399 1
module INTERNAL IBM1399// IBM1399 1
+
+# from to module cost
+alias ISO/TR_11548-1/ ISO_11548-1//
+alias ISO11548-1// ISO_11548-1//
+module ISO_11548-1// INTERNAL ISO_11548-1 1
+module INTERNAL ISO_11548-1// ISO_11548-1 1
diff --git a/iconvdata/iso_11548-1.c b/iconvdata/iso_11548-1.c
new file mode 100644
index 0000000..6543c61
--- /dev/null
+++ b/iconvdata/iso_11548-1.c
@@ -0,0 +1,73 @@
+/* Conversion to and from ISO 11548-1.
+ Copyright (C) 1997-1999, 2000-2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997,
+ Samuel Thibault <samuel.thibault@ens-lyon.org>, 2005.
+
+ 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, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <dlfcn.h>
+#include <stdint.h>
+
+/* Definitions used in the body of the `gconv' function. */
+#define CHARSET_NAME "ISO_11548-1//"
+#define FROM_LOOP from_iso11548_1
+#define TO_LOOP to_iso11548_1
+#define DEFINE_INIT 1
+#define DEFINE_FINI 1
+#define MIN_NEEDED_FROM 1
+#define MIN_NEEDED_TO 4
+
+#define BRAILLE_UCS_BASE 0x2800
+
+/* First define the conversion function from ISO 11548-1 to UCS4. */
+#define MIN_NEEDED_INPUT MIN_NEEDED_FROM
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_TO
+#define LOOPFCT FROM_LOOP
+#define BODY \
+ *((uint32_t *) outptr) = BRAILLE_UCS_BASE | (*inptr++); \
+ outptr += sizeof (uint32_t);
+#define ONEBYTE_BODY \
+ { \
+ return BRAILLE_UCS_BASE | c; \
+ }
+#include <iconv/loop.c>
+
+
+/* Next, define the other direction. */
+#define MIN_NEEDED_INPUT MIN_NEEDED_TO
+#define MIN_NEEDED_OUTPUT MIN_NEEDED_FROM
+#define LOOPFCT TO_LOOP
+#define BODY \
+ { \
+ uint32_t ch = *((const uint32_t *) inptr); \
+ if (__builtin_expect ((ch & 0xffffff00u) != BRAILLE_UCS_BASE, 0)) \
+ { \
+ UNICODE_TAG_HANDLER (ch, 4); \
+ \
+ /* We have an illegal character. */ \
+ STANDARD_TO_LOOP_ERR_HANDLER (4); \
+ } \
+ else \
+ *outptr++ = (unsigned char) (ch & 0xff); \
+ inptr += 4; \
+ }
+#define LOOP_NEED_FLAGS
+#include <iconv/loop.c>
+
+
+/* Now define the toplevel functions. */
+#include <iconv/skeleton.c>
diff --git a/iconvdata/testdata/ISO_11548-1 b/iconvdata/testdata/ISO_11548-1
new file mode 100644
index 0000000..c866266
--- /dev/null
+++ b/iconvdata/testdata/ISO_11548-1
Binary files differ
diff --git a/iconvdata/testdata/ISO_11548-1..UTF8 b/iconvdata/testdata/ISO_11548-1..UTF8
new file mode 100644
index 0000000..9ac4e2a
--- /dev/null
+++ b/iconvdata/testdata/ISO_11548-1..UTF8
@@ -0,0 +1 @@
+⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿ \ No newline at end of file