about summary refs log tree commit diff
path: root/iconvdata
diff options
context:
space:
mode:
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 f6e9c17a0c..39eb1e3863 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 9cd2a75e02..933c447096 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 37b3e5f924..421dc6739a 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 0000000000..6543c61f32
--- /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 0000000000..c86626638e
--- /dev/null
+++ b/iconvdata/testdata/ISO_11548-1
Binary files differdiff --git a/iconvdata/testdata/ISO_11548-1..UTF8 b/iconvdata/testdata/ISO_11548-1..UTF8
new file mode 100644
index 0000000000..9ac4e2a8b6
--- /dev/null
+++ b/iconvdata/testdata/ISO_11548-1..UTF8
@@ -0,0 +1 @@
+⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿
\ No newline at end of file