diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-11-26 04:23:08 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-11-26 04:23:08 +0000 |
commit | f4017d205738b913f1002433cde5d4b4e93fbd81 (patch) | |
tree | 078a2f6aab0f3faf7355b41e12d8a06be81663a2 /iconvdata | |
parent | e34b0f2902588bbbfaf55829692e32c3c7134b74 (diff) | |
download | glibc-f4017d205738b913f1002433cde5d4b4e93fbd81.tar.gz |
Update.cvs/libc-ud-971125
1997-11-26 04:28 Ulrich Drepper <drepper@cygnus.com>
* eld/dl-profile.c (_dl_start_profile): Avoid FP calculation when
computing s_scale. Patch by a sun <asun@zoology.washington.edu>.
* iconv/gconv_close.c: Correct freeing of descriptor data.
* iconv/gconv_simple.c: Return correct error values for illegal or
incomplete characters.
* Makefile (iconvdata/%): Special goal to simplify iconvdata
development.
* iconvdata/Makefile: New file.
* iconvdata/configure: Likewise.
* iconvdata/extra-module.mk: Likewise.
* iconvdata/gconv-modules: Likewise.
* iconvdata/iso6937.c: Likewise.
* iconvdata/iso8859-1.c: Likewise.
* iconvdata/iso8859-10.c: Likewise.
* iconvdata/iso8859-10.h: Likewise.
* iconvdata/iso8859-2.c: Likewise.
* iconvdata/iso8859-2.h: Likewise.
* iconvdata/iso8859-3.c: Likewise.
* iconvdata/iso8859-3.h: Likewise.
* iconvdata/iso8859-4.c: Likewise.
* iconvdata/iso8859-4.h: Likewise.
* iconvdata/iso8859-5.c: Likewise.
* iconvdata/iso8859-5.h: Likewise.
* iconvdata/iso8859-6.c: Likewise.
* iconvdata/iso8859-6.h: Likewise.
* iconvdata/iso8859-7.c: Likewise.
* iconvdata/iso8859-7.h: Likewise.
* iconvdata/iso8859-8.c: Likewise.
* iconvdata/iso8859-8.h: Likewise.
* iconvdata/iso8859-9.c: Likewise.
* iconvdata/iso8859-9.h: Likewise.
* iconvdata/iso8859-generic.c: Likewise.
* iconvdata/t61.c: Likewise.
* string/Makefile (routines): Add strcasestr.
* string/string.h: Add prototype for strcasestr.
* sysdeps/generic/strcasestr.c: New file.
* wcsmbs/mbrtowc.c: Simplify special case a bit.
* wcsmbs/wcrtomb.c: Likewise.
* wcsmbs/mbsnrtowcs.c: Correctly handle incomplete characters.
* wcsmbs/wcsnrtombs.c: Likewise.
* wcsmbs/mbsrtowcs.c: Make sure SRC argument is correct when
partial character is read.
* wcsmbs/wcsrtombs.c: Likewise.
* wcsmbs/wmemrtombs.c: Likewise.
* wcsmbs/wmemrtowcs.c: Likewise.
* io/ftw.h: Include <sys/stat.h> instead of <bits/stat.h>.
* login/pty.h: Include <sys/ioctl.h> instead og <bits/ioctl-types.h>.
* sysdeps/i386/__longjmp.S: Define _SETJMP_H.
* sysdeps/i386/elf/setjmp.S: Likewise.
* sysdeps/unix/sysv/linux/kernel_termios.h: Do include
<bits/termios.h>.
* sysdeps/posix/mk-stdiolim.c: Output file with comment.
* sysdeps/unix/sysv/linux/stdio_lim.h.in: Add comment.
* sysdeps/unix/sysv/linux/sys/mman.h: Pretty print.
* sysvipc/sys/ipc.h: Likewise.
* sysvipc/sys/msg.h: Likewise.
* sysvipc/sys/sem.h: Likewise.
* sysvipc/sys/shm.h: Likewise.
* sysdeps/alpha/bits/endian.h: Issue error message if the header is
used directly.
* sysdeps/alpha/bits/setjmp.h: Likewise.
* sysdeps/alpha/fpu/bits/fenv.h: Likewise.
* sysdeps/arm/bits/endian.h: Likewise.
* sysdeps/arm/bits/setjmp.h: Likewise.
* sysdeps/generic/bits/byteswap.h: Likewise.
* sysdeps/generic/bits/confname.h: Likewise.
* sysdeps/generic/bits/dirent.h: Likewise.
* sysdeps/generic/bits/dlfcn.h: Likewise.
* sysdeps/generic/bits/endian.h: Likewise.
* sysdeps/generic/bits/fenv.h: Likewise.
* sysdeps/generic/bits/huge_val.h: Likewise.
* sysdeps/generic/bits/in.h: Likewise.
* sysdeps/generic/bits/ioctl-types.h: Likewise.
* sysdeps/generic/bits/ioctls.h: Likewise.
* sysdeps/generic/bits/ipc.h: Likewise.
* sysdeps/generic/bits/msq.h: Likewise.
* sysdeps/generic/bits/poll.h: Likewise.
* sysdeps/generic/bits/resource.h: Likewise.
* sysdeps/generic/bits/sched.h: Likewise.
* sysdeps/generic/bits/sem.h: Likewise.
* sysdeps/generic/bits/setjmp.h: Likewise.
* sysdeps/generic/bits/shm.h: Likewise.
* sysdeps/generic/bits/sigaction.h: Likewise.
* sysdeps/generic/bits/sigcontext.h: Likewise.
* sysdeps/generic/bits/socket.h: Likewise.
* sysdeps/generic/bits/stat.h: Likewise.
* sysdeps/generic/bits/statfs.h: Likewise.
* sysdeps/generic/bits/stdio_lim.h: Likewise.
* sysdeps/generic/bits/termios.h: Likewise.
* sysdeps/generic/bits/time.h: Likewise.
* sysdeps/generic/bits/uio.h: Likewise.
* sysdeps/generic/bits/utmp.h: Likewise.
* sysdeps/generic/bits/utmpx.h: Likewise.
* sysdeps/generic/bits/utsname.h: Likewise.
* sysdeps/generic/bits/waitflags.h: Likewise.
* sysdeps/generic/bits/waitstatus.h: Likewise.
* sysdeps/gnu/bits/utmp.h: Likewise.
* sysdeps/gnu/bits/utmpx.h: Likewise.
* sysdeps/i386/bits/byteswap.h: Likewise.
* sysdeps/i386/bits/endian.h: Likewise.
* sysdeps/i386/bits/huge_val.h: Likewise.
* sysdeps/i386/bits/setjmp.h: Likewise.
* sysdeps/i386/fpu/bits/fenv.h: Likewise.
* sysdeps/ieee754/bits/huge_val.h: Likewise.
* sysdeps/m68k/bits/byteswap.h: Likewise.
* sysdeps/m68k/bits/endian.h: Likewise.
* sysdeps/m68k/bits/setjmp.h: Likewise.
* sysdeps/m68k/fpu/bits/fenv.h: Likewise.
* sysdeps/mach/hurd/alpha/bits/sigcontext.h: Likewise.
* sysdeps/mach/hurd/bits/ioctls.h: Likewise.
* sysdeps/mach/hurd/bits/stat.h: Likewise.
* sysdeps/mach/hurd/hppa/bits/sigcontext.h: Likewise.
* sysdeps/mach/hurd/i386/bits/sigcontext.h: Likewise.
* sysdeps/mach/hurd/mips/bits/sigcontext.h: Likewise.
* sysdeps/mips/bits/dlfcn.h: Likewise.
* sysdeps/mips/bits/endian.h: Likewise.
* sysdeps/mips/bits/setjmp.h: Likewise.
* sysdeps/mips/dec/bits/endian.h: Likewise.
* sysdeps/mips/mips64/bits/setjmp.h: Likewise.
* sysdeps/mips/mipsel/bits/endian.h: Likewise.
* sysdeps/mips/p40/bits/endian.h: Likewise.
* sysdeps/powerpc/bits/endian.h: Likewise.
* sysdeps/powerpc/bits/fenv.h: Likewise.
* sysdeps/powerpc/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/bits/endian.h: Likewise.
* sysdeps/sparc/sparc32/bits/setjmp.h: Likewise.
* sysdeps/sparc/sparc32/fpu/bits/fenv.h: Likewise.
* sysdeps/sparc/sparc64/bits/endian.h: Likewise.
* sysdeps/sparc/sparc64/fpu/bits/fenv.h: Likewise.
* sysdeps/unix/bsd/bits/dirent.h: Likewise.
* sysdeps/unix/bsd/bits/stat.h: Likewise.
* sysdeps/unix/bsd/bits/waitflags.h: Likewise.
* sysdeps/unix/bsd/bsd4.4/bits/dirent.h: Likewise.
* sysdeps/unix/bsd/osf/alpha/bits/stat.h: Likewise.
* sysdeps/unix/bsd/osf/bits/sigaction.h: Likewise.
* sysdeps/unix/bsd/sun/m68k/bits/sigcontext.h: Likewise.
* sysdeps/unix/bsd/sun/sparc/bits/sigcontext.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/bits/resource.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/bits/termios.h: Likewise.
* sysdeps/unix/bsd/sun/sunos4/bits/utsname.h: Likewise.
* sysdeps/unix/bsd/ultrix4/bits/utsname.h: Likewise.
* sysdeps/unix/bsd/ultrix4/mips/bits/sigcontext.h: Likewise.
* sysdeps/unix/common/bits/dirent.h: Likewise.
* sysdeps/unix/sysv/bits/dirent.h: Likewise.
* sysdeps/unix/sysv/bits/stat.h: Likewise.
* sysdeps/unix/sysv/bits/utmp.h: Likewise.
* sysdeps/unix/sysv/bits/utsname.h: Likewise.
* sysdeps/unix/sysv/irix4/bits/confname.h: Likewise.
* sysdeps/unix/sysv/irix4/bits/stat.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/ioctls.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/ipc.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/stat.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/time.h: Likewise.
* sysdeps/unix/sysv/linux/bits/dirent.h: Likewise.
* sysdeps/unix/sysv/linux/bits/in.h: Likewise.
* sysdeps/unix/sysv/linux/bits/ioctl-types.h: Likewise.
* sysdeps/unix/sysv/linux/bits/ioctls.h: Likewise.
* sysdeps/unix/sysv/linux/bits/ipc.h: Likewise.
* sysdeps/unix/sysv/linux/bits/msq.h: Likewise.
* sysdeps/unix/sysv/linux/bits/poll.h: Likewise.
* sysdeps/unix/sysv/linux/bits/resource.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sem.h: Likewise.
* sysdeps/unix/sysv/linux/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sigcontext.h: Likewise.
* sysdeps/unix/sysv/linux/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/bits/stat.h: Likewise.
* sysdeps/unix/sysv/linux/bits/statfs.h: Likewise.
* sysdeps/unix/sysv/linux/bits/termios.h: Likewise.
* sysdeps/unix/sysv/linux/bits/time.h: Likewise.
* sysdeps/unix/sysv/linux/bits/uio.h: Likewise.
* sysdeps/unix/sysv/linux/bits/utsname.h: Likewise.
* sysdeps/unix/sysv/linux/bits/waitflags.h: Likewise.
* sysdeps/unix/sysv/linux/i386/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/m68k/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/m68k/bits/poll.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/endian.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/ipc.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/poll.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/shm.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/stat.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/statfs.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/termios.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/time.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/ioctls.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/poll.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/termios.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/mman.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/bits/setjmp.h: Likewise.
* sysdeps/unix/sysv/minix/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/sco3.2.4/bits/confname.h: Likewise.
* sysdeps/unix/sysv/sco3.2.4/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/sysv4/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/sysv4/bits/utsname.h: Likewise.
* sysdeps/unix/sysv/sysv4/bits/waitflags.h: Likewise.
* sysdeps/unix/sysv/sysv4/i386/bits/stat.h: Likewise.
* sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h: Likewise.
* sysdeps/unix/sysv/sysv4/solaris2/sparc/bits/sigcontext.h: Likewise.
* sysdeps/vax/bits/huge_val.h: Likewise.
* sysdeps/vax/bits/setjmp.h: Likewise.
* sysdeps/wordsize-32/bits/elfclass.h: Likewise.
* sysdeps/wordsize-64/bits/elfclass.h: Likewise.
1997-11-25 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* libio/stdio.h: Correct comment of sys_nerr/sys_errlist
1997-11-25 Paul Eggert <eggert@shade.twinsun.com>
* strftime.c (strftime):
No longer any need to undef or declare if emacs is defined.
(my_strftime): When checking a -1 returned by mktime, don't blow up
if localtime_r returns NULL.
1997-11-24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* README.template: Fix spelling.
1997-11-25 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* configure.in: Enhance --enable-add-ons description a wee bit.
1997-11-24 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* glibcbug.in: Add more information of build environment and flags.
1997-11-23 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/posix/getcwd.c: Recognize EOF from readdir and translate
it into ENOENT.
Diffstat (limited to 'iconvdata')
-rw-r--r-- | iconvdata/Makefile | 119 | ||||
-rwxr-xr-x | iconvdata/configure | 5 | ||||
-rw-r--r-- | iconvdata/extra-module.mk | 16 | ||||
-rw-r--r-- | iconvdata/gconv-modules | 145 | ||||
-rw-r--r-- | iconvdata/iso6937.c | 681 | ||||
-rw-r--r-- | iconvdata/iso8859-1.c | 219 | ||||
-rw-r--r-- | iconvdata/iso8859-10.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-10.h | 516 | ||||
-rw-r--r-- | iconvdata/iso8859-2.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-2.h | 516 | ||||
-rw-r--r-- | iconvdata/iso8859-3.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-3.h | 502 | ||||
-rw-r--r-- | iconvdata/iso8859-4.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-4.h | 516 | ||||
-rw-r--r-- | iconvdata/iso8859-5.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-5.h | 516 | ||||
-rw-r--r-- | iconvdata/iso8859-6.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-6.h | 426 | ||||
-rw-r--r-- | iconvdata/iso8859-7.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-7.h | 504 | ||||
-rw-r--r-- | iconvdata/iso8859-8.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-8.h | 440 | ||||
-rw-r--r-- | iconvdata/iso8859-9.c | 24 | ||||
-rw-r--r-- | iconvdata/iso8859-9.h | 516 | ||||
-rw-r--r-- | iconvdata/iso8859-generic.c | 228 | ||||
-rw-r--r-- | iconvdata/t61.c | 630 |
26 files changed, 6711 insertions, 0 deletions
diff --git a/iconvdata/Makefile b/iconvdata/Makefile new file mode 100644 index 0000000000..a79e12a291 --- /dev/null +++ b/iconvdata/Makefile @@ -0,0 +1,119 @@ +# Copyright (C) 1997 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation; either version 2 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 +# Library General Public License for more details. + +# You should have received a copy of the GNU Library General Public +# License along with the GNU C Library; see the file COPYING.LIB. If +# not, write to the Free Software Foundation, Inc., +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# Makefile for iconv data and code. +# +subdir := iconvdata + +# Names of all the shared objects which implement the transformations. +modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 \ + ISO8859-6 ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10 \ + T.61 ISO_6937 +modules.so := $(addsuffix .so, $(modules)) + + +ISO8859-1-routines := iso8859-1 +ISO8859-2-routines := iso8859-2 +ISO8859-3-routines := iso8859-3 +ISO8859-4-routines := iso8859-4 +ISO8859-5-routines := iso8859-5 +ISO8859-6-routines := iso8859-6 +ISO8859-7-routines := iso8859-7 +ISO8859-8-routines := iso8859-8 +ISO8859-9-routines := iso8859-9 +ISO8859-10-routines := iso8859-10 +T.61-routines := t61 +ISO_6937-routines := iso6937 + +distribute := iso8859-generic.c \ + iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c \ + iso8859-6.c iso8859-7.c iso8859-8.c iso8859-9.c iso8859-10.c\ + iso8859-2.h iso8859-3.h iso8859-4.h iso8859-5.h iso8859-6.h \ + iso8859-7.h iso8859-8.h iso8859-9.h iso8859-10.h t61.c \ + iso6937.c + +include ../Makeconfig + +# We build the transformation modules only when we build shared libs. +ifeq (yes,$(build-shared)) + +# This macro is similar to build-shlib but it does not define a soname +# and it does not depend on the destination name to start with `lib'. +define build-module +$(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \ + -B$(csu-objpfx) $(load-map-file:%=-Wl,--version-script=%) \ + $(LDFLAGS.so) $(LDFLAGS-$(@F:%.so=%).so) \ + -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \ + -Wl,--whole-archive \ + $(filter-out $($(@F:.so=)-map) $(+preinit) $(+postinit),$^) \ + $(no-whole-archive) $(LDLIBS-$(@F:%.so=%).so) +endef + +# Rule to generate the shared objects. +extra-modules-left := $(modules) +include extra-module.mk + + +extra-objs += $(modules.so) +install-others = $(addprefix $(inst_gconvdir)/, $(modules.so)) \ + $(inst_gconvdir)/gconv-modules + +# If we have the localedata add-on available we can build the conversion +# tables for numerous charsets. +ifneq (,$(findstring localedata,$(add-ons))) +define generate-8bit-table +( echo "static const wchar_t to_ucs4[256] = {"; \ + sed -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/ [0x\1] = 0x\2,/p' -e d $^ | sort -u; \ + echo "};"; \ + echo "static const char from_ucs4[] = {"; \ + sed -e 's/^[^[:space:]]*[[:space:]]*.x\(..\)[[:space:]]*<U\(....\)>.*/ [0x\2] = 0x\1,/p' -e d $^ | sort -u; \ + echo "};" ) > $@.new && rm -f $@ && mv $@.new $@ +endef + +iso8859-2.h: ../localedata/charmaps/ISO-8859-2 + $(generate-8bit-table) +iso8859-3.h: ../localedata/charmaps/ISO-8859-3 + $(generate-8bit-table) +iso8859-4.h: ../localedata/charmaps/ISO-8859-4 + $(generate-8bit-table) +iso8859-5.h: ../localedata/charmaps/ISO-8859-5 + $(generate-8bit-table) +iso8859-6.h: ../localedata/charmaps/ISO-8859-6 + $(generate-8bit-table) +iso8859-7.h: ../localedata/charmaps/ISO-8859-7 + $(generate-8bit-table) +iso8859-8.h: ../localedata/charmaps/ISO-8859-8 + $(generate-8bit-table) +iso8859-9.h: ../localedata/charmaps/ISO-8859-9 + $(generate-8bit-table) +iso8859-10.h: ../localedata/charmaps/ISO-8859-10 + $(generate-8bit-table) + +headers: iso8859-2.h iso8859-3.h iso8859-4.h iso8859-5.h iso8859-6.h \ + iso8859-7.h iso8859-8.h iso8859-9.h iso8859-10.h +endif + + +$(addprefix $(inst_gconvdir)/, $(modules.so)): $(inst_gconvdir)/%: $(objpfx)% + $(do-install-program) +$(inst_gconvdir)/gconv_modules: gconv-modules + $(do-install) +endif + +include ../Rules diff --git a/iconvdata/configure b/iconvdata/configure new file mode 100755 index 0000000000..3eafc93f5b --- /dev/null +++ b/iconvdata/configure @@ -0,0 +1,5 @@ +# This is only to keep the GNU C library configure mechanism happy. +# +# Perhaps some day we need a real configuration script for different +# kernel versions or so. +exit 0 diff --git a/iconvdata/extra-module.mk b/iconvdata/extra-module.mk new file mode 100644 index 0000000000..88c68041a8 --- /dev/null +++ b/iconvdata/extra-module.mk @@ -0,0 +1,16 @@ +mod := $(firstword $(extra-modules-left)) +extra-modules-left := $(strip $(filter-out $(mod),$(extra-modules-left))) + +extra-objs += $(patsubst %,%.os,$($(mod)-routines)) + +$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines))) + $(build-module) + +# Depend on libc.so so a DT_NEEDED is generated in the shared objects. +# This ensures they will load libc.so for needed symbols if loaded by +# a statically-linked program that hasn't already loaded it. +$(objpfx)$(mod).so: $(common-objpfx)libc.so + +ifneq (,$(extra-modules-left)) +include extra-module.mk +endif diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules new file mode 100644 index 0000000000..270ac14f11 --- /dev/null +++ b/iconvdata/gconv-modules @@ -0,0 +1,145 @@ +# GNU libc iconv configuration. +# Copyright (C) 1997 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. +# +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation; either version 2 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 +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with the GNU C Library; see the file COPYING.LIB. If not, +# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. */ + +# All lines contain the following information: + +# If the lines start with `module' +# fromset: either a name triple or a regular expression triple. +# toset: a name triple or an expression with \N to get regular +# expression matching results. +# filename: filename of the module implementing the transformation. +# If it is not absolute the path is made absolute by prepending +# the directory the configuration file is found in. +# cost: optional cost of the transformation. Default is 1. + +# If the lines start with `alias' +# alias: alias name which is not really recognized. +# name: the real name of the character set + +# from to module cost +alias ISO-10646// ISO-10646/UCS4/ +alias 10646-1:1993// ISO-10646/UCS4/ +alias 10646-1:1993/UCS4/ ISO-10646/UCS4/ + +# from to module cost +alias ISO-IR-100// ISO-8859-1// +alias ISO_8859-1:1987// ISO-8859-1// +alias ISO_8859-1// ISO-8859-1// +alias LATIN1// ISO-8859-1// +alias L1// ISO-8859-1// +alias IBM819// ISO-8859-1// +alias CP819// ISO-8859-1// +module ISO-8859-1// ISO-10646/UCS4/ ISO8859-1 1 +module ISO-10646/UCS4/ ISO-8859-1// ISO8859-1 1 + +# from to module cost +alias ISO-IR-101// ISO-8859-2// +alias ISO_8859-2:1987// ISO-8859-2// +alias ISO_8859-2// ISO-8859-2// +alias LATIN2// ISO-8859-2// +alias L2// ISO-8859-2// +module ISO-8859-2// ISO-10646/UCS4/ ISO8859-2 1 +module ISO-10646/UCS4/ ISO-8859-2// ISO8859-2 1 + +# from to module cost +alias ISO-IR-109// ISO-8859-3// +alias ISO_8859-3:1988// ISO-8859-3// +alias ISO_8859-3// ISO-8859-3// +alias LATIN3// ISO-8859-3// +alias L3// ISO-8859-3// +module ISO-8859-3// ISO-10646/UCS4/ ISO8859-3 1 +module ISO-10646/UCS4/ ISO-8859-3// ISO8859-3 1 + +# from to module cost +alias ISO-IR-110// ISO-8859-4// +alias ISO_8859-4:1988// ISO-8859-4// +alias ISO_8859-4// ISO-8859-4// +alias LATIN4// ISO-8859-4// +alias L4// ISO-8859-4// +module ISO-8859-4// ISO-10646/UCS4/ ISO8859-4 1 +module ISO-10646/UCS4/ ISO-8859-4// ISO8859-4 1 + +# from to module cost +alias ISO-IR-144// ISO-8859-5// +alias ISO_8859-5:1988// ISO-8859-5// +alias ISO_8859-5// ISO-8859-5// +alias CYRILLIC// ISO-8859-5// +module ISO-8859-5// ISO-10646/UCS4/ ISO8859-5 1 +module ISO-10646/UCS4/ ISO-8859-5// ISO8859-5 1 + +# from to module cost +alias ISO-IR-127// ISO-8859-6// +alias ISO_8859-6:1987// ISO-8859-6// +alias ISO_8859-6// ISO-8859-6// +alias ECMA-114// ISO-8859-6// +alias ASMO-708// ISO-8859-6// +alias ARABIC// ISO-8859-6// +module ISO-8859-6// ISO-10646/UCS4/ ISO8859-6 1 +module ISO-10646/UCS4/ ISO-8859-6// ISO8859-6 1 + +# from to module cost +alias ISO-IR-126// ISO-8859-7// +alias ISO_8859-7:1987// ISO-8859-7// +alias ISO_8859-7// ISO-8859-7// +alias ELOT_928// ISO-8859-7// +alias ECMA-118// ISO-8859-7// +alias GREEK// ISO-8859-7// +alias GREEK8// ISO-8859-7// +module ISO-8859-7// ISO-10646/UCS4/ ISO8859-7 1 +module ISO-10646/UCS4/ ISO-8859-7// ISO8859-7 1 + +# from to module cost +alias ISO-IR-138// ISO-8859-8// +alias ISO_8859-8:1988// ISO-8859-8// +alias ISO_8859-8// ISO-8859-8// +alias HEBREW// ISO-8859-8// +module ISO-8859-8// ISO-10646/UCS4/ ISO8859-8 1 +module ISO-10646/UCS4/ ISO-8859-8// ISO8859-8 1 + +# from to module cost +alias ISO-IR-148// ISO-8859-9// +alias ISO_8859-9:1989// ISO-8859-9// +alias ISO_8859-9// ISO-8859-9// +alias LATIN5// ISO-8859-9// +alias L5// ISO-8859-9// +module ISO-8859-9// ISO-10646/UCS4/ ISO8859-9 1 +module ISO-10646/UCS4/ ISO-8859-9// ISO8859-9 1 + +# from to module cost +alias ISO-IR-157// ISO-8859-10// +alias ISO_8859-10:1993// ISO-8859-10// +alias ISO_8859-10// ISO-8859-10// +alias LATIN6// ISO-8859-10// +alias L6// ISO-8859-10// +module ISO-8859-10// ISO-10646/UCS4/ ISO8859-10 1 +module ISO-10646/UCS4/ ISO-8859-10// ISO8859-10 1 + +# from to module cost +alias T.61// T.61-8BIT// +alias ISO-IR-103// T.61-8BIT// +module T.61-8BIT// ISO-10646/UCS4/ T.61 1 +module ISO-10646/UCS4/ T.61-8BIT// T.61 1 + +# from to module cost +alias ISO-IR-156// ISO_6937// +alias ISO_6937:1992// ISO_6937// +alias ISO6937// ISO_6937// +module ISO_6937// ISO-10646/UCS4/ ISO_6937 1 +module ISO-10646/UCS4/ ISO_6937// ISO_6937 1 diff --git a/iconvdata/iso6937.c b/iconvdata/iso6937.c new file mode 100644 index 0000000000..dc6da3b347 --- /dev/null +++ b/iconvdata/iso6937.c @@ -0,0 +1,681 @@ +/* Generic conversion to and from ISO 6937. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <gconv.h> +#include <stdlib.h> +#include <string.h> + +/* Data taken from the WG15 tables. */ +static const wchar_t to_ucs4[256] = +{ + /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + /* 0x08 */ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + /* 0x18 */ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + /* 0x20 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0034, 0x0025, 0x0026, 0x0027, + /* 0x28 */ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + /* 0x30 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + /* 0x38 */ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + /* 0x40 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + /* 0x48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + /* 0x50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + /* 0x58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + /* 0x60 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + /* 0x68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + /* 0x70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + /* 0x78 */ 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + /* 0x80 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + /* 0x88 */ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + /* 0x90 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + /* 0x98 */ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + /* 0xa0 */ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x0000, 0x00a5, 0x0000, 0x00a7, + /* 0xa8 */ 0x00a4, 0x2018, 0x201c, 0x00ab, 0x2190, 0x2191, 0x2192, 0x2193, + /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + /* 0xb8 */ 0x00f7, 0x2019, 0x201d, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + /* 0xc0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xc8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd0 */ 0x2014, 0x00b9, 0x00ae, 0x00a9, 0x2122, 0x266a, 0x00ac, 0x00a6, + /* 0xd8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x215b, 0x215c, 0x215d, 0x215e, + /* 0xe0 */ 0x2126, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132, 0x013f, + /* 0xe8 */ 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0x0149, + /* 0xf0 */ 0x0138, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0140, + /* 0xf8 */ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x00ad +}; + +/* The outer array range runs from 0xc1 to 0xcf, the inner range from 0x20 + to 0x7f. */ +static const wchar_t to_ucs4_comb[15][96] = +{ + /* 0xc1 */ + { + /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c0, 0x0000, 0x0000, 0x0000, 0x00c8, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x00cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d9, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e0, 0x0000, 0x0000, 0x0000, 0x00e8, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x00ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f2, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f9, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc2 */ + { + /* 0x20 */ 0x00b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c1, 0x0000, 0x0106, 0x0000, 0x00c9, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x00cd, 0x0000, 0x0000, 0x0139, 0x0000, 0x0143, 0x00d3, + /* 0x50 */ 0x0000, 0x0000, 0x0154, 0x015a, 0x0000, 0x00da, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x00dd, 0x0179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e1, 0x0000, 0x0107, 0x0000, 0x00e9, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x00ed, 0x0000, 0x0000, 0x013a, 0x0000, 0x0144, 0x00f3, + /* 0x70 */ 0x0000, 0x0000, 0x0155, 0x015b, 0x0000, 0x00fa, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x00fd, 0x017a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc3 */ + { + /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c2, 0x0000, 0x0108, 0x0000, 0x00ca, 0x0000, 0x011c, + /* 0x48 */ 0x0124, 0x00ce, 0x0134, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d4, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x015c, 0x0000, 0x00db, 0x0000, 0x0174, + /* 0x58 */ 0x0000, 0x0176, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e2, 0x0000, 0x0109, 0x0000, 0x00ea, 0x0000, 0x011d, + /* 0x68 */ 0x0125, 0x00ee, 0x0135, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f4, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x015d, 0x0000, 0x00fb, 0x0000, 0x0175, + /* 0x78 */ 0x0000, 0x0177, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc4 */ + { + /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d1, 0x00d5, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0168, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0129, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f1, 0x00f5, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0169, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc5 */ + { + /* 0x20 */ 0x00af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x012a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014c, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016a, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0113, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014d, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016b, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc6 */ + { + /* 0x20 */ 0x02d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011e, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0103, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011f, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016d, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc7 */ + { + /* 0x20 */ 0x02d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x010a, 0x0000, 0x0116, 0x0000, 0x0120, + /* 0x48 */ 0x0000, 0x0130, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x017b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x010b, 0x0000, 0x0117, 0x0000, 0x0121, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x017c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc8 */ + { + /* 0x20 */ 0x00a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c4, 0x0000, 0x0000, 0x0000, 0x00cb, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x00cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d6, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00dc, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0178, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e4, 0x0000, 0x0000, 0x0000, 0x00eb, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x00ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f6, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fc, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc9 */ + { + 0x0000, + }, + /* 0xca */ + { + /* 0x20 */ 0x02da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016e, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016f, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xcb */ + { + /* 0x20 */ 0x00b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x00c7, 0x0000, 0x0000, 0x0000, 0x0122, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0136, 0x013b, 0x0000, 0x0145, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0156, 0x015e, 0x0162, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x00e7, 0x0000, 0x0000, 0x0000, 0x0123, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0137, 0x013c, 0x0000, 0x0146, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0157, 0x015f, 0x0163, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xcc */ + { + 0x0000, + }, + /* 0xcd */ + { + /* 0x20 */ 0x02dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0150, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0170, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0151, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0171, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xce */ + { + /* 0x20 */ 0x02db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0104, 0x0000, 0x0000, 0x0000, 0x0118, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x012e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0172, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0105, 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0173, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xcf */ + { + /* 0x20 */ 0x02c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x010c, 0x010e, 0x011a, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x013d, 0x0000, 0x0147, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0158, 0x0160, 0x0164, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x010d, 0x010f, 0x011b, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0148, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0159, 0x0161, 0x0165, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x017e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + } +}; + + +static const char from_ucs4[][2] = +{ + /* 0x0000 */ "\x00\x00", "\x01\x00", "\x02\x00", "\x03\x00", "\x04\x00", + /* 0x0005 */ "\x05\x00", "\x06\x00", "\x07\x00", "\x08\x00", "\x09\x00", + /* 0x000a */ "\x0a\x00", "\x0b\x00", "\x0c\x00", "\x0d\x00", "\x0e\x00", + /* 0x000f */ "\x0f\x00", "\x10\x00", "\x11\x00", "\x12\x00", "\x13\x00", + /* 0x0014 */ "\x14\x00", "\x15\x00", "\x16\x00", "\x17\x00", "\x18\x00", + /* 0x0019 */ "\x19\x00", "\x1a\x00", "\x1b\x00", "\x1c\x00", "\x1d\x00", + /* 0x001e */ "\x1e\x00", "\x1f\x00", "\x20\x00", "\x21\x00", "\x22\x00", + /* 0x0023 */ "\x23\x00", "\x24\x00", "\x25\x00", "\x26\x00", "\x27\x00", + /* 0x0028 */ "\x28\x00", "\x29\x00", "\x2a\x00", "\x2b\x00", "\x2c\x00", + /* 0x002d */ "\x2d\x00", "\x2e\x00", "\x2f\x00", "\x30\x00", "\x31\x00", + /* 0x0032 */ "\x32\x00", "\x33\x00", "\x34\x00", "\x35\x00", "\x36\x00", + /* 0x0037 */ "\x37\x00", "\x38\x00", "\x39\x00", "\x3a\x00", "\x3b\x00", + /* 0x003c */ "\x3c\x00", "\x3d\x00", "\x3e\x00", "\x3f\x00", "\x40\x00", + /* 0x0041 */ "\x41\x00", "\x42\x00", "\x43\x00", "\x44\x00", "\x45\x00", + /* 0x0046 */ "\x46\x00", "\x47\x00", "\x48\x00", "\x49\x00", "\x4a\x00", + /* 0x004b */ "\x4b\x00", "\x4c\x00", "\x4d\x00", "\x4e\x00", "\x4f\x00", + /* 0x0050 */ "\x50\x00", "\x51\x00", "\x52\x00", "\x53\x00", "\x54\x00", + /* 0x0055 */ "\x55\x00", "\x56\x00", "\x57\x00", "\x58\x00", "\x59\x00", + /* 0x005a */ "\x5a\x00", "\x5b\x00", "\x5c\x00", "\x5d\x00", "\x5e\x00", + /* 0x005f */ "\x5f\x00", "\x60\x00", "\x61\x00", "\x62\x00", "\x63\x00", + /* 0x0064 */ "\x64\x00", "\x65\x00", "\x66\x00", "\x67\x00", "\x68\x00", + /* 0x0069 */ "\x69\x00", "\x6a\x00", "\x6b\x00", "\x6c\x00", "\x6d\x00", + /* 0x006e */ "\x6e\x00", "\x6f\x00", "\x70\x00", "\x71\x00", "\x72\x00", + /* 0x0073 */ "\x73\x00", "\x74\x00", "\x75\x00", "\x76\x00", "\x77\x00", + /* 0x0078 */ "\x78\x00", "\x79\x00", "\x7a\x00", "\x7b\x00", "\x7c\x00", + /* 0x007d */ "\x7d\x00", "\x7e\x00", "\x7f\x00", "\x00\x80", "\x00\x81", + /* 0x0082 */ "\x82\x00", "\x83\x00", "\x84\x00", "\x85\x00", "\x86\x00", + /* 0x0087 */ "\x87\x00", "\x88\x00", "\x89\x00", "\x8a\x00", "\x8b\x00", + /* 0x008c */ "\x8c\x00", "\x8d\x00", "\x8e\x00", "\x8f\x00", "\x90\x00", + /* 0x0091 */ "\x91\x00", "\x92\x00", "\x93\x00", "\x94\x00", "\x95\x00", + /* 0x0096 */ "\x96\x00", "\x97\x00", "\x98\x00", "\x99\x00", "\x9a\x00", + /* 0x009b */ "\x9b\x00", "\x9c\x00", "\x9d\x00", "\x9e\x00", "\x9f\x00", + /* 0x00a0 */ "\xa0\x00", "\xa1\x00", "\xa2\x00", "\xa3\x00", "\xa4\x00", + /* 0x00a5 */ "\xa5\x00", "\xd7\x00", "\xa7\x00", "\xc8\x20", "\xd3\x00", + /* 0x00aa */ "\xe3\x00", "\xab\x00", "\xd6\x00", "\xff\x00", "\xd2\x00", + /* 0x00af */ "\xc5\x20", "\xb0\x00", "\xb1\x00", "\xb2\x00", "\xb3\x00", + /* 0x00b4 */ "\xc2\x20", "\xb5\x00", "\xb6\x00", "\xb7\x00", "\xcb\x20", + /* 0x00b9 */ "\xc1\x00", "\xeb\x00", "\xbb\x00", "\xbc\x00", "\xbd\x00", + /* 0x00be */ "\xbe\x00", "\xbf\x00", "\xc1\x41", "\xc2\x41", "\xc3\x41", + /* 0x00c3 */ "\xc4\x41", "\xc8\x41", "\xca\x41", "\xe1\x00", "\xcb\x43", + /* 0x00c8 */ "\xc1\x45", "\xc2\x45", "\xc3\x45", "\xc8\x45", "\xc1\x49", + /* 0x00cd */ "\xc2\x49", "\xc3\x49", "\xc8\x49", "\xe2\x00", "\xc4\x4e", + /* 0x00d2 */ "\xc1\x4f", "\xc2\x4f", "\xc3\x4f", "\xc4\x4f", "\xc8\x4f", + /* 0x00d7 */ "\xb4\x00", "\xe9\x00", "\xc1\x55", "\xc2\x55", "\xc3\x55", + /* 0x00dc */ "\xc8\x55", "\xc2\x59", "\xec\x00", "\xfb\x00", "\xc1\x61", + /* 0x00e1 */ "\xc2\x61", "\xc3\x61", "\xc4\x61", "\xc8\x61", "\xca\x61", + /* 0x00e6 */ "\xf1\x00", "\xcb\x63", "\xc1\x65", "\xc2\x65", "\xc3\x65", + /* 0x00eb */ "\xc8\x65", "\xc1\x69", "\xc2\xe9", "\xc3\x69", "\xc8\x69", + /* 0x00f0 */ "\xf3\x00", "\xc4\x6e", "\xc1\x6f", "\xc2\x6f", "\xc3\x6f", + /* 0x00f5 */ "\xc4\x6f", "\xc8\x6f", "\xb8\x00", "\xf9\x00", "\xc1\x75", + /* 0x00fa */ "\xc2\x75", "\xc3\x75", "\xc8\x75", "\xc2\x79", "\xfc\x00", + /* 0x00ff */ "\xc8\x79", "\xc5\x41", "\xc5\x61", "\xc6\x41", "\xc6\x61", + /* 0x0104 */ "\xce\x41", "\xce\x61", "\xc2\x43", "\xc2\x63", "\xc3\x43", + /* 0x0109 */ "\xc3\x63", "\xc7\x43", "\xc7\x63", "\xcf\x43", "\xcf\x63", + /* 0x010e */ "\xcf\x44", "\xcf\x64", "\x00\x00", "\xf2\x00", "\xc5\x45", + /* 0x0113 */ "\xc5\x65", "\x00\x00", "\x00\x00", "\xc7\x45", "\xc7\x65", + /* 0x0118 */ "\xce\x45", "\xce\x65", "\xcf\x45", "\xcf\x65", "\xc3\x47", + /* 0x011d */ "\xc3\x67", "\xc6\x47", "\xc6\x67", "\xc7\x47", "\xc7\x67", + /* 0x0122 */ "\xcb\x47", "\xcb\x67", "\xc3\x48", "\xc3\x68", "\xe4\x00", + /* 0x0127 */ "\xf4\x00", "\xc4\x49", "\xc4\x69", "\xc5\x49", "\xc5\x69", + /* 0x012c */ "\x00\x00", "\x00\x00", "\xce\x49", "\xce\x69", "\xc7\x49", + /* 0x0131 */ "\xf5\x00", "\xe6\x00", "\xf6\x00", "\xc3\x4a", "\xc3\x6a", + /* 0x0136 */ "\xcb\x4b", "\xcb\x6b", "\xf0\x00", "\xc2\x4c", "\xc2\x6c", + /* 0x013b */ "\xcb\x4c", "\xcb\x6c", "\xcf\x4c", "\xcf\x6c", "\xe7\x00", + /* 0x0140 */ "\xf7\x00", "\xe8\x00", "\xf8\x00", "\xc2\x4e", "\xc2\x6e", + /* 0x0145 */ "\xcb\x4e", "\xcb\x6e", "\xcf\x4e", "\xcf\x6e", "\xef\x00", + /* 0x014a */ "\xee\x00", "\xfe\x00", "\xc5\x4f", "\xc5\x6f", "\x00\x00", + /* 0x014f */ "\x00\x00", "\xcd\x4f", "\xcd\x6f", "\xea\x00", "\xfa\x00", + /* 0x0154 */ "\xc2\x52", "\xc2\x72", "\xcb\x52", "\xcb\x72", "\xcf\x52", + /* 0x0159 */ "\xcf\x72", "\xc2\x53", "\xc2\x73", "\xc3\x53", "\xc3\x73", + /* 0x015e */ "\xcb\x53", "\xcb\x73", "\xcf\x53", "\xcf\x73", "\xcb\x54", + /* 0x0163 */ "\xcb\x74", "\xcf\x54", "\xcf\x74", "\xed\x00", "\xfd\x00", + /* 0x0168 */ "\xc4\x55", "\xc4\x75", "\xc5\x55", "\xc5\x75", "\xc6\x55", + /* 0x016d */ "\xc6\x75", "\xca\x55", "\xca\x75", "\xcd\x55", "\xcd\x75", + /* 0x0172 */ "\xce\x55", "\xce\x75", "\xc3\x57", "\xc3\x77", "\xc3\x59", + /* 0x0177 */ "\xc3\x79", "\xc8\x59", "\xc2\x5a", "\xc2\x7a", "\xc7\x5a", + /* 0x017c */ "\xc7\x7a", "\xcf\x5a", "\xcf\x7a" +/* + This table does not cover the following positions: + + 0x02c7 "\xcf\x20", + ... + 0x02d8 "\xc6\x20", "\xc7\x20", "\xca\x20", "\xce\x20", "\x00\x00", + 0x02dd "\xcd\x20", + ... + 0x2014 "\xd0\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xa9\x00", + 0x2019 "\xb9\x00", "\x00\x00", "\x00\x00", "\xaa\x00", "\xba\x00", + 0x201e "\x00\x00", "\x00\x00", "\x00\x00", "\x00\x00", "\xd4\x00", + 0x2123 "\x00\x00", "\x00\x00", "\x00\x00", "\xe0\x00", "\x00\x00", + ... + 0x215b "\xdc\x00", "\xdd\x00", "\xde\x00" + ... + 0x2190 "\xac\x00", "\xad\x00", "\xae\x00", "\xaf\x00", + ... + 0x266a "\xd5\x00" + + These would blow up the table and are therefore handled specially in + the code. +*/ +}; + +/* Direction of the transformation. */ +enum direction +{ + illegal, + to_iso6937, + from_iso6937 +}; + +struct iso6937_data +{ + enum direction dir; +}; + + +int +gconv_init (struct gconv_step *step, struct gconv_step_data *data) +{ + /* Determine which direction. */ + struct iso6937_data *new_data; + enum direction dir; + int result; + + if (__strcasestr (step->from_name, "ISO_6937") != NULL) + dir = from_iso6937; + else if (__strcasestr (step->to_name, "ISO_6937") != NULL) + dir = to_iso6937; + else + dir = illegal; + + result = GCONV_NOCONV; + if (dir != illegal + && ((new_data + = (struct iso6937_data *) malloc (sizeof (struct iso6937_data))) + != NULL)) + { + new_data->dir = dir; + data->data = new_data; + result = GCONV_OK; + } + + return result; +} + + +void +gconv_end (struct gconv_step_data *data) +{ + free (data->data); +} + + +int +gconv (struct gconv_step *step, struct gconv_step_data *data, + const char *inbuf, size_t *inbufsize, size_t *written, int do_flush) +{ + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + gconv_fct fct = next_step->fct; + size_t do_write; + int result; + + /* If the function is called with no input this means we have to reset + to the initial state. The possibly partly converted input is + dropped. */ + if (do_flush) + { + do_write = 0; + + /* Call the steps down the chain if there are any. */ + if (data->is_last) + result = GCONV_OK; + else + { + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + + result = (*fct) (next_step, next_data, NULL, 0, written, 1); + + /* Clear output buffer. */ + data->outbufavail = 0; + } + } + else + { + enum direction dir = ((struct iso6937_data *) data->data)->dir; + + do_write = 0; + + do + { + result = GCONV_OK; + + if (dir == from_iso6937) + { + size_t inchars = *inbufsize; + size_t outwchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (cnt < inchars + && (outwchars + sizeof (wchar_t) <= data->outbufsize)) + { + int inchar = inbuf[cnt]; + wchar_t ch; + + if (inchar >= '\xc1' && inchar <= '\xcf') + { + /* Composed character. First test whether the next + character is also available. */ + int inchar2; + + if (cnt + 1 >= inchars) + { + /* The second character is not available. Store + the intermediate result. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + + inchar2 = inbuf[++cnt]; + + if (inchar2 < '\x20' || inchar2 >= '\x80') + /* This is illegal. */ + ch = L'\0'; + else + ch = to_ucs4_comb[inchar - 0xc1][inchar2 - 0x20]; + } + else + ch = to_ucs4[inchar]; + + if (ch == L'\0' && inbuf[cnt] != '\0') + { + /* This is an illegal character. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + + *((wchar_t *) (outbuf + outwchars)) = ch; + ++do_write; + outwchars += sizeof (wchar_t); + ++cnt; + } + *inbufsize -= cnt; + data->outbufavail = outwchars; + } + else + { + size_t inwchars = *inbufsize; + size_t outchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + int extra = 0; + + while (inwchars >= cnt + sizeof (wchar_t) + && outchars < data->outbufsize) + { + char tmp[2]; + int ch = *((wchar_t *) (inbuf + cnt)); + const char *cp; + + if (ch >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) + { + int fail = 0; + switch (ch) + { + case 0x2c7: + cp = "\xcf\x20"; + break; + case 0x2d8 ... 0x2dd: + { + static const char map[5] = "\xc6\xc7\xca\xce\xcd"; + + tmp[0] = map[ch - 0x2d8]; + tmp[1] = ' '; + cp = tmp; + } + break; + case 0x2014: + cp = "\xd0"; + break; + case 0x2018: + cp = "\xa9"; + break; + case 0x2019: + cp = "\xb9"; + break; + case 0x201c: + cp = "\xaa"; + break; + case 0x201d: + cp = "\xba"; + break; + case 0x2122: + cp = "\xd4"; + break; + case 0x2126: + cp = "\xe0"; + break; + case 0x215b ... 0x215e: + tmp[0] = 0xdc + (ch - 0x215b); + tmp[1] = '\0'; + cp = tmp; + break; + case 0x2190 ... 0x2193: + tmp[0] = 0xac + (ch - 0x2190); + tmp[1] = '\0'; + cp = tmp; + break; + case 0x266a: + cp = "\xd5"; + break; + default: + cp = NULL; + fail = 1; + } + + if (fail) + /* Illegal characters. */ + break; + } + else if (ch < 0 || (from_ucs4[ch][0] == '\0' && ch != 0)) + break; + else + cp = from_ucs4[ch]; + + outbuf[outchars] = cp[0]; + /* Now test for a possible second byte and write this + if possible. */ + if (cp[1] != '\0') + { + if (outchars + 1 >= data->outbufsize) + { + /* The result does not fit into the buffer. */ + extra = 1; + break; + } + outbuf[++outchars] = cp[1]; + } + + ++do_write; + ++outchars; + cnt += sizeof (wchar_t); + } + *inbufsize -= cnt; + data->outbufavail = outchars; + + if (outchars + extra < data->outbufsize) + { + /* If there is still room in the output buffer something + is wrong with the input. */ + if (inwchars >= cnt + sizeof (wchar_t)) + { + /* An error occurred. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + if (inwchars != cnt) + { + /* There are some unprocessed bytes at the end of the + input buffer. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + } + } + + if (result != GCONV_OK) + break; + + if (data->is_last) + { + /* This is the last step. */ + result = (*inbufsize > (dir == from_iso6937 + ? 0 : sizeof (wchar_t) - 1) + ? GCONV_FULL_OUTPUT : GCONV_EMPTY_INPUT); + break; + } + + /* Status so far. */ + result = GCONV_EMPTY_INPUT; + + if (data->outbufavail > 0) + { + /* Call the functions below in the chain. */ + size_t newavail = data->outbufavail; + + result = (*fct) (next_step, next_data, data->outbuf, &newavail, + written, 0); + + /* Correct the output buffer. */ + if (newavail != data->outbufavail && newavail > 0) + { + memmove (data->outbuf, + &data->outbuf[data->outbufavail - newavail], + newavail); + data->outbufavail = newavail; + } + } + } + while (*inbufsize > 0 && result == GCONV_EMPTY_INPUT); + } + + if (written != NULL && data->is_last) + *written = do_write; + + return result; +} diff --git a/iconvdata/iso8859-1.c b/iconvdata/iso8859-1.c new file mode 100644 index 0000000000..94128fe72c --- /dev/null +++ b/iconvdata/iso8859-1.c @@ -0,0 +1,219 @@ +/* Conversion to and from ISO 8859-1. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <gconv.h> +#include <stdlib.h> +#include <string.h> + +/* Direction of the transformation. */ +enum direction +{ + illegal, + to_iso88591, + from_iso88591 +}; + +struct iso88591_data +{ + enum direction dir; +}; + + +int +gconv_init (struct gconv_step *step, struct gconv_step_data *data) +{ + /* Determine which direction. */ + struct iso88591_data *new_data; + enum direction dir; + int result; + + if (__strcasestr (step->from_name, "ISO-8859-1") != NULL) + dir = from_iso88591; + else if (__strcasestr (step->to_name, "ISO-8859-1") != NULL) + dir = to_iso88591; + else + dir = illegal; + + result = GCONV_NOCONV; + if (dir != illegal + && ((new_data + = (struct iso88591_data *) malloc (sizeof (struct iso88591_data))) + != NULL)) + { + new_data->dir = dir; + data->data = new_data; + result = GCONV_OK; + } + + return result; +} + + +void +gconv_end (struct gconv_step_data *data) +{ + free (data->data); +} + + +int +gconv (struct gconv_step *step, struct gconv_step_data *data, + const char *inbuf, size_t *inbufsize, size_t *written, int do_flush) +{ + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + gconv_fct fct = next_step->fct; + size_t do_write; + int result; + + /* If the function is called with no input this means we have to reset + to the initial state. The possibly partly converted input is + dropped. */ + if (do_flush) + { + do_write = 0; + + /* Call the steps down the chain if there are any. */ + if (data->is_last) + result = GCONV_OK; + else + { + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + + result = (*fct) (next_step, next_data, NULL, 0, written, 1); + + /* Clear output buffer. */ + data->outbufavail = 0; + } + } + else + { + enum direction dir = ((struct iso88591_data *) data->data)->dir; + + do_write = 0; + + do + { + result = GCONV_OK; + + if (dir == from_iso88591) + { + size_t inchars = *inbufsize; + size_t outwchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (cnt < inchars + && (outwchars + sizeof (wchar_t) <= data->outbufsize)) + { + *((wchar_t *) (outbuf + outwchars)) = inbuf[cnt]; + ++do_write; + outwchars += sizeof (wchar_t); + ++cnt; + } + *inbufsize -= cnt; + data->outbufavail = outwchars; + } + else + { + size_t inwchars = *inbufsize; + size_t outchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (inwchars >= cnt + sizeof (wchar_t) + && outchars < data->outbufsize) + { + if (*((wchar_t *) (inbuf + cnt)) <= L'\377') + outbuf[outchars] = *((wchar_t *) (inbuf + cnt)); + else + /* Here is where the transliteration would enter the + scene. */ + break; + + ++do_write; + ++outchars; + cnt += sizeof (wchar_t); + } + *inbufsize -= cnt; + data->outbufavail = outchars; + + if (outchars < data->outbufsize) + { + /* If there is still room in the output buffer something + is wrong with the input. */ + if (inwchars >= cnt + sizeof (wchar_t)) + { + /* An error occurred. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + if (inwchars != cnt) + { + /* There are some unprocessed bytes at the end of the + input buffer. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + } + } + + if (result != GCONV_OK) + break; + + if (data->is_last) + { + /* This is the last step. */ + result = (*inbufsize > (dir == from_iso88591 + ? 0 : sizeof (wchar_t) - 1) + ? GCONV_FULL_OUTPUT : GCONV_EMPTY_INPUT); + break; + } + + /* Status so far. */ + result = GCONV_EMPTY_INPUT; + + if (data->outbufavail > 0) + { + /* Call the functions below in the chain. */ + size_t newavail = data->outbufavail; + + result = (*fct) (next_step, next_data, data->outbuf, &newavail, + written, 0); + + /* Correct the output buffer. */ + if (newavail != data->outbufavail && newavail > 0) + { + memmove (data->outbuf, + &data->outbuf[data->outbufavail - newavail], + newavail); + data->outbufavail = newavail; + } + } + } + while (*inbufsize > 0 && result == GCONV_EMPTY_INPUT); + } + + if (written != NULL && data->is_last) + *written = do_write; + + return result; +} diff --git a/iconvdata/iso8859-10.c b/iconvdata/iso8859-10.c new file mode 100644 index 0000000000..5c81214597 --- /dev/null +++ b/iconvdata/iso8859-10.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-10. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-10.h> +#define NAME "ISO-8859-10" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-10.h b/iconvdata/iso8859-10.h new file mode 100644 index 0000000000..04711c3274 --- /dev/null +++ b/iconvdata/iso8859-10.h @@ -0,0 +1,516 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x0104, + [0xA2] = 0x0112, + [0xA3] = 0x0122, + [0xA4] = 0x012A, + [0xA5] = 0x0128, + [0xA6] = 0x0136, + [0xA7] = 0x00A7, + [0xA8] = 0x013B, + [0xA9] = 0x0110, + [0xAA] = 0x0160, + [0xAB] = 0x0166, + [0xAC] = 0x017D, + [0xAD] = 0x00AD, + [0xAE] = 0x016A, + [0xAF] = 0x014A, + [0xB0] = 0x00B0, + [0xB1] = 0x0105, + [0xB2] = 0x0113, + [0xB3] = 0x0123, + [0xB4] = 0x012B, + [0xB5] = 0x0129, + [0xB6] = 0x0137, + [0xB7] = 0x00B7, + [0xB8] = 0x013C, + [0xB9] = 0x0111, + [0xBA] = 0x0161, + [0xBB] = 0x0167, + [0xBC] = 0x017E, + [0xBD] = 0x2014, + [0xBE] = 0x016B, + [0xBF] = 0x014B, + [0xC0] = 0x0100, + [0xC1] = 0x00C1, + [0xC2] = 0x00C2, + [0xC3] = 0x00C3, + [0xC4] = 0x00C4, + [0xC5] = 0x00C5, + [0xC6] = 0x00C6, + [0xC7] = 0x012E, + [0xC8] = 0x010C, + [0xC9] = 0x00C9, + [0xCA] = 0x0118, + [0xCB] = 0x00CB, + [0xCC] = 0x0116, + [0xCD] = 0x00CD, + [0xCE] = 0x00CE, + [0xCF] = 0x00CF, + [0xD0] = 0x00D0, + [0xD1] = 0x0145, + [0xD2] = 0x014C, + [0xD3] = 0x00D3, + [0xD4] = 0x00D4, + [0xD5] = 0x00D5, + [0xD6] = 0x00D6, + [0xD7] = 0x0168, + [0xD8] = 0x00D8, + [0xD9] = 0x0172, + [0xDA] = 0x00DA, + [0xDB] = 0x00DB, + [0xDC] = 0x00DC, + [0xDD] = 0x00DD, + [0xDE] = 0x00DE, + [0xDF] = 0x00DF, + [0xE0] = 0x0101, + [0xE1] = 0x00E1, + [0xE2] = 0x00E2, + [0xE3] = 0x00E3, + [0xE4] = 0x00E4, + [0xE5] = 0x00E5, + [0xE6] = 0x00E6, + [0xE7] = 0x012F, + [0xE8] = 0x010D, + [0xE9] = 0x00E9, + [0xEA] = 0x0119, + [0xEB] = 0x00EB, + [0xEC] = 0x0117, + [0xED] = 0x00ED, + [0xEE] = 0x00EE, + [0xEF] = 0x00EF, + [0xF0] = 0x00F0, + [0xF1] = 0x0146, + [0xF2] = 0x014D, + [0xF3] = 0x00F3, + [0xF4] = 0x00F4, + [0xF5] = 0x00F5, + [0xF6] = 0x00F6, + [0xF7] = 0x0169, + [0xF8] = 0x00F8, + [0xF9] = 0x0173, + [0xFA] = 0x00FA, + [0xFB] = 0x00FB, + [0xFC] = 0x00FC, + [0xFD] = 0x00FD, + [0xFE] = 0x00FE, + [0xFF] = 0x0138, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A7] = 0xA7, + [0x00AD] = 0xAD, + [0x00B0] = 0xB0, + [0x00B7] = 0xB7, + [0x00C1] = 0xC1, + [0x00C2] = 0xC2, + [0x00C3] = 0xC3, + [0x00C4] = 0xC4, + [0x00C5] = 0xC5, + [0x00C6] = 0xC6, + [0x00C9] = 0xC9, + [0x00CB] = 0xCB, + [0x00CD] = 0xCD, + [0x00CE] = 0xCE, + [0x00CF] = 0xCF, + [0x00D0] = 0xD0, + [0x00D3] = 0xD3, + [0x00D4] = 0xD4, + [0x00D5] = 0xD5, + [0x00D6] = 0xD6, + [0x00D8] = 0xD8, + [0x00DA] = 0xDA, + [0x00DB] = 0xDB, + [0x00DC] = 0xDC, + [0x00DD] = 0xDD, + [0x00DE] = 0xDE, + [0x00DF] = 0xDF, + [0x00E1] = 0xE1, + [0x00E2] = 0xE2, + [0x00E3] = 0xE3, + [0x00E4] = 0xE4, + [0x00E5] = 0xE5, + [0x00E6] = 0xE6, + [0x00E9] = 0xE9, + [0x00EB] = 0xEB, + [0x00ED] = 0xED, + [0x00EE] = 0xEE, + [0x00EF] = 0xEF, + [0x00F0] = 0xF0, + [0x00F3] = 0xF3, + [0x00F4] = 0xF4, + [0x00F5] = 0xF5, + [0x00F6] = 0xF6, + [0x00F8] = 0xF8, + [0x00FA] = 0xFA, + [0x00FB] = 0xFB, + [0x00FC] = 0xFC, + [0x00FD] = 0xFD, + [0x00FE] = 0xFE, + [0x0100] = 0xC0, + [0x0101] = 0xE0, + [0x0104] = 0xA1, + [0x0105] = 0xB1, + [0x010C] = 0xC8, + [0x010D] = 0xE8, + [0x0110] = 0xA9, + [0x0111] = 0xB9, + [0x0112] = 0xA2, + [0x0113] = 0xB2, + [0x0116] = 0xCC, + [0x0117] = 0xEC, + [0x0118] = 0xCA, + [0x0119] = 0xEA, + [0x0122] = 0xA3, + [0x0123] = 0xB3, + [0x0128] = 0xA5, + [0x0129] = 0xB5, + [0x012A] = 0xA4, + [0x012B] = 0xB4, + [0x012E] = 0xC7, + [0x012F] = 0xE7, + [0x0136] = 0xA6, + [0x0137] = 0xB6, + [0x0138] = 0xFF, + [0x013B] = 0xA8, + [0x013C] = 0xB8, + [0x0145] = 0xD1, + [0x0146] = 0xF1, + [0x014A] = 0xAF, + [0x014B] = 0xBF, + [0x014C] = 0xD2, + [0x014D] = 0xF2, + [0x0160] = 0xAA, + [0x0161] = 0xBA, + [0x0166] = 0xAB, + [0x0167] = 0xBB, + [0x0168] = 0xD7, + [0x0169] = 0xF7, + [0x016A] = 0xAE, + [0x016B] = 0xBE, + [0x0172] = 0xD9, + [0x0173] = 0xF9, + [0x017D] = 0xAC, + [0x017E] = 0xBC, + [0x2014] = 0xBD, +}; diff --git a/iconvdata/iso8859-2.c b/iconvdata/iso8859-2.c new file mode 100644 index 0000000000..3bfc77b894 --- /dev/null +++ b/iconvdata/iso8859-2.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-2. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-2.h> +#define NAME "ISO-8859-2" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-2.h b/iconvdata/iso8859-2.h new file mode 100644 index 0000000000..515d8490d6 --- /dev/null +++ b/iconvdata/iso8859-2.h @@ -0,0 +1,516 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x0104, + [0xA2] = 0x02D8, + [0xA3] = 0x0141, + [0xA4] = 0x00A4, + [0xA5] = 0x013D, + [0xA6] = 0x015A, + [0xA7] = 0x00A7, + [0xA8] = 0x00A8, + [0xA9] = 0x0160, + [0xAA] = 0x015E, + [0xAB] = 0x0164, + [0xAC] = 0x0179, + [0xAD] = 0x00AD, + [0xAE] = 0x017D, + [0xAF] = 0x017B, + [0xB0] = 0x00B0, + [0xB1] = 0x0105, + [0xB2] = 0x02DB, + [0xB3] = 0x0142, + [0xB4] = 0x00B4, + [0xB5] = 0x013E, + [0xB6] = 0x015B, + [0xB7] = 0x02C7, + [0xB8] = 0x00B8, + [0xB9] = 0x0161, + [0xBA] = 0x015F, + [0xBB] = 0x0165, + [0xBC] = 0x017A, + [0xBD] = 0x02DD, + [0xBE] = 0x017E, + [0xBF] = 0x017C, + [0xC0] = 0x0154, + [0xC1] = 0x00C1, + [0xC2] = 0x00C2, + [0xC3] = 0x0102, + [0xC4] = 0x00C4, + [0xC5] = 0x0139, + [0xC6] = 0x0106, + [0xC7] = 0x00C7, + [0xC8] = 0x010C, + [0xC9] = 0x00C9, + [0xCA] = 0x0118, + [0xCB] = 0x00CB, + [0xCC] = 0x011A, + [0xCD] = 0x00CD, + [0xCE] = 0x00CE, + [0xCF] = 0x010E, + [0xD0] = 0x0110, + [0xD1] = 0x0143, + [0xD2] = 0x0147, + [0xD3] = 0x00D3, + [0xD4] = 0x00D4, + [0xD5] = 0x0150, + [0xD6] = 0x00D6, + [0xD7] = 0x00D7, + [0xD8] = 0x0158, + [0xD9] = 0x016E, + [0xDA] = 0x00DA, + [0xDB] = 0x0170, + [0xDC] = 0x00DC, + [0xDD] = 0x00DD, + [0xDE] = 0x0162, + [0xDF] = 0x00DF, + [0xE0] = 0x0155, + [0xE1] = 0x00E1, + [0xE2] = 0x00E2, + [0xE3] = 0x0103, + [0xE4] = 0x00E4, + [0xE5] = 0x013A, + [0xE6] = 0x0107, + [0xE7] = 0x00E7, + [0xE8] = 0x010D, + [0xE9] = 0x00E9, + [0xEA] = 0x0119, + [0xEB] = 0x00EB, + [0xEC] = 0x011B, + [0xED] = 0x00ED, + [0xEE] = 0x00EE, + [0xEF] = 0x010F, + [0xF0] = 0x0111, + [0xF1] = 0x0144, + [0xF2] = 0x0148, + [0xF3] = 0x00F3, + [0xF4] = 0x00F4, + [0xF5] = 0x0151, + [0xF6] = 0x00F6, + [0xF7] = 0x00F7, + [0xF8] = 0x0159, + [0xF9] = 0x016F, + [0xFA] = 0x00FA, + [0xFB] = 0x0171, + [0xFC] = 0x00FC, + [0xFD] = 0x00FD, + [0xFE] = 0x0163, + [0xFF] = 0x02D9, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A4] = 0xA4, + [0x00A7] = 0xA7, + [0x00A8] = 0xA8, + [0x00AD] = 0xAD, + [0x00B0] = 0xB0, + [0x00B4] = 0xB4, + [0x00B8] = 0xB8, + [0x00C1] = 0xC1, + [0x00C2] = 0xC2, + [0x00C4] = 0xC4, + [0x00C7] = 0xC7, + [0x00C9] = 0xC9, + [0x00CB] = 0xCB, + [0x00CD] = 0xCD, + [0x00CE] = 0xCE, + [0x00D3] = 0xD3, + [0x00D4] = 0xD4, + [0x00D6] = 0xD6, + [0x00D7] = 0xD7, + [0x00DA] = 0xDA, + [0x00DC] = 0xDC, + [0x00DD] = 0xDD, + [0x00DF] = 0xDF, + [0x00E1] = 0xE1, + [0x00E2] = 0xE2, + [0x00E4] = 0xE4, + [0x00E7] = 0xE7, + [0x00E9] = 0xE9, + [0x00EB] = 0xEB, + [0x00ED] = 0xED, + [0x00EE] = 0xEE, + [0x00F3] = 0xF3, + [0x00F4] = 0xF4, + [0x00F6] = 0xF6, + [0x00F7] = 0xF7, + [0x00FA] = 0xFA, + [0x00FC] = 0xFC, + [0x00FD] = 0xFD, + [0x0102] = 0xC3, + [0x0103] = 0xE3, + [0x0104] = 0xA1, + [0x0105] = 0xB1, + [0x0106] = 0xC6, + [0x0107] = 0xE6, + [0x010C] = 0xC8, + [0x010D] = 0xE8, + [0x010E] = 0xCF, + [0x010F] = 0xEF, + [0x0110] = 0xD0, + [0x0111] = 0xF0, + [0x0118] = 0xCA, + [0x0119] = 0xEA, + [0x011A] = 0xCC, + [0x011B] = 0xEC, + [0x0139] = 0xC5, + [0x013A] = 0xE5, + [0x013D] = 0xA5, + [0x013E] = 0xB5, + [0x0141] = 0xA3, + [0x0142] = 0xB3, + [0x0143] = 0xD1, + [0x0144] = 0xF1, + [0x0147] = 0xD2, + [0x0148] = 0xF2, + [0x0150] = 0xD5, + [0x0151] = 0xF5, + [0x0154] = 0xC0, + [0x0155] = 0xE0, + [0x0158] = 0xD8, + [0x0159] = 0xF8, + [0x015A] = 0xA6, + [0x015B] = 0xB6, + [0x015E] = 0xAA, + [0x015F] = 0xBA, + [0x0160] = 0xA9, + [0x0161] = 0xB9, + [0x0162] = 0xDE, + [0x0163] = 0xFE, + [0x0164] = 0xAB, + [0x0165] = 0xBB, + [0x016E] = 0xD9, + [0x016F] = 0xF9, + [0x0170] = 0xDB, + [0x0171] = 0xFB, + [0x0179] = 0xAC, + [0x017A] = 0xBC, + [0x017B] = 0xAF, + [0x017C] = 0xBF, + [0x017D] = 0xAE, + [0x017E] = 0xBE, + [0x02C7] = 0xB7, + [0x02D8] = 0xA2, + [0x02D9] = 0xFF, + [0x02DB] = 0xB2, + [0x02DD] = 0xBD, +}; diff --git a/iconvdata/iso8859-3.c b/iconvdata/iso8859-3.c new file mode 100644 index 0000000000..a6b208dc81 --- /dev/null +++ b/iconvdata/iso8859-3.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-3. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-3.h> +#define NAME "ISO-8859-3" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-3.h b/iconvdata/iso8859-3.h new file mode 100644 index 0000000000..f9e632504b --- /dev/null +++ b/iconvdata/iso8859-3.h @@ -0,0 +1,502 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x0126, + [0xA2] = 0x02D8, + [0xA3] = 0x00A3, + [0xA4] = 0x00A4, + [0xA6] = 0x0124, + [0xA7] = 0x00A7, + [0xA8] = 0x00A8, + [0xA9] = 0x0130, + [0xAA] = 0x015E, + [0xAB] = 0x011E, + [0xAC] = 0x0134, + [0xAD] = 0x00AD, + [0xAF] = 0x017B, + [0xB0] = 0x00B0, + [0xB1] = 0x0127, + [0xB2] = 0x00B2, + [0xB3] = 0x00B3, + [0xB4] = 0x00B4, + [0xB5] = 0x00B5, + [0xB6] = 0x0125, + [0xB7] = 0x00B7, + [0xB8] = 0x00B8, + [0xB9] = 0x0131, + [0xBA] = 0x015F, + [0xBB] = 0x011F, + [0xBC] = 0x0135, + [0xBD] = 0x00BD, + [0xBF] = 0x017C, + [0xC0] = 0x00C0, + [0xC1] = 0x00C1, + [0xC2] = 0x00C2, + [0xC4] = 0x00C4, + [0xC5] = 0x010A, + [0xC6] = 0x0108, + [0xC7] = 0x00C7, + [0xC8] = 0x00C8, + [0xC9] = 0x00C9, + [0xCA] = 0x00CA, + [0xCB] = 0x00CB, + [0xCC] = 0x00CC, + [0xCD] = 0x00CD, + [0xCE] = 0x00CE, + [0xCF] = 0x00CF, + [0xD1] = 0x00D1, + [0xD2] = 0x00D2, + [0xD3] = 0x00D3, + [0xD4] = 0x00D4, + [0xD5] = 0x0120, + [0xD6] = 0x00D6, + [0xD7] = 0x00D7, + [0xD8] = 0x011C, + [0xD9] = 0x00D9, + [0xDA] = 0x00DA, + [0xDB] = 0x00DB, + [0xDC] = 0x00DC, + [0xDD] = 0x016C, + [0xDE] = 0x015C, + [0xDF] = 0x00DF, + [0xE0] = 0x00E0, + [0xE1] = 0x00E1, + [0xE2] = 0x00E2, + [0xE4] = 0x00E4, + [0xE5] = 0x010B, + [0xE6] = 0x0109, + [0xE7] = 0x00E7, + [0xE8] = 0x00E8, + [0xE9] = 0x00E9, + [0xEA] = 0x00EA, + [0xEB] = 0x00EB, + [0xEC] = 0x00EC, + [0xED] = 0x00ED, + [0xEE] = 0x00EE, + [0xEF] = 0x00EF, + [0xF1] = 0x00F1, + [0xF2] = 0x00F2, + [0xF3] = 0x00F3, + [0xF4] = 0x00F4, + [0xF5] = 0x0121, + [0xF6] = 0x00F6, + [0xF7] = 0x00F7, + [0xF8] = 0x011D, + [0xF9] = 0x00F9, + [0xFA] = 0x00FA, + [0xFB] = 0x00FB, + [0xFC] = 0x00FC, + [0xFD] = 0x016D, + [0xFE] = 0x015D, + [0xFF] = 0x02D9, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A3] = 0xA3, + [0x00A4] = 0xA4, + [0x00A7] = 0xA7, + [0x00A8] = 0xA8, + [0x00AD] = 0xAD, + [0x00B0] = 0xB0, + [0x00B2] = 0xB2, + [0x00B3] = 0xB3, + [0x00B4] = 0xB4, + [0x00B5] = 0xB5, + [0x00B7] = 0xB7, + [0x00B8] = 0xB8, + [0x00BD] = 0xBD, + [0x00C0] = 0xC0, + [0x00C1] = 0xC1, + [0x00C2] = 0xC2, + [0x00C4] = 0xC4, + [0x00C7] = 0xC7, + [0x00C8] = 0xC8, + [0x00C9] = 0xC9, + [0x00CA] = 0xCA, + [0x00CB] = 0xCB, + [0x00CC] = 0xCC, + [0x00CD] = 0xCD, + [0x00CE] = 0xCE, + [0x00CF] = 0xCF, + [0x00D1] = 0xD1, + [0x00D2] = 0xD2, + [0x00D3] = 0xD3, + [0x00D4] = 0xD4, + [0x00D6] = 0xD6, + [0x00D7] = 0xD7, + [0x00D9] = 0xD9, + [0x00DA] = 0xDA, + [0x00DB] = 0xDB, + [0x00DC] = 0xDC, + [0x00DF] = 0xDF, + [0x00E0] = 0xE0, + [0x00E1] = 0xE1, + [0x00E2] = 0xE2, + [0x00E4] = 0xE4, + [0x00E7] = 0xE7, + [0x00E8] = 0xE8, + [0x00E9] = 0xE9, + [0x00EA] = 0xEA, + [0x00EB] = 0xEB, + [0x00EC] = 0xEC, + [0x00ED] = 0xED, + [0x00EE] = 0xEE, + [0x00EF] = 0xEF, + [0x00F1] = 0xF1, + [0x00F2] = 0xF2, + [0x00F3] = 0xF3, + [0x00F4] = 0xF4, + [0x00F6] = 0xF6, + [0x00F7] = 0xF7, + [0x00F9] = 0xF9, + [0x00FA] = 0xFA, + [0x00FB] = 0xFB, + [0x00FC] = 0xFC, + [0x0108] = 0xC6, + [0x0109] = 0xE6, + [0x010A] = 0xC5, + [0x010B] = 0xE5, + [0x011C] = 0xD8, + [0x011D] = 0xF8, + [0x011E] = 0xAB, + [0x011F] = 0xBB, + [0x0120] = 0xD5, + [0x0121] = 0xF5, + [0x0124] = 0xA6, + [0x0125] = 0xB6, + [0x0126] = 0xA1, + [0x0127] = 0xB1, + [0x0130] = 0xA9, + [0x0131] = 0xB9, + [0x0134] = 0xAC, + [0x0135] = 0xBC, + [0x015C] = 0xDE, + [0x015D] = 0xFE, + [0x015E] = 0xAA, + [0x015F] = 0xBA, + [0x016C] = 0xDD, + [0x016D] = 0xFD, + [0x017B] = 0xAF, + [0x017C] = 0xBF, + [0x02D8] = 0xA2, + [0x02D9] = 0xFF, +}; diff --git a/iconvdata/iso8859-4.c b/iconvdata/iso8859-4.c new file mode 100644 index 0000000000..b2b6ef0246 --- /dev/null +++ b/iconvdata/iso8859-4.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-4. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-4.h> +#define NAME "ISO-8859-4" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-4.h b/iconvdata/iso8859-4.h new file mode 100644 index 0000000000..acf4aaad40 --- /dev/null +++ b/iconvdata/iso8859-4.h @@ -0,0 +1,516 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x0104, + [0xA2] = 0x0138, + [0xA3] = 0x0156, + [0xA4] = 0x00A4, + [0xA5] = 0x0128, + [0xA6] = 0x013B, + [0xA7] = 0x00A7, + [0xA8] = 0x00A8, + [0xA9] = 0x0160, + [0xAA] = 0x0112, + [0xAB] = 0x0122, + [0xAC] = 0x0166, + [0xAD] = 0x00AD, + [0xAE] = 0x017D, + [0xAF] = 0x00AF, + [0xB0] = 0x00B0, + [0xB1] = 0x0105, + [0xB2] = 0x02DB, + [0xB3] = 0x0157, + [0xB4] = 0x00B4, + [0xB5] = 0x0129, + [0xB6] = 0x013C, + [0xB7] = 0x02C7, + [0xB8] = 0x00B8, + [0xB9] = 0x0161, + [0xBA] = 0x0113, + [0xBB] = 0x0123, + [0xBC] = 0x0167, + [0xBD] = 0x014A, + [0xBE] = 0x017E, + [0xBF] = 0x014B, + [0xC0] = 0x0100, + [0xC1] = 0x00C1, + [0xC2] = 0x00C2, + [0xC3] = 0x00C3, + [0xC4] = 0x00C4, + [0xC5] = 0x00C5, + [0xC6] = 0x00C6, + [0xC7] = 0x012E, + [0xC8] = 0x010C, + [0xC9] = 0x00C9, + [0xCA] = 0x0118, + [0xCB] = 0x00CB, + [0xCC] = 0x0116, + [0xCD] = 0x00CD, + [0xCE] = 0x00CE, + [0xCF] = 0x012A, + [0xD0] = 0x0110, + [0xD1] = 0x0145, + [0xD2] = 0x014C, + [0xD3] = 0x0136, + [0xD4] = 0x00D4, + [0xD5] = 0x00D5, + [0xD6] = 0x00D6, + [0xD7] = 0x00D7, + [0xD8] = 0x00D8, + [0xD9] = 0x0172, + [0xDA] = 0x00DA, + [0xDB] = 0x00DB, + [0xDC] = 0x00DC, + [0xDD] = 0x0168, + [0xDE] = 0x016A, + [0xDF] = 0x00DF, + [0xE0] = 0x0101, + [0xE1] = 0x00E1, + [0xE2] = 0x00E2, + [0xE3] = 0x00E3, + [0xE4] = 0x00E4, + [0xE5] = 0x00E5, + [0xE6] = 0x00E6, + [0xE7] = 0x012F, + [0xE8] = 0x010D, + [0xE9] = 0x00E9, + [0xEA] = 0x0119, + [0xEB] = 0x00EB, + [0xEC] = 0x0117, + [0xED] = 0x00ED, + [0xEE] = 0x00EE, + [0xEF] = 0x012B, + [0xF0] = 0x0111, + [0xF1] = 0x0146, + [0xF2] = 0x014D, + [0xF3] = 0x0137, + [0xF4] = 0x00F4, + [0xF5] = 0x00F5, + [0xF6] = 0x00F6, + [0xF7] = 0x00F7, + [0xF8] = 0x00F8, + [0xF9] = 0x0173, + [0xFA] = 0x00FA, + [0xFB] = 0x00FB, + [0xFC] = 0x00FC, + [0xFD] = 0x0169, + [0xFE] = 0x016B, + [0xFF] = 0x02D9, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A4] = 0xA4, + [0x00A7] = 0xA7, + [0x00A8] = 0xA8, + [0x00AD] = 0xAD, + [0x00AF] = 0xAF, + [0x00B0] = 0xB0, + [0x00B4] = 0xB4, + [0x00B8] = 0xB8, + [0x00C1] = 0xC1, + [0x00C2] = 0xC2, + [0x00C3] = 0xC3, + [0x00C4] = 0xC4, + [0x00C5] = 0xC5, + [0x00C6] = 0xC6, + [0x00C9] = 0xC9, + [0x00CB] = 0xCB, + [0x00CD] = 0xCD, + [0x00CE] = 0xCE, + [0x00D4] = 0xD4, + [0x00D5] = 0xD5, + [0x00D6] = 0xD6, + [0x00D7] = 0xD7, + [0x00D8] = 0xD8, + [0x00DA] = 0xDA, + [0x00DB] = 0xDB, + [0x00DC] = 0xDC, + [0x00DF] = 0xDF, + [0x00E1] = 0xE1, + [0x00E2] = 0xE2, + [0x00E3] = 0xE3, + [0x00E4] = 0xE4, + [0x00E5] = 0xE5, + [0x00E6] = 0xE6, + [0x00E9] = 0xE9, + [0x00EB] = 0xEB, + [0x00ED] = 0xED, + [0x00EE] = 0xEE, + [0x00F4] = 0xF4, + [0x00F5] = 0xF5, + [0x00F6] = 0xF6, + [0x00F7] = 0xF7, + [0x00F8] = 0xF8, + [0x00FA] = 0xFA, + [0x00FB] = 0xFB, + [0x00FC] = 0xFC, + [0x0100] = 0xC0, + [0x0101] = 0xE0, + [0x0104] = 0xA1, + [0x0105] = 0xB1, + [0x010C] = 0xC8, + [0x010D] = 0xE8, + [0x0110] = 0xD0, + [0x0111] = 0xF0, + [0x0112] = 0xAA, + [0x0113] = 0xBA, + [0x0116] = 0xCC, + [0x0117] = 0xEC, + [0x0118] = 0xCA, + [0x0119] = 0xEA, + [0x0122] = 0xAB, + [0x0123] = 0xBB, + [0x0128] = 0xA5, + [0x0129] = 0xB5, + [0x012A] = 0xCF, + [0x012B] = 0xEF, + [0x012E] = 0xC7, + [0x012F] = 0xE7, + [0x0136] = 0xD3, + [0x0137] = 0xF3, + [0x0138] = 0xA2, + [0x013B] = 0xA6, + [0x013C] = 0xB6, + [0x0145] = 0xD1, + [0x0146] = 0xF1, + [0x014A] = 0xBD, + [0x014B] = 0xBF, + [0x014C] = 0xD2, + [0x014D] = 0xF2, + [0x0156] = 0xA3, + [0x0157] = 0xB3, + [0x0160] = 0xA9, + [0x0161] = 0xB9, + [0x0166] = 0xAC, + [0x0167] = 0xBC, + [0x0168] = 0xDD, + [0x0169] = 0xFD, + [0x016A] = 0xDE, + [0x016B] = 0xFE, + [0x0172] = 0xD9, + [0x0173] = 0xF9, + [0x017D] = 0xAE, + [0x017E] = 0xBE, + [0x02C7] = 0xB7, + [0x02D9] = 0xFF, + [0x02DB] = 0xB2, +}; diff --git a/iconvdata/iso8859-5.c b/iconvdata/iso8859-5.c new file mode 100644 index 0000000000..b0ebd6f93b --- /dev/null +++ b/iconvdata/iso8859-5.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-5. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-5.h> +#define NAME "ISO-8859-5" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-5.h b/iconvdata/iso8859-5.h new file mode 100644 index 0000000000..f20ce11fe0 --- /dev/null +++ b/iconvdata/iso8859-5.h @@ -0,0 +1,516 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x0401, + [0xA2] = 0x0402, + [0xA3] = 0x0403, + [0xA4] = 0x0404, + [0xA5] = 0x0405, + [0xA6] = 0x0406, + [0xA7] = 0x0407, + [0xA8] = 0x0408, + [0xA9] = 0x0409, + [0xAA] = 0x040A, + [0xAB] = 0x040B, + [0xAC] = 0x040C, + [0xAD] = 0x00AD, + [0xAE] = 0x040E, + [0xAF] = 0x040F, + [0xB0] = 0x0410, + [0xB1] = 0x0411, + [0xB2] = 0x0412, + [0xB3] = 0x0413, + [0xB4] = 0x0414, + [0xB5] = 0x0415, + [0xB6] = 0x0416, + [0xB7] = 0x0417, + [0xB8] = 0x0418, + [0xB9] = 0x0419, + [0xBA] = 0x041A, + [0xBB] = 0x041B, + [0xBC] = 0x041C, + [0xBD] = 0x041D, + [0xBE] = 0x041E, + [0xBF] = 0x041F, + [0xC0] = 0x0420, + [0xC1] = 0x0421, + [0xC2] = 0x0422, + [0xC3] = 0x0423, + [0xC4] = 0x0424, + [0xC5] = 0x0425, + [0xC6] = 0x0426, + [0xC7] = 0x0427, + [0xC8] = 0x0428, + [0xC9] = 0x0429, + [0xCA] = 0x042A, + [0xCB] = 0x042B, + [0xCC] = 0x042C, + [0xCD] = 0x042D, + [0xCE] = 0x042E, + [0xCF] = 0x042F, + [0xD0] = 0x0430, + [0xD1] = 0x0431, + [0xD2] = 0x0432, + [0xD3] = 0x0433, + [0xD4] = 0x0434, + [0xD5] = 0x0435, + [0xD6] = 0x0436, + [0xD7] = 0x0437, + [0xD8] = 0x0438, + [0xD9] = 0x0439, + [0xDA] = 0x043A, + [0xDB] = 0x043B, + [0xDC] = 0x043C, + [0xDD] = 0x043D, + [0xDE] = 0x043E, + [0xDF] = 0x043F, + [0xE0] = 0x0440, + [0xE1] = 0x0441, + [0xE2] = 0x0442, + [0xE3] = 0x0443, + [0xE4] = 0x0444, + [0xE5] = 0x0445, + [0xE6] = 0x0446, + [0xE7] = 0x0447, + [0xE8] = 0x0448, + [0xE9] = 0x0449, + [0xEA] = 0x044A, + [0xEB] = 0x044B, + [0xEC] = 0x044C, + [0xED] = 0x044D, + [0xEE] = 0x044E, + [0xEF] = 0x044F, + [0xF0] = 0x2116, + [0xF1] = 0x0451, + [0xF2] = 0x0452, + [0xF3] = 0x0453, + [0xF4] = 0x0454, + [0xF5] = 0x0455, + [0xF6] = 0x0456, + [0xF7] = 0x0457, + [0xF8] = 0x0458, + [0xF9] = 0x0459, + [0xFA] = 0x045A, + [0xFB] = 0x045B, + [0xFC] = 0x045C, + [0xFD] = 0x00A7, + [0xFE] = 0x045E, + [0xFF] = 0x045F, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A7] = 0xFD, + [0x00AD] = 0xAD, + [0x0401] = 0xA1, + [0x0402] = 0xA2, + [0x0403] = 0xA3, + [0x0404] = 0xA4, + [0x0405] = 0xA5, + [0x0406] = 0xA6, + [0x0407] = 0xA7, + [0x0408] = 0xA8, + [0x0409] = 0xA9, + [0x040A] = 0xAA, + [0x040B] = 0xAB, + [0x040C] = 0xAC, + [0x040E] = 0xAE, + [0x040F] = 0xAF, + [0x0410] = 0xB0, + [0x0411] = 0xB1, + [0x0412] = 0xB2, + [0x0413] = 0xB3, + [0x0414] = 0xB4, + [0x0415] = 0xB5, + [0x0416] = 0xB6, + [0x0417] = 0xB7, + [0x0418] = 0xB8, + [0x0419] = 0xB9, + [0x041A] = 0xBA, + [0x041B] = 0xBB, + [0x041C] = 0xBC, + [0x041D] = 0xBD, + [0x041E] = 0xBE, + [0x041F] = 0xBF, + [0x0420] = 0xC0, + [0x0421] = 0xC1, + [0x0422] = 0xC2, + [0x0423] = 0xC3, + [0x0424] = 0xC4, + [0x0425] = 0xC5, + [0x0426] = 0xC6, + [0x0427] = 0xC7, + [0x0428] = 0xC8, + [0x0429] = 0xC9, + [0x042A] = 0xCA, + [0x042B] = 0xCB, + [0x042C] = 0xCC, + [0x042D] = 0xCD, + [0x042E] = 0xCE, + [0x042F] = 0xCF, + [0x0430] = 0xD0, + [0x0431] = 0xD1, + [0x0432] = 0xD2, + [0x0433] = 0xD3, + [0x0434] = 0xD4, + [0x0435] = 0xD5, + [0x0436] = 0xD6, + [0x0437] = 0xD7, + [0x0438] = 0xD8, + [0x0439] = 0xD9, + [0x043A] = 0xDA, + [0x043B] = 0xDB, + [0x043C] = 0xDC, + [0x043D] = 0xDD, + [0x043E] = 0xDE, + [0x043F] = 0xDF, + [0x0440] = 0xE0, + [0x0441] = 0xE1, + [0x0442] = 0xE2, + [0x0443] = 0xE3, + [0x0444] = 0xE4, + [0x0445] = 0xE5, + [0x0446] = 0xE6, + [0x0447] = 0xE7, + [0x0448] = 0xE8, + [0x0449] = 0xE9, + [0x044A] = 0xEA, + [0x044B] = 0xEB, + [0x044C] = 0xEC, + [0x044D] = 0xED, + [0x044E] = 0xEE, + [0x044F] = 0xEF, + [0x0451] = 0xF1, + [0x0452] = 0xF2, + [0x0453] = 0xF3, + [0x0454] = 0xF4, + [0x0455] = 0xF5, + [0x0456] = 0xF6, + [0x0457] = 0xF7, + [0x0458] = 0xF8, + [0x0459] = 0xF9, + [0x045A] = 0xFA, + [0x045B] = 0xFB, + [0x045C] = 0xFC, + [0x045E] = 0xFE, + [0x045F] = 0xFF, + [0x2116] = 0xF0, +}; diff --git a/iconvdata/iso8859-6.c b/iconvdata/iso8859-6.c new file mode 100644 index 0000000000..f0f0a91004 --- /dev/null +++ b/iconvdata/iso8859-6.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-6. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-6.h> +#define NAME "ISO-8859-6" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-6.h b/iconvdata/iso8859-6.h new file mode 100644 index 0000000000..f3b3480ff1 --- /dev/null +++ b/iconvdata/iso8859-6.h @@ -0,0 +1,426 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA4] = 0x00A4, + [0xAC] = 0x060C, + [0xAD] = 0x00AD, + [0xBB] = 0x061B, + [0xBF] = 0x061F, + [0xC1] = 0x0621, + [0xC2] = 0x0622, + [0xC3] = 0x0623, + [0xC4] = 0x0624, + [0xC5] = 0x0625, + [0xC6] = 0x0626, + [0xC7] = 0x0627, + [0xC8] = 0x0628, + [0xC9] = 0x0629, + [0xCA] = 0x062A, + [0xCB] = 0x062B, + [0xCC] = 0x062C, + [0xCD] = 0x062D, + [0xCE] = 0x062E, + [0xCF] = 0x062F, + [0xD0] = 0x0630, + [0xD1] = 0x0631, + [0xD2] = 0x0632, + [0xD3] = 0x0633, + [0xD4] = 0x0634, + [0xD5] = 0x0635, + [0xD6] = 0x0636, + [0xD7] = 0x0637, + [0xD8] = 0x0638, + [0xD9] = 0x0639, + [0xDA] = 0x063A, + [0xE0] = 0x0640, + [0xE1] = 0x0641, + [0xE2] = 0x0642, + [0xE3] = 0x0643, + [0xE4] = 0x0644, + [0xE5] = 0x0645, + [0xE6] = 0x0646, + [0xE7] = 0x0647, + [0xE8] = 0x0648, + [0xE9] = 0x0649, + [0xEA] = 0x064A, + [0xEB] = 0x064B, + [0xEC] = 0x064C, + [0xED] = 0x064D, + [0xEE] = 0x064E, + [0xEF] = 0x064F, + [0xF0] = 0x0650, + [0xF1] = 0x0651, + [0xF2] = 0x0652, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A4] = 0xA4, + [0x00AD] = 0xAD, + [0x060C] = 0xAC, + [0x061B] = 0xBB, + [0x061F] = 0xBF, + [0x0621] = 0xC1, + [0x0622] = 0xC2, + [0x0623] = 0xC3, + [0x0624] = 0xC4, + [0x0625] = 0xC5, + [0x0626] = 0xC6, + [0x0627] = 0xC7, + [0x0628] = 0xC8, + [0x0629] = 0xC9, + [0x062A] = 0xCA, + [0x062B] = 0xCB, + [0x062C] = 0xCC, + [0x062D] = 0xCD, + [0x062E] = 0xCE, + [0x062F] = 0xCF, + [0x0630] = 0xD0, + [0x0631] = 0xD1, + [0x0632] = 0xD2, + [0x0633] = 0xD3, + [0x0634] = 0xD4, + [0x0635] = 0xD5, + [0x0636] = 0xD6, + [0x0637] = 0xD7, + [0x0638] = 0xD8, + [0x0639] = 0xD9, + [0x063A] = 0xDA, + [0x0640] = 0xE0, + [0x0641] = 0xE1, + [0x0642] = 0xE2, + [0x0643] = 0xE3, + [0x0644] = 0xE4, + [0x0645] = 0xE5, + [0x0646] = 0xE6, + [0x0647] = 0xE7, + [0x0648] = 0xE8, + [0x0649] = 0xE9, + [0x064A] = 0xEA, + [0x064B] = 0xEB, + [0x064C] = 0xEC, + [0x064D] = 0xED, + [0x064E] = 0xEE, + [0x064F] = 0xEF, + [0x0650] = 0xF0, + [0x0651] = 0xF1, + [0x0652] = 0xF2, +}; diff --git a/iconvdata/iso8859-7.c b/iconvdata/iso8859-7.c new file mode 100644 index 0000000000..87c2a2c06c --- /dev/null +++ b/iconvdata/iso8859-7.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-7. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-7.h> +#define NAME "ISO-8859-7" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-7.h b/iconvdata/iso8859-7.h new file mode 100644 index 0000000000..fe38788e20 --- /dev/null +++ b/iconvdata/iso8859-7.h @@ -0,0 +1,504 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x201B, + [0xA2] = 0x2019, + [0xA3] = 0x00A3, + [0xA6] = 0x00A6, + [0xA7] = 0x00A7, + [0xA8] = 0x00A8, + [0xA9] = 0x00A9, + [0xAB] = 0x00AB, + [0xAC] = 0x00AC, + [0xAD] = 0x00AD, + [0xAF] = 0x2014, + [0xB0] = 0x00B0, + [0xB1] = 0x00B1, + [0xB2] = 0x00B2, + [0xB3] = 0x00B3, + [0xB4] = 0x00B4, + [0xB5] = 0x0385, + [0xB6] = 0x0386, + [0xB7] = 0x00B7, + [0xB8] = 0x0388, + [0xB9] = 0x0389, + [0xBA] = 0x038A, + [0xBB] = 0x00BB, + [0xBC] = 0x038C, + [0xBD] = 0x00BD, + [0xBE] = 0x038E, + [0xBF] = 0x038F, + [0xC0] = 0x0390, + [0xC1] = 0x0391, + [0xC2] = 0x0392, + [0xC3] = 0x0393, + [0xC4] = 0x0394, + [0xC5] = 0x0395, + [0xC6] = 0x0396, + [0xC7] = 0x0397, + [0xC8] = 0x0398, + [0xC9] = 0x0399, + [0xCA] = 0x039A, + [0xCB] = 0x039B, + [0xCC] = 0x039C, + [0xCD] = 0x039D, + [0xCE] = 0x039E, + [0xCF] = 0x039F, + [0xD0] = 0x03A0, + [0xD1] = 0x03A1, + [0xD3] = 0x03A3, + [0xD4] = 0x03A4, + [0xD5] = 0x03A5, + [0xD6] = 0x03A6, + [0xD7] = 0x03A7, + [0xD8] = 0x03A8, + [0xD9] = 0x03A9, + [0xDA] = 0x03AA, + [0xDB] = 0x03AB, + [0xDC] = 0x03AC, + [0xDD] = 0x03AD, + [0xDE] = 0x03AE, + [0xDF] = 0x03AF, + [0xE0] = 0x03B0, + [0xE1] = 0x03B1, + [0xE2] = 0x03B2, + [0xE3] = 0x03B3, + [0xE4] = 0x03B4, + [0xE5] = 0x03B5, + [0xE6] = 0x03B6, + [0xE7] = 0x03B7, + [0xE8] = 0x03B8, + [0xE9] = 0x03B9, + [0xEA] = 0x03BA, + [0xEB] = 0x03BB, + [0xEC] = 0x03BC, + [0xED] = 0x03BD, + [0xEE] = 0x03BE, + [0xEF] = 0x03BF, + [0xF0] = 0x03C0, + [0xF1] = 0x03C1, + [0xF2] = 0x03C2, + [0xF3] = 0x03C3, + [0xF4] = 0x03C4, + [0xF5] = 0x03C5, + [0xF6] = 0x03C6, + [0xF7] = 0x03C7, + [0xF8] = 0x03C8, + [0xF9] = 0x03C9, + [0xFA] = 0x03CA, + [0xFB] = 0x03CB, + [0xFC] = 0x03CC, + [0xFD] = 0x03CD, + [0xFE] = 0x03CE, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A3] = 0xA3, + [0x00A6] = 0xA6, + [0x00A7] = 0xA7, + [0x00A8] = 0xA8, + [0x00A9] = 0xA9, + [0x00AB] = 0xAB, + [0x00AC] = 0xAC, + [0x00AD] = 0xAD, + [0x00B0] = 0xB0, + [0x00B1] = 0xB1, + [0x00B2] = 0xB2, + [0x00B3] = 0xB3, + [0x00B4] = 0xB4, + [0x00B7] = 0xB7, + [0x00BB] = 0xBB, + [0x00BD] = 0xBD, + [0x0385] = 0xB5, + [0x0386] = 0xB6, + [0x0388] = 0xB8, + [0x0389] = 0xB9, + [0x038A] = 0xBA, + [0x038C] = 0xBC, + [0x038E] = 0xBE, + [0x038F] = 0xBF, + [0x0390] = 0xC0, + [0x0391] = 0xC1, + [0x0392] = 0xC2, + [0x0393] = 0xC3, + [0x0394] = 0xC4, + [0x0395] = 0xC5, + [0x0396] = 0xC6, + [0x0397] = 0xC7, + [0x0398] = 0xC8, + [0x0399] = 0xC9, + [0x039A] = 0xCA, + [0x039B] = 0xCB, + [0x039C] = 0xCC, + [0x039D] = 0xCD, + [0x039E] = 0xCE, + [0x039F] = 0xCF, + [0x03A0] = 0xD0, + [0x03A1] = 0xD1, + [0x03A3] = 0xD3, + [0x03A4] = 0xD4, + [0x03A5] = 0xD5, + [0x03A6] = 0xD6, + [0x03A7] = 0xD7, + [0x03A8] = 0xD8, + [0x03A9] = 0xD9, + [0x03AA] = 0xDA, + [0x03AB] = 0xDB, + [0x03AC] = 0xDC, + [0x03AD] = 0xDD, + [0x03AE] = 0xDE, + [0x03AF] = 0xDF, + [0x03B0] = 0xE0, + [0x03B1] = 0xE1, + [0x03B2] = 0xE2, + [0x03B3] = 0xE3, + [0x03B4] = 0xE4, + [0x03B5] = 0xE5, + [0x03B6] = 0xE6, + [0x03B7] = 0xE7, + [0x03B8] = 0xE8, + [0x03B9] = 0xE9, + [0x03BA] = 0xEA, + [0x03BB] = 0xEB, + [0x03BC] = 0xEC, + [0x03BD] = 0xED, + [0x03BE] = 0xEE, + [0x03BF] = 0xEF, + [0x03C0] = 0xF0, + [0x03C1] = 0xF1, + [0x03C2] = 0xF2, + [0x03C3] = 0xF3, + [0x03C4] = 0xF4, + [0x03C5] = 0xF5, + [0x03C6] = 0xF6, + [0x03C7] = 0xF7, + [0x03C8] = 0xF8, + [0x03C9] = 0xF9, + [0x03CA] = 0xFA, + [0x03CB] = 0xFB, + [0x03CC] = 0xFC, + [0x03CD] = 0xFD, + [0x03CE] = 0xFE, + [0x2014] = 0xAF, + [0x2019] = 0xA2, + [0x201B] = 0xA1, +}; diff --git a/iconvdata/iso8859-8.c b/iconvdata/iso8859-8.c new file mode 100644 index 0000000000..ee69754cea --- /dev/null +++ b/iconvdata/iso8859-8.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-8. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-8.h> +#define NAME "ISO-8859-8" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-8.h b/iconvdata/iso8859-8.h new file mode 100644 index 0000000000..bdccec689c --- /dev/null +++ b/iconvdata/iso8859-8.h @@ -0,0 +1,440 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA2] = 0x00A2, + [0xA3] = 0x00A3, + [0xA4] = 0x00A4, + [0xA5] = 0x00A5, + [0xA6] = 0x00A6, + [0xA7] = 0x00A7, + [0xA8] = 0x00A8, + [0xA9] = 0x00A9, + [0xAA] = 0x00D7, + [0xAB] = 0x00AB, + [0xAC] = 0x00AC, + [0xAD] = 0x00AD, + [0xAE] = 0x00AE, + [0xAF] = 0x203E, + [0xB0] = 0x00B0, + [0xB1] = 0x00B1, + [0xB2] = 0x00B2, + [0xB3] = 0x00B3, + [0xB4] = 0x00B4, + [0xB5] = 0x00B5, + [0xB6] = 0x00B6, + [0xB7] = 0x00B7, + [0xB8] = 0x00B8, + [0xB9] = 0x00B9, + [0xBA] = 0x00F7, + [0xBB] = 0x00BB, + [0xBC] = 0x00BC, + [0xBD] = 0x00BD, + [0xBE] = 0x00BE, + [0xDF] = 0x2017, + [0xE0] = 0x05D0, + [0xE1] = 0x05D1, + [0xE2] = 0x05D2, + [0xE3] = 0x05D3, + [0xE4] = 0x05D4, + [0xE5] = 0x05D5, + [0xE6] = 0x05D6, + [0xE7] = 0x05D7, + [0xE8] = 0x05D8, + [0xE9] = 0x05D9, + [0xEA] = 0x05DA, + [0xEB] = 0x05DB, + [0xEC] = 0x05DC, + [0xED] = 0x05DD, + [0xEE] = 0x05DE, + [0xEF] = 0x05DF, + [0xF0] = 0x05E0, + [0xF1] = 0x05E1, + [0xF2] = 0x05E2, + [0xF3] = 0x05E3, + [0xF4] = 0x05E4, + [0xF5] = 0x05E5, + [0xF6] = 0x05E6, + [0xF7] = 0x05E7, + [0xF8] = 0x05E8, + [0xF9] = 0x05E9, + [0xFA] = 0x05EA, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A2] = 0xA2, + [0x00A3] = 0xA3, + [0x00A4] = 0xA4, + [0x00A5] = 0xA5, + [0x00A6] = 0xA6, + [0x00A7] = 0xA7, + [0x00A8] = 0xA8, + [0x00A9] = 0xA9, + [0x00AB] = 0xAB, + [0x00AC] = 0xAC, + [0x00AD] = 0xAD, + [0x00AE] = 0xAE, + [0x00B0] = 0xB0, + [0x00B1] = 0xB1, + [0x00B2] = 0xB2, + [0x00B3] = 0xB3, + [0x00B4] = 0xB4, + [0x00B5] = 0xB5, + [0x00B6] = 0xB6, + [0x00B7] = 0xB7, + [0x00B8] = 0xB8, + [0x00B9] = 0xB9, + [0x00BB] = 0xBB, + [0x00BC] = 0xBC, + [0x00BD] = 0xBD, + [0x00BE] = 0xBE, + [0x00D7] = 0xAA, + [0x00F7] = 0xBA, + [0x05D0] = 0xE0, + [0x05D1] = 0xE1, + [0x05D2] = 0xE2, + [0x05D3] = 0xE3, + [0x05D4] = 0xE4, + [0x05D5] = 0xE5, + [0x05D6] = 0xE6, + [0x05D7] = 0xE7, + [0x05D8] = 0xE8, + [0x05D9] = 0xE9, + [0x05DA] = 0xEA, + [0x05DB] = 0xEB, + [0x05DC] = 0xEC, + [0x05DD] = 0xED, + [0x05DE] = 0xEE, + [0x05DF] = 0xEF, + [0x05E0] = 0xF0, + [0x05E1] = 0xF1, + [0x05E2] = 0xF2, + [0x05E3] = 0xF3, + [0x05E4] = 0xF4, + [0x05E5] = 0xF5, + [0x05E6] = 0xF6, + [0x05E7] = 0xF7, + [0x05E8] = 0xF8, + [0x05E9] = 0xF9, + [0x05EA] = 0xFA, + [0x2017] = 0xDF, + [0x203E] = 0xAF, +}; diff --git a/iconvdata/iso8859-9.c b/iconvdata/iso8859-9.c new file mode 100644 index 0000000000..5485de26f1 --- /dev/null +++ b/iconvdata/iso8859-9.c @@ -0,0 +1,24 @@ +/* Conversion from and to ISO 8859-9. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <wchar.h> +#include <iso8859-9.h> +#define NAME "ISO-8859-9" +#include <iso8859-generic.c> diff --git a/iconvdata/iso8859-9.h b/iconvdata/iso8859-9.h new file mode 100644 index 0000000000..f5794231c0 --- /dev/null +++ b/iconvdata/iso8859-9.h @@ -0,0 +1,516 @@ +static const wchar_t to_ucs4[256] = { + [0x00] = 0x0000, + [0x01] = 0x0001, + [0x02] = 0x0002, + [0x03] = 0x0003, + [0x04] = 0x0004, + [0x05] = 0x0005, + [0x06] = 0x0006, + [0x07] = 0x0007, + [0x08] = 0x0008, + [0x09] = 0x0009, + [0x0A] = 0x000A, + [0x0B] = 0x000B, + [0x0C] = 0x000C, + [0x0D] = 0x000D, + [0x0E] = 0x000E, + [0x0F] = 0x000F, + [0x10] = 0x0010, + [0x11] = 0x0011, + [0x12] = 0x0012, + [0x13] = 0x0013, + [0x14] = 0x0014, + [0x15] = 0x0015, + [0x16] = 0x0016, + [0x17] = 0x0017, + [0x18] = 0x0018, + [0x19] = 0x0019, + [0x1A] = 0x001A, + [0x1B] = 0x001B, + [0x1C] = 0x001C, + [0x1D] = 0x001D, + [0x1E] = 0x001E, + [0x1F] = 0x001F, + [0x20] = 0x0020, + [0x21] = 0x0021, + [0x22] = 0x0022, + [0x23] = 0x0023, + [0x24] = 0x0024, + [0x25] = 0x0025, + [0x26] = 0x0026, + [0x27] = 0x0027, + [0x28] = 0x0028, + [0x29] = 0x0029, + [0x2A] = 0x002A, + [0x2B] = 0x002B, + [0x2C] = 0x002C, + [0x2D] = 0x002D, + [0x2E] = 0x002E, + [0x2F] = 0x002F, + [0x30] = 0x0030, + [0x31] = 0x0031, + [0x32] = 0x0032, + [0x33] = 0x0033, + [0x34] = 0x0034, + [0x35] = 0x0035, + [0x36] = 0x0036, + [0x37] = 0x0037, + [0x38] = 0x0038, + [0x39] = 0x0039, + [0x3A] = 0x003A, + [0x3B] = 0x003B, + [0x3C] = 0x003C, + [0x3D] = 0x003D, + [0x3E] = 0x003E, + [0x3F] = 0x003F, + [0x40] = 0x0040, + [0x41] = 0x0041, + [0x42] = 0x0042, + [0x43] = 0x0043, + [0x44] = 0x0044, + [0x45] = 0x0045, + [0x46] = 0x0046, + [0x47] = 0x0047, + [0x48] = 0x0048, + [0x49] = 0x0049, + [0x4A] = 0x004A, + [0x4B] = 0x004B, + [0x4C] = 0x004C, + [0x4D] = 0x004D, + [0x4E] = 0x004E, + [0x4F] = 0x004F, + [0x50] = 0x0050, + [0x51] = 0x0051, + [0x52] = 0x0052, + [0x53] = 0x0053, + [0x54] = 0x0054, + [0x55] = 0x0055, + [0x56] = 0x0056, + [0x57] = 0x0057, + [0x58] = 0x0058, + [0x59] = 0x0059, + [0x5A] = 0x005A, + [0x5B] = 0x005B, + [0x5C] = 0x005C, + [0x5D] = 0x005D, + [0x5E] = 0x005E, + [0x5F] = 0x005F, + [0x60] = 0x0060, + [0x61] = 0x0061, + [0x62] = 0x0062, + [0x63] = 0x0063, + [0x64] = 0x0064, + [0x65] = 0x0065, + [0x66] = 0x0066, + [0x67] = 0x0067, + [0x68] = 0x0068, + [0x69] = 0x0069, + [0x6A] = 0x006A, + [0x6B] = 0x006B, + [0x6C] = 0x006C, + [0x6D] = 0x006D, + [0x6E] = 0x006E, + [0x6F] = 0x006F, + [0x70] = 0x0070, + [0x71] = 0x0071, + [0x72] = 0x0072, + [0x73] = 0x0073, + [0x74] = 0x0074, + [0x75] = 0x0075, + [0x76] = 0x0076, + [0x77] = 0x0077, + [0x78] = 0x0078, + [0x79] = 0x0079, + [0x7A] = 0x007A, + [0x7B] = 0x007B, + [0x7C] = 0x007C, + [0x7D] = 0x007D, + [0x7E] = 0x007E, + [0x7F] = 0x007F, + [0x80] = 0x0080, + [0x81] = 0x0081, + [0x82] = 0x0082, + [0x83] = 0x0083, + [0x84] = 0x0084, + [0x85] = 0x0085, + [0x86] = 0x0086, + [0x87] = 0x0087, + [0x88] = 0x0088, + [0x89] = 0x0089, + [0x8A] = 0x008A, + [0x8B] = 0x008B, + [0x8C] = 0x008C, + [0x8D] = 0x008D, + [0x8E] = 0x008E, + [0x8F] = 0x008F, + [0x90] = 0x0090, + [0x91] = 0x0091, + [0x92] = 0x0092, + [0x93] = 0x0093, + [0x94] = 0x0094, + [0x95] = 0x0095, + [0x96] = 0x0096, + [0x97] = 0x0097, + [0x98] = 0x0098, + [0x99] = 0x0099, + [0x9A] = 0x009A, + [0x9B] = 0x009B, + [0x9C] = 0x009C, + [0x9D] = 0x009D, + [0x9E] = 0x009E, + [0x9F] = 0x009F, + [0xA0] = 0x00A0, + [0xA1] = 0x00A1, + [0xA2] = 0x00A2, + [0xA3] = 0x00A3, + [0xA4] = 0x00A4, + [0xA5] = 0x00A5, + [0xA6] = 0x00A6, + [0xA7] = 0x00A7, + [0xA8] = 0x00A8, + [0xA9] = 0x00A9, + [0xAA] = 0x00AA, + [0xAB] = 0x00AB, + [0xAC] = 0x00AC, + [0xAD] = 0x00AD, + [0xAE] = 0x00AE, + [0xAF] = 0x00AF, + [0xB0] = 0x00B0, + [0xB1] = 0x00B1, + [0xB2] = 0x00B2, + [0xB3] = 0x00B3, + [0xB4] = 0x00B4, + [0xB5] = 0x00B5, + [0xB6] = 0x00B6, + [0xB7] = 0x00B7, + [0xB8] = 0x00B8, + [0xB9] = 0x00B9, + [0xBA] = 0x00BA, + [0xBB] = 0x00BB, + [0xBC] = 0x00BC, + [0xBD] = 0x00BD, + [0xBE] = 0x00BE, + [0xBF] = 0x00BF, + [0xC0] = 0x00C0, + [0xC1] = 0x00C1, + [0xC2] = 0x00C2, + [0xC3] = 0x00C3, + [0xC4] = 0x00C4, + [0xC5] = 0x00C5, + [0xC6] = 0x00C6, + [0xC7] = 0x00C7, + [0xC8] = 0x00C8, + [0xC9] = 0x00C9, + [0xCA] = 0x00CA, + [0xCB] = 0x00CB, + [0xCC] = 0x00CC, + [0xCD] = 0x00CD, + [0xCE] = 0x00CE, + [0xCF] = 0x00CF, + [0xD0] = 0x011E, + [0xD1] = 0x00D1, + [0xD2] = 0x00D2, + [0xD3] = 0x00D3, + [0xD4] = 0x00D4, + [0xD5] = 0x00D5, + [0xD6] = 0x00D6, + [0xD7] = 0x00D7, + [0xD8] = 0x00D8, + [0xD9] = 0x00D9, + [0xDA] = 0x00DA, + [0xDB] = 0x00DB, + [0xDC] = 0x00DC, + [0xDD] = 0x0130, + [0xDE] = 0x015E, + [0xDF] = 0x00DF, + [0xE0] = 0x00E0, + [0xE1] = 0x00E1, + [0xE2] = 0x00E2, + [0xE3] = 0x00E3, + [0xE4] = 0x00E4, + [0xE5] = 0x00E5, + [0xE6] = 0x00E6, + [0xE7] = 0x00E7, + [0xE8] = 0x00E8, + [0xE9] = 0x00E9, + [0xEA] = 0x0119, + [0xEB] = 0x00EB, + [0xEC] = 0x0117, + [0xED] = 0x00ED, + [0xEE] = 0x00EE, + [0xEF] = 0x012B, + [0xF0] = 0x011F, + [0xF1] = 0x00F1, + [0xF2] = 0x00F2, + [0xF3] = 0x00F3, + [0xF4] = 0x00F4, + [0xF5] = 0x00F5, + [0xF6] = 0x00F6, + [0xF7] = 0x00F7, + [0xF8] = 0x00F8, + [0xF9] = 0x00F9, + [0xFA] = 0x00FA, + [0xFB] = 0x00FB, + [0xFC] = 0x00FC, + [0xFD] = 0x0131, + [0xFE] = 0x015F, + [0xFF] = 0x00FF, +}; +static const char from_ucs4[] = { + [0x0000] = 0x00, + [0x0001] = 0x01, + [0x0002] = 0x02, + [0x0003] = 0x03, + [0x0004] = 0x04, + [0x0005] = 0x05, + [0x0006] = 0x06, + [0x0007] = 0x07, + [0x0008] = 0x08, + [0x0009] = 0x09, + [0x000A] = 0x0A, + [0x000B] = 0x0B, + [0x000C] = 0x0C, + [0x000D] = 0x0D, + [0x000E] = 0x0E, + [0x000F] = 0x0F, + [0x0010] = 0x10, + [0x0011] = 0x11, + [0x0012] = 0x12, + [0x0013] = 0x13, + [0x0014] = 0x14, + [0x0015] = 0x15, + [0x0016] = 0x16, + [0x0017] = 0x17, + [0x0018] = 0x18, + [0x0019] = 0x19, + [0x001A] = 0x1A, + [0x001B] = 0x1B, + [0x001C] = 0x1C, + [0x001D] = 0x1D, + [0x001E] = 0x1E, + [0x001F] = 0x1F, + [0x0020] = 0x20, + [0x0021] = 0x21, + [0x0022] = 0x22, + [0x0023] = 0x23, + [0x0024] = 0x24, + [0x0025] = 0x25, + [0x0026] = 0x26, + [0x0027] = 0x27, + [0x0028] = 0x28, + [0x0029] = 0x29, + [0x002A] = 0x2A, + [0x002B] = 0x2B, + [0x002C] = 0x2C, + [0x002D] = 0x2D, + [0x002E] = 0x2E, + [0x002F] = 0x2F, + [0x0030] = 0x30, + [0x0031] = 0x31, + [0x0032] = 0x32, + [0x0033] = 0x33, + [0x0034] = 0x34, + [0x0035] = 0x35, + [0x0036] = 0x36, + [0x0037] = 0x37, + [0x0038] = 0x38, + [0x0039] = 0x39, + [0x003A] = 0x3A, + [0x003B] = 0x3B, + [0x003C] = 0x3C, + [0x003D] = 0x3D, + [0x003E] = 0x3E, + [0x003F] = 0x3F, + [0x0040] = 0x40, + [0x0041] = 0x41, + [0x0042] = 0x42, + [0x0043] = 0x43, + [0x0044] = 0x44, + [0x0045] = 0x45, + [0x0046] = 0x46, + [0x0047] = 0x47, + [0x0048] = 0x48, + [0x0049] = 0x49, + [0x004A] = 0x4A, + [0x004B] = 0x4B, + [0x004C] = 0x4C, + [0x004D] = 0x4D, + [0x004E] = 0x4E, + [0x004F] = 0x4F, + [0x0050] = 0x50, + [0x0051] = 0x51, + [0x0052] = 0x52, + [0x0053] = 0x53, + [0x0054] = 0x54, + [0x0055] = 0x55, + [0x0056] = 0x56, + [0x0057] = 0x57, + [0x0058] = 0x58, + [0x0059] = 0x59, + [0x005A] = 0x5A, + [0x005B] = 0x5B, + [0x005C] = 0x5C, + [0x005D] = 0x5D, + [0x005E] = 0x5E, + [0x005F] = 0x5F, + [0x0060] = 0x60, + [0x0061] = 0x61, + [0x0062] = 0x62, + [0x0063] = 0x63, + [0x0064] = 0x64, + [0x0065] = 0x65, + [0x0066] = 0x66, + [0x0067] = 0x67, + [0x0068] = 0x68, + [0x0069] = 0x69, + [0x006A] = 0x6A, + [0x006B] = 0x6B, + [0x006C] = 0x6C, + [0x006D] = 0x6D, + [0x006E] = 0x6E, + [0x006F] = 0x6F, + [0x0070] = 0x70, + [0x0071] = 0x71, + [0x0072] = 0x72, + [0x0073] = 0x73, + [0x0074] = 0x74, + [0x0075] = 0x75, + [0x0076] = 0x76, + [0x0077] = 0x77, + [0x0078] = 0x78, + [0x0079] = 0x79, + [0x007A] = 0x7A, + [0x007B] = 0x7B, + [0x007C] = 0x7C, + [0x007D] = 0x7D, + [0x007E] = 0x7E, + [0x007F] = 0x7F, + [0x0080] = 0x80, + [0x0081] = 0x81, + [0x0082] = 0x82, + [0x0083] = 0x83, + [0x0084] = 0x84, + [0x0085] = 0x85, + [0x0086] = 0x86, + [0x0087] = 0x87, + [0x0088] = 0x88, + [0x0089] = 0x89, + [0x008A] = 0x8A, + [0x008B] = 0x8B, + [0x008C] = 0x8C, + [0x008D] = 0x8D, + [0x008E] = 0x8E, + [0x008F] = 0x8F, + [0x0090] = 0x90, + [0x0091] = 0x91, + [0x0092] = 0x92, + [0x0093] = 0x93, + [0x0094] = 0x94, + [0x0095] = 0x95, + [0x0096] = 0x96, + [0x0097] = 0x97, + [0x0098] = 0x98, + [0x0099] = 0x99, + [0x009A] = 0x9A, + [0x009B] = 0x9B, + [0x009C] = 0x9C, + [0x009D] = 0x9D, + [0x009E] = 0x9E, + [0x009F] = 0x9F, + [0x00A0] = 0xA0, + [0x00A1] = 0xA1, + [0x00A2] = 0xA2, + [0x00A3] = 0xA3, + [0x00A4] = 0xA4, + [0x00A5] = 0xA5, + [0x00A6] = 0xA6, + [0x00A7] = 0xA7, + [0x00A8] = 0xA8, + [0x00A9] = 0xA9, + [0x00AA] = 0xAA, + [0x00AB] = 0xAB, + [0x00AC] = 0xAC, + [0x00AD] = 0xAD, + [0x00AE] = 0xAE, + [0x00AF] = 0xAF, + [0x00B0] = 0xB0, + [0x00B1] = 0xB1, + [0x00B2] = 0xB2, + [0x00B3] = 0xB3, + [0x00B4] = 0xB4, + [0x00B5] = 0xB5, + [0x00B6] = 0xB6, + [0x00B7] = 0xB7, + [0x00B8] = 0xB8, + [0x00B9] = 0xB9, + [0x00BA] = 0xBA, + [0x00BB] = 0xBB, + [0x00BC] = 0xBC, + [0x00BD] = 0xBD, + [0x00BE] = 0xBE, + [0x00BF] = 0xBF, + [0x00C0] = 0xC0, + [0x00C1] = 0xC1, + [0x00C2] = 0xC2, + [0x00C3] = 0xC3, + [0x00C4] = 0xC4, + [0x00C5] = 0xC5, + [0x00C6] = 0xC6, + [0x00C7] = 0xC7, + [0x00C8] = 0xC8, + [0x00C9] = 0xC9, + [0x00CA] = 0xCA, + [0x00CB] = 0xCB, + [0x00CC] = 0xCC, + [0x00CD] = 0xCD, + [0x00CE] = 0xCE, + [0x00CF] = 0xCF, + [0x00D1] = 0xD1, + [0x00D2] = 0xD2, + [0x00D3] = 0xD3, + [0x00D4] = 0xD4, + [0x00D5] = 0xD5, + [0x00D6] = 0xD6, + [0x00D7] = 0xD7, + [0x00D8] = 0xD8, + [0x00D9] = 0xD9, + [0x00DA] = 0xDA, + [0x00DB] = 0xDB, + [0x00DC] = 0xDC, + [0x00DF] = 0xDF, + [0x00E0] = 0xE0, + [0x00E1] = 0xE1, + [0x00E2] = 0xE2, + [0x00E3] = 0xE3, + [0x00E4] = 0xE4, + [0x00E5] = 0xE5, + [0x00E6] = 0xE6, + [0x00E7] = 0xE7, + [0x00E8] = 0xE8, + [0x00E9] = 0xE9, + [0x00EB] = 0xEB, + [0x00ED] = 0xED, + [0x00EE] = 0xEE, + [0x00F1] = 0xF1, + [0x00F2] = 0xF2, + [0x00F3] = 0xF3, + [0x00F4] = 0xF4, + [0x00F5] = 0xF5, + [0x00F6] = 0xF6, + [0x00F7] = 0xF7, + [0x00F8] = 0xF8, + [0x00F9] = 0xF9, + [0x00FA] = 0xFA, + [0x00FB] = 0xFB, + [0x00FC] = 0xFC, + [0x00FF] = 0xFF, + [0x0117] = 0xEC, + [0x0119] = 0xEA, + [0x011E] = 0xD0, + [0x011F] = 0xF0, + [0x012B] = 0xEF, + [0x0130] = 0xDD, + [0x0131] = 0xFD, + [0x015E] = 0xDE, + [0x015F] = 0xFE, +}; diff --git a/iconvdata/iso8859-generic.c b/iconvdata/iso8859-generic.c new file mode 100644 index 0000000000..e33e1d0a87 --- /dev/null +++ b/iconvdata/iso8859-generic.c @@ -0,0 +1,228 @@ +/* Generic conversion to and from ISO 8859-XXX. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <gconv.h> +#include <stdlib.h> +#include <string.h> + +/* Direction of the transformation. */ +enum direction +{ + illegal, + to_iso8859, + from_iso8859 +}; + +struct iso8859_data +{ + enum direction dir; +}; + + +int +gconv_init (struct gconv_step *step, struct gconv_step_data *data) +{ + /* Determine which direction. */ + struct iso8859_data *new_data; + enum direction dir; + int result; + + if (__strcasestr (step->from_name, NAME) != NULL) + dir = from_iso8859; + else if (__strcasestr (step->to_name, NAME) != NULL) + dir = to_iso8859; + else + dir = illegal; + + result = GCONV_NOCONV; + if (dir != illegal + && ((new_data + = (struct iso8859_data *) malloc (sizeof (struct iso8859_data))) + != NULL)) + { + new_data->dir = dir; + data->data = new_data; + result = GCONV_OK; + } + + return result; +} + + +void +gconv_end (struct gconv_step_data *data) +{ + free (data->data); +} + + +int +gconv (struct gconv_step *step, struct gconv_step_data *data, + const char *inbuf, size_t *inbufsize, size_t *written, int do_flush) +{ + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + gconv_fct fct = next_step->fct; + size_t do_write; + int result; + + /* If the function is called with no input this means we have to reset + to the initial state. The possibly partly converted input is + dropped. */ + if (do_flush) + { + do_write = 0; + + /* Call the steps down the chain if there are any. */ + if (data->is_last) + result = GCONV_OK; + else + { + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + + result = (*fct) (next_step, next_data, NULL, 0, written, 1); + + /* Clear output buffer. */ + data->outbufavail = 0; + } + } + else + { + enum direction dir = ((struct iso8859_data *) data->data)->dir; + + do_write = 0; + + do + { + result = GCONV_OK; + + if (dir == from_iso8859) + { + size_t inchars = *inbufsize; + size_t outwchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (cnt < inchars + && (outwchars + sizeof (wchar_t) <= data->outbufsize)) + { + wchar_t ch = to_ucs4[(int) inbuf[cnt]]; + + if (ch == L'\0' && inbuf[cnt] != '\0') + { + /* This is an illegal character. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + + *((wchar_t *) (outbuf + outwchars)) = ch; + ++do_write; + outwchars += sizeof (wchar_t); + ++cnt; + } + *inbufsize -= cnt; + data->outbufavail = outwchars; + } + else + { + size_t inwchars = *inbufsize; + size_t outchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (inwchars >= cnt + sizeof (wchar_t) + && outchars < data->outbufsize) + { + int ch = *((wchar_t *) (inbuf + cnt)); + + if (ch >= sizeof (from_ucs4) / sizeof (from_ucs4[0]) + || ch < 0 || (from_ucs4[ch] == '\0' && ch != 0)) + break; + + outbuf[outchars] = from_ucs4[ch]; + ++do_write; + ++outchars; + cnt += sizeof (wchar_t); + } + *inbufsize -= cnt; + data->outbufavail = outchars; + + if (outchars < data->outbufsize) + { + /* If there is still room in the output buffer something + is wrong with the input. */ + if (inwchars >= cnt + sizeof (wchar_t)) + { + /* An error occurred. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + if (inwchars != cnt) + { + /* There are some unprocessed bytes at the end of the + input buffer. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + } + } + + if (result != GCONV_OK) + break; + + if (data->is_last) + { + /* This is the last step. */ + result = (*inbufsize > (dir == from_iso8859 + ? 0 : sizeof (wchar_t) - 1) + ? GCONV_FULL_OUTPUT : GCONV_EMPTY_INPUT); + break; + } + + /* Status so far. */ + result = GCONV_EMPTY_INPUT; + + if (data->outbufavail > 0) + { + /* Call the functions below in the chain. */ + size_t newavail = data->outbufavail; + + result = (*fct) (next_step, next_data, data->outbuf, &newavail, + written, 0); + + /* Correct the output buffer. */ + if (newavail != data->outbufavail && newavail > 0) + { + memmove (data->outbuf, + &data->outbuf[data->outbufavail - newavail], + newavail); + data->outbufavail = newavail; + } + } + } + while (*inbufsize > 0 && result == GCONV_EMPTY_INPUT); + } + + if (written != NULL && data->is_last) + *written = do_write; + + return result; +} diff --git a/iconvdata/t61.c b/iconvdata/t61.c new file mode 100644 index 0000000000..915b672d3e --- /dev/null +++ b/iconvdata/t61.c @@ -0,0 +1,630 @@ +/* Generic conversion to and from T.61. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <gconv.h> +#include <stdlib.h> +#include <string.h> + +/* Data taken from the WG15 tables. */ +static const wchar_t to_ucs4[256] = +{ + /* 0x00 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + /* 0x08 */ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + /* 0x10 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + /* 0x18 */ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + /* 0x20 */ 0x0020, 0x0021, 0x0022, 0x0000, 0x0000, 0x0025, 0x0026, 0x0027, + /* 0x28 */ 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + /* 0x30 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + /* 0x38 */ 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + /* 0x40 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + /* 0x48 */ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + /* 0x50 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + /* 0x58 */ 0x0058, 0x0059, 0x005a, 0x005b, 0x0000, 0x005d, 0x0000, 0x005f, + /* 0x60 */ 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + /* 0x68 */ 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + /* 0x70 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + /* 0x78 */ 0x0078, 0x0079, 0x007a, 0x0000, 0x007c, 0x0000, 0x0000, 0x007f, + /* 0x80 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + /* 0x88 */ 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + /* 0x90 */ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + /* 0x98 */ 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + /* 0xa0 */ 0x0000, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + /* 0xa8 */ 0x00a8, 0x0000, 0x0000, 0x00ab, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xb0 */ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + /* 0xb8 */ 0x00b8, 0x0000, 0x0000, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + /* 0xc0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xc8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd0 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xd8 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xe0 */ 0x2126, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132, 0x013f, + /* 0xe8 */ 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0x0149, + /* 0xf0 */ 0x0138, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0140, + /* 0xf8 */ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0000 +}; + +/* The outer array range runs from 0xc1 to 0xcf, the inner range from 0x20 + to 0x7f. */ +static const wchar_t to_ucs4_comb[15][96] = +{ + /* 0xc1 */ + { + /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c0, 0x0000, 0x0000, 0x0000, 0x00c8, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x00cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d2, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d9, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e0, 0x0000, 0x0000, 0x0000, 0x00e8, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x00ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f2, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f9, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc2 */ + { + /* 0x20 */ 0x00b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c1, 0x0000, 0x0106, 0x0000, 0x00c9, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x00cd, 0x0000, 0x0000, 0x0139, 0x0000, 0x0143, 0x00d3, + /* 0x50 */ 0x0000, 0x0000, 0x0154, 0x015a, 0x0000, 0x00da, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x00dd, 0x0179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e1, 0x0000, 0x0107, 0x0000, 0x00e9, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x00ed, 0x0000, 0x0000, 0x013a, 0x0000, 0x0144, 0x00f3, + /* 0x70 */ 0x0000, 0x0000, 0x0155, 0x015b, 0x0000, 0x00fa, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x00fd, 0x017a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc3 */ + { + /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c2, 0x0000, 0x0108, 0x0000, 0x00ca, 0x0000, 0x011c, + /* 0x48 */ 0x0124, 0x00ce, 0x0134, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d4, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x015c, 0x0000, 0x00db, 0x0000, 0x0174, + /* 0x58 */ 0x0000, 0x0176, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e2, 0x0000, 0x0109, 0x0000, 0x00ea, 0x0000, 0x011d, + /* 0x68 */ 0x0125, 0x00ee, 0x0135, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f4, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x015d, 0x0000, 0x00fb, 0x0000, 0x0175, + /* 0x78 */ 0x0000, 0x0177, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc4 */ + { + /* 0x20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0128, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d1, 0x00d5, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0168, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0129, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f1, 0x00f5, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0169, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc5 */ + { + /* 0x20 */ 0x00af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0100, 0x0000, 0x0000, 0x0000, 0x0112, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x012a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014c, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016a, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0101, 0x0000, 0x0000, 0x0000, 0x0113, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x012b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x014d, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016b, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc6 */ + { + /* 0x20 */ 0x02d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011e, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016c, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0103, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011f, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016d, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc7 */ + { + /* 0x20 */ 0x02d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x010a, 0x0000, 0x0116, 0x0000, 0x0120, + /* 0x48 */ 0x0000, 0x0130, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x017b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x010b, 0x0000, 0x0117, 0x0000, 0x0121, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x017c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc8 */ + { + /* 0x20 */ 0x00a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c4, 0x0000, 0x0000, 0x0000, 0x00cb, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x00cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00d6, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00dc, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0178, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e4, 0x0000, 0x0000, 0x0000, 0x00eb, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x00ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00f6, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00fc, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x00ff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xc9 */ + { + 0x0000, + }, + /* 0xca */ + { + /* 0x20 */ 0x02da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x00c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016e, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x00e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x016f, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xcb */ + { + /* 0x20 */ 0x00b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x00c7, 0x0000, 0x0000, 0x0000, 0x0122, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0136, 0x013b, 0x0000, 0x0145, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0156, 0x015e, 0x0162, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x00e7, 0x0000, 0x0000, 0x0000, 0x0123, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0137, 0x013c, 0x0000, 0x0146, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0157, 0x015f, 0x0163, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xcc */ + { + 0x0000, + }, + /* 0xcd */ + { + /* 0x20 */ 0x02dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0150, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0170, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0151, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0171, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xce */ + { + /* 0x20 */ 0x02db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0104, 0x0000, 0x0000, 0x0000, 0x0118, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x012e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0172, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0105, 0x0000, 0x0000, 0x0000, 0x0119, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x012f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0173, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + /* 0xcf */ + { + /* 0x20 */ 0x02c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x28 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x38 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x40 */ 0x0000, 0x0000, 0x0000, 0x010c, 0x010e, 0x011a, 0x0000, 0x0000, + /* 0x48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x013d, 0x0000, 0x0147, 0x0000, + /* 0x50 */ 0x0000, 0x0000, 0x0158, 0x0160, 0x0164, 0x0000, 0x0000, 0x0000, + /* 0x58 */ 0x0000, 0x0000, 0x017d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x60 */ 0x0000, 0x0000, 0x0000, 0x010d, 0x010f, 0x011b, 0x0000, 0x0000, + /* 0x68 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x013e, 0x0000, 0x0148, 0x0000, + /* 0x70 */ 0x0000, 0x0000, 0x0159, 0x0161, 0x0165, 0x0000, 0x0000, 0x0000, + /* 0x78 */ 0x0000, 0x0000, 0x017e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + } +}; + + +static const char from_ucs4[][2] = +{ + /* 0x0000 */ "\x00\x00", "\x01\x00", "\x02\x00", "\x03\x00", "\x04\x00", + /* 0x0005 */ "\x05\x00", "\x06\x00", "\x07\x00", "\x08\x00", "\x09\x00", + /* 0x000a */ "\x0a\x00", "\x0b\x00", "\x0c\x00", "\x0d\x00", "\x0e\x00", + /* 0x000f */ "\x0f\x00", "\x10\x00", "\x11\x00", "\x12\x00", "\x13\x00", + /* 0x0014 */ "\x14\x00", "\x15\x00", "\x16\x00", "\x17\x00", "\x18\x00", + /* 0x0019 */ "\x19\x00", "\x1a\x00", "\x1b\x00", "\x1c\x00", "\x1d\x00", + /* 0x001e */ "\x1e\x00", "\x1f\x00", "\x20\x00", "\x21\x00", "\x22\x00", + /* 0x0023 */ "\x23\x00", "\x24\x00", "\x25\x00", "\x26\x00", "\x27\x00", + /* 0x0028 */ "\x28\x00", "\x29\x00", "\x2a\x00", "\x2b\x00", "\x2c\x00", + /* 0x002d */ "\x2d\x00", "\x2e\x00", "\x2f\x00", "\x30\x00", "\x31\x00", + /* 0x0032 */ "\x32\x00", "\x33\x00", "\x34\x00", "\x35\x00", "\x36\x00", + /* 0x0037 */ "\x37\x00", "\x38\x00", "\x39\x00", "\x3a\x00", "\x3b\x00", + /* 0x003c */ "\x3c\x00", "\x3d\x00", "\x3e\x00", "\x3f\x00", "\x40\x00", + /* 0x0041 */ "\x41\x00", "\x42\x00", "\x43\x00", "\x44\x00", "\x45\x00", + /* 0x0046 */ "\x46\x00", "\x47\x00", "\x48\x00", "\x49\x00", "\x4a\x00", + /* 0x004b */ "\x4b\x00", "\x4c\x00", "\x4d\x00", "\x4e\x00", "\x4f\x00", + /* 0x0050 */ "\x50\x00", "\x51\x00", "\x52\x00", "\x53\x00", "\x54\x00", + /* 0x0055 */ "\x55\x00", "\x56\x00", "\x57\x00", "\x58\x00", "\x59\x00", + /* 0x005a */ "\x5a\x00", "\x5b\x00", "\x00\x00", "\x5d\x00", "\x00\x00", + /* 0x005f */ "\x5f\x00", "\x00\x00", "\x61\x00", "\x62\x00", "\x63\x00", + /* 0x0064 */ "\x64\x00", "\x65\x00", "\x66\x00", "\x67\x00", "\x68\x00", + /* 0x0069 */ "\x69\x00", "\x6a\x00", "\x6b\x00", "\x6c\x00", "\x6d\x00", + /* 0x006e */ "\x6e\x00", "\x6f\x00", "\x70\x00", "\x71\x00", "\x72\x00", + /* 0x0073 */ "\x73\x00", "\x74\x00", "\x75\x00", "\x76\x00", "\x77\x00", + /* 0x0078 */ "\x78\x00", "\x79\x00", "\x7a\x00", "\x00\x00", "\x7c\x00", + /* 0x007d */ "\x00\x00", "\x00\x00", "\x7f\x00", "\x00\x80", "\x00\x81", + /* 0x0082 */ "\x82\x00", "\x83\x00", "\x84\x00", "\x85\x00", "\x86\x00", + /* 0x0087 */ "\x87\x00", "\x88\x00", "\x89\x00", "\x8a\x00", "\x8b\x00", + /* 0x008c */ "\x8c\x00", "\x8d\x00", "\x8e\x00", "\x8f\x00", "\x90\x00", + /* 0x0091 */ "\x91\x00", "\x92\x00", "\x93\x00", "\x94\x00", "\x95\x00", + /* 0x0096 */ "\x96\x00", "\x97\x00", "\x98\x00", "\x99\x00", "\x9a\x00", + /* 0x009b */ "\x9b\x00", "\x9c\x00", "\x9d\x00", "\x9e\x00", "\x9f\x00", + /* 0x00a0 */ "\x00\x00", "\xa1\x00", "\xa2\x00", "\xa3\x00", "\xa4\x00", + /* 0x00a5 */ "\xa5\x00", "\x00\x00", "\xa7\x00", "\xc8\x20", "\x00\x00", + /* 0x00aa */ "\xe3\x00", "\xab\x00", "\x00\x00", "\x00\x00", "\x00\x00", + /* 0x00af */ "\xc5\x20", "\xb0\x00", "\xb1\x00", "\xb2\x00", "\xb3\x00", + /* 0x00b4 */ "\xc2\x20", "\xb5\x00", "\xb6\x00", "\xb7\x00", "\xcb\x20", + /* 0x00b9 */ "\x00\x00", "\xeb\x00", "\x00\x00", "\xbc\x00", "\xbd\x00", + /* 0x00be */ "\xbe\x00", "\xbf\x00", "\xc1\x41", "\xc2\x41", "\xc3\x41", + /* 0x00c3 */ "\xc4\x41", "\xc8\x41", "\xca\x41", "\xe1\x00", "\xcb\x43", + /* 0x00c8 */ "\xc1\x45", "\xc2\x45", "\xc3\x45", "\xc8\x45", "\xc1\x49", + /* 0x00cd */ "\xc2\x49", "\xc3\x49", "\xc8\x49", "\xe2\x00", "\xc4\x4e", + /* 0x00d2 */ "\xc1\x4f", "\xc2\x4f", "\xc3\x4f", "\xc4\x4f", "\xc8\x4f", + /* 0x00d7 */ "\xb4\x00", "\xe9\x00", "\xc1\x55", "\xc2\x55", "\xc3\x55", + /* 0x00dc */ "\xc8\x55", "\xc2\x59", "\xec\x00", "\xfb\x00", "\xc1\x61", + /* 0x00e1 */ "\xc2\x61", "\xc3\x61", "\xc4\x61", "\xc8\x61", "\xca\x61", + /* 0x00e6 */ "\xf1\x00", "\xcb\x63", "\xc1\x65", "\xc2\x65", "\xc3\x65", + /* 0x00eb */ "\xc8\x65", "\xc1\x69", "\xc2\xe9", "\xc3\x69", "\xc8\x69", + /* 0x00f0 */ "\xf3\x00", "\xc4\x6e", "\xc1\x6f", "\xc2\x6f", "\xc3\x6f", + /* 0x00f5 */ "\xc4\x6f", "\xc8\x6f", "\xb8\x00", "\xf9\x00", "\xc1\x75", + /* 0x00fa */ "\xc2\x75", "\xc3\x75", "\xc8\x75", "\xc2\x79", "\xfc\x00", + /* 0x00ff */ "\xc8\x79", "\xc5\x41", "\xc5\x61", "\xc6\x41", "\xc6\x61", + /* 0x0104 */ "\xce\x41", "\xce\x61", "\xc2\x43", "\xc2\x63", "\xc3\x43", + /* 0x0109 */ "\xc3\x63", "\xc7\x43", "\xc7\x63", "\xcf\x43", "\xcf\x63", + /* 0x010e */ "\xcf\x44", "\xcf\x64", "\x00\x00", "\xf2\x00", "\xc5\x45", + /* 0x0113 */ "\xc5\x65", "\x00\x00", "\x00\x00", "\xc7\x45", "\xc7\x65", + /* 0x0118 */ "\xce\x45", "\xce\x65", "\xcf\x45", "\xcf\x65", "\xc3\x47", + /* 0x011d */ "\xc3\x67", "\xc6\x47", "\xc6\x67", "\xc7\x47", "\xc7\x67", + /* 0x0122 */ "\xcb\x47", "\xcb\x67", "\xc3\x48", "\xc3\x68", "\xe4\x00", + /* 0x0127 */ "\xf4\x00", "\xc4\x49", "\xc4\x69", "\xc5\x49", "\xc5\x69", + /* 0x012c */ "\x00\x00", "\x00\x00", "\xce\x49", "\xce\x69", "\xc7\x49", + /* 0x0131 */ "\xf5\x00", "\xe6\x00", "\xf6\x00", "\xc3\x4a", "\xc3\x6a", + /* 0x0136 */ "\xcb\x4b", "\xcb\x6b", "\xf0\x00", "\xc2\x4c", "\xc2\x6c", + /* 0x013b */ "\xcb\x4c", "\xcb\x6c", "\xcf\x4c", "\xcf\x6c", "\xe7\x00", + /* 0x0140 */ "\xf7\x00", "\xe8\x00", "\xf8\x00", "\xc2\x4e", "\xc2\x6e", + /* 0x0145 */ "\xcb\x4e", "\xcb\x6e", "\xcf\x4e", "\xcf\x6e", "\xef\x00", + /* 0x014a */ "\xee\x00", "\xfe\x00", "\xc5\x4f", "\xc5\x6f", "\x00\x00", + /* 0x014f */ "\x00\x00", "\xcd\x4f", "\xcd\x6f", "\xea\x00", "\xfa\x00", + /* 0x0154 */ "\xc2\x52", "\xc2\x72", "\xcb\x52", "\xcb\x72", "\xcf\x52", + /* 0x0159 */ "\xcf\x72", "\xc2\x53", "\xc2\x73", "\xc3\x53", "\xc3\x73", + /* 0x015e */ "\xcb\x53", "\xcb\x73", "\xcf\x53", "\xcf\x73", "\xcb\x54", + /* 0x0163 */ "\xcb\x74", "\xcf\x54", "\xcf\x74", "\xed\x00", "\xfd\x00", + /* 0x0168 */ "\xc4\x55", "\xc4\x75", "\xc5\x55", "\xc5\x75", "\xc6\x55", + /* 0x016d */ "\xc6\x75", "\xca\x55", "\xca\x75", "\xcd\x55", "\xcd\x75", + /* 0x0172 */ "\xce\x55", "\xce\x75", "\xc3\x57", "\xc3\x77", "\xc3\x59", + /* 0x0177 */ "\xc3\x79", "\xc8\x59", "\xc2\x5a", "\xc2\x7a", "\xc7\x5a", + /* 0x017c */ "\xc7\x7a", "\xcf\x5a", "\xcf\x7a" +/* + This table does not cover the following positions: + + 0x02c7 "\xcf\x20", + ... + 0x02d8 "\xc6\x20", "\xc7\x20", "\xca\x20", "\xce\x20", "\x00\x00", + 0x02dd "\xcd\x20", + ... + 0x2126 "\xe0\x00" + + These would blow up the table and are therefore handled specially in + the code. +*/ +}; + +/* Direction of the transformation. */ +enum direction +{ + illegal, + to_t61, + from_t61 +}; + +struct t61_data +{ + enum direction dir; +}; + + +int +gconv_init (struct gconv_step *step, struct gconv_step_data *data) +{ + /* Determine which direction. */ + struct t61_data *new_data; + enum direction dir; + int result; + + if (__strcasestr (step->from_name, "T.61") != NULL) + dir = from_t61; + else if (__strcasestr (step->to_name, "T.61") != NULL) + dir = to_t61; + else + dir = illegal; + + result = GCONV_NOCONV; + if (dir != illegal + && ((new_data + = (struct t61_data *) malloc (sizeof (struct t61_data))) + != NULL)) + { + new_data->dir = dir; + data->data = new_data; + result = GCONV_OK; + } + + return result; +} + + +void +gconv_end (struct gconv_step_data *data) +{ + free (data->data); +} + + +int +gconv (struct gconv_step *step, struct gconv_step_data *data, + const char *inbuf, size_t *inbufsize, size_t *written, int do_flush) +{ + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + gconv_fct fct = next_step->fct; + size_t do_write; + int result; + + /* If the function is called with no input this means we have to reset + to the initial state. The possibly partly converted input is + dropped. */ + if (do_flush) + { + do_write = 0; + + /* Call the steps down the chain if there are any. */ + if (data->is_last) + result = GCONV_OK; + else + { + struct gconv_step *next_step = step + 1; + struct gconv_step_data *next_data = data + 1; + + result = (*fct) (next_step, next_data, NULL, 0, written, 1); + + /* Clear output buffer. */ + data->outbufavail = 0; + } + } + else + { + enum direction dir = ((struct t61_data *) data->data)->dir; + + do_write = 0; + + do + { + result = GCONV_OK; + + if (dir == from_t61) + { + size_t inchars = *inbufsize; + size_t outwchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + + while (cnt < inchars + && (outwchars + sizeof (wchar_t) <= data->outbufsize)) + { + int inchar = inbuf[cnt]; + wchar_t ch; + + if (inchar >= '\xc1' && inchar <= '\xcf') + { + /* Composed character. First test whether the next + character is also available. */ + int inchar2; + + if (cnt + 1 >= inchars) + { + /* The second character is not available. Store + the intermediate result. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + + inchar2 = inbuf[++cnt]; + + if (inchar2 < '\x20' || inchar2 >= '\x80') + /* This is illegal. */ + ch = L'\0'; + else + ch = to_ucs4_comb[inchar - 0xc1][inchar2 - 0x20]; + } + else + ch = to_ucs4[inchar]; + + if (ch == L'\0' && inbuf[cnt] != '\0') + { + /* This is an illegal character. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + + *((wchar_t *) (outbuf + outwchars)) = ch; + ++do_write; + outwchars += sizeof (wchar_t); + ++cnt; + } + *inbufsize -= cnt; + data->outbufavail = outwchars; + } + else + { + size_t inwchars = *inbufsize; + size_t outchars = data->outbufavail; + char *outbuf = data->outbuf; + size_t cnt = 0; + int extra = 0; + + while (inwchars >= cnt + sizeof (wchar_t) + && outchars < data->outbufsize) + { + char tmp[2]; + int ch = *((wchar_t *) (inbuf + cnt)); + const char *cp; + + if (ch >= sizeof (from_ucs4) / sizeof (from_ucs4[0])) + { + if (ch == 0x2126) + cp = "\xe0"; + else if (ch == 0x2c7) + cp = "\xcf\x20"; + else if (ch < 0x2d8 || ch > 0x2dd) + /* Illegal characters. */ + break; + else + { + static const char map[5] = "\xc6\xc7\xca\xce\xcd"; + + tmp[0] = map[ch - 0x2d8]; + tmp[1] = ' '; + cp = tmp; + } + } + else if (ch < 0 || (from_ucs4[ch][0] == '\0' && ch != 0)) + break; + else + cp = from_ucs4[ch]; + + outbuf[outchars] = cp[0]; + /* Now test for a possible second byte and write this + if possible. */ + if (cp[1] != '\0') + { + if (outchars + 1 >= data->outbufsize) + { + /* The result does not fit into the buffer. */ + extra = 1; + break; + } + outbuf[++outchars] = cp[1]; + } + + ++do_write; + ++outchars; + cnt += sizeof (wchar_t); + } + *inbufsize -= cnt; + data->outbufavail = outchars; + + if (outchars + extra < data->outbufsize) + { + /* If there is still room in the output buffer something + is wrong with the input. */ + if (inwchars >= cnt + sizeof (wchar_t)) + { + /* An error occurred. */ + result = GCONV_ILLEGAL_INPUT; + break; + } + if (inwchars != cnt) + { + /* There are some unprocessed bytes at the end of the + input buffer. */ + result = GCONV_INCOMPLETE_INPUT; + break; + } + } + } + + if (result != GCONV_OK) + break; + + if (data->is_last) + { + /* This is the last step. */ + result = (*inbufsize > (dir == from_t61 + ? 0 : sizeof (wchar_t) - 1) + ? GCONV_FULL_OUTPUT : GCONV_EMPTY_INPUT); + break; + } + + /* Status so far. */ + result = GCONV_EMPTY_INPUT; + + if (data->outbufavail > 0) + { + /* Call the functions below in the chain. */ + size_t newavail = data->outbufavail; + + result = (*fct) (next_step, next_data, data->outbuf, &newavail, + written, 0); + + /* Correct the output buffer. */ + if (newavail != data->outbufavail && newavail > 0) + { + memmove (data->outbuf, + &data->outbuf[data->outbufavail - newavail], + newavail); + data->outbufavail = newavail; + } + } + } + while (*inbufsize > 0 && result == GCONV_EMPTY_INPUT); + } + + if (written != NULL && data->is_last) + *written = do_write; + + return result; +} |