]> granicus.if.org Git - recode/commitdiff
Version 3.5a v3.5a
authorFrançois Pinard <pinard@iro.umontreal.ca>
Fri, 18 Jan 2008 20:10:18 +0000 (15:10 -0500)
committerFrançois Pinard <pinard@iro.umontreal.ca>
Fri, 18 Jan 2008 20:10:18 +0000 (15:10 -0500)
144 files changed:
BACKLOG
ChangeLog
Makefile.am
Makefile.in
NEWS
README
README-alpha [new file with mode: 0644]
THANKS
TODO
acconfig.h
acinclude.m4 [new file with mode: 0644]
aclocal.m4
config.guess
config.h.in
config.sub
configure
configure.in
contrib/Makefile.in
contrib/README
doc/ChangeLog
doc/Makefile.am
doc/Makefile.in
doc/Makemore
doc/charset.texi
doc/help2man
doc/recode.info
doc/recode.info-1
doc/recode.info-2
doc/recode.info-3
doc/recode.info-4
doc/recode.info-5
doc/recode.info-6 [new file with mode: 0644]
doc/recode.texi
doc/stamp-vti
doc/tables.pl [deleted file]
doc/tables.py [new file with mode: 0755]
doc/version.texi
i18n/ChangeLog [moved from po/ChangeLog with 74% similarity]
i18n/Makefile.am [new file with mode: 0644]
i18n/Makefile.in [new file with mode: 0644]
i18n/da.mo [moved from po/da.gmo with 100% similarity]
i18n/da.po [moved from po/da.po with 100% similarity]
i18n/de.mo [new file with mode: 0644]
i18n/de.po [moved from po/de.po with 78% similarity]
i18n/el.mo [new file with mode: 0644]
i18n/el.po [new file with mode: 0644]
i18n/es.mo [moved from po/es.gmo with 100% similarity]
i18n/es.po [moved from po/es.po with 100% similarity]
i18n/fr.mo [moved from po/fr.gmo with 93% similarity]
i18n/fr.po [moved from po/fr.po with 98% similarity]
i18n/it.mo [new file with mode: 0644]
i18n/it.po [new file with mode: 0644]
i18n/nl.mo [moved from po/nl.gmo with 100% similarity]
i18n/nl.po [moved from po/nl.po with 100% similarity]
i18n/pl.mo [new file with mode: 0644]
i18n/pl.po [moved from po/pl.po with 68% similarity]
i18n/pt.mo [moved from po/pt.gmo with 100% similarity]
i18n/pt.po [moved from po/pt.po with 100% similarity]
i18n/recode.pot [moved from po/recode.pot with 97% similarity]
i18n/sl.mo [moved from po/sl.gmo with 100% similarity]
i18n/sl.po [moved from po/sl.po with 100% similarity]
i18n/sv.mo [moved from po/sv.gmo with 50% similarity]
i18n/sv.po [moved from po/sv.po with 80% similarity]
intl/ChangeLog [deleted file]
intl/Makefile.in [deleted file]
intl/VERSION [deleted file]
intl/bindtextdom.c [deleted file]
intl/cat-compat.c [deleted file]
intl/dcgettext.c [deleted file]
intl/dgettext.c [deleted file]
intl/explodename.c [deleted file]
intl/finddomain.c [deleted file]
intl/gettext.c [deleted file]
intl/gettext.h [deleted file]
intl/gettextP.h [deleted file]
intl/hash-string.h [deleted file]
intl/intl-compat.c [deleted file]
intl/l10nflist.c [deleted file]
intl/linux-msg.sed [deleted file]
intl/loadinfo.h [deleted file]
intl/loadmsgcat.c [deleted file]
intl/localealias.c [deleted file]
intl/po2tbl.sed.in [deleted file]
intl/textdomain.c [deleted file]
intl/xopen-msg.sed [deleted file]
lib/ChangeLog
lib/Makefile.am
lib/Makefile.in
lib/alloca.c [new file with mode: 0644]
lib/gettext.c [new file with mode: 0644]
lib/gettext.h [moved from intl/libgettext.h with 94% similarity]
lib/malloc.c [new file with mode: 0644]
lib/realloc.c [new file with mode: 0644]
ltconfig
ltmain.sh
m4/ChangeLog
m4/Makefile.am
m4/Makefile.in
m4/gettext.m4 [moved from m4/nls.m4 with 52% similarity]
po/Makefile.in.in [deleted file]
po/POTFILES.in [deleted file]
po/cat-id-tbl.c [deleted file]
po/de.gmo [deleted file]
po/pl.gmo [deleted file]
po/stamp-cat-id [deleted file]
src/ChangeLog
src/Makefile.am
src/Makefile.in
src/african.c
src/atarist.c
src/base64.c
src/charname.h
src/combine.c
src/decsteps.h
src/fr-charname.h
src/html.c
src/inisteps.h
src/main.c
src/merged.c
src/mergelex.awk [deleted file]
src/mergelex.py [new file with mode: 0644]
src/outer.c
src/quoted.c
src/recode.1 [moved from doc/recode.1 with 88% similarity]
src/recode.c
src/recode.h
src/recodext.h
src/rfc1345.h
src/strip-data.c
src/strip-pool.c
src/vn.c [new file with mode: 0644]
tests/ChangeLog
tests/Makefile.am
tests/Makefile.in
tests/african.m4
tests/atconfig.in
tests/atgeneral.m4
tests/base64.m4
tests/bigauto.sh
tests/dumps.m4
tests/names.m4
tests/suite.m4
tests/testsuite
tests/utf7.m4

diff --git a/BACKLOG b/BACKLOG
index 5a77e2f198a41124cff3210fdf3f6e7163915379..a4180b60f671c6ca5975d4372bc7dfe6f57e2f6a 100644 (file)
--- a/BACKLOG
+++ b/BACKLOG
@@ -1,5 +1,5 @@
-# Summary of pending email for Free recode 3.5.
-# Last updated on 1999-06-01.
+# Summary of pending email for Free recode 3.5a.
+# Last updated on 1999-12-20.
 
 # This file summarises almost all pending email pertaining to this package.
 # I think users deserve to know where maintenance stands for what they use.
 # When diffs have been provided, an asterisk sometimes replaces the initial
 # dot.  All dates are written according to ISO 8601, as far as possible.
 
-../rmail/auto-detect
- 1. 1997-12-09 François Pinard: Re: recode
- 2. 1997-12-09 Milivoj Ivkovic: Re: recode
- 3. 1998-07-01 Sam: Re: au secour!
- 4. 1996-01-13 DiDakDok,IVC: Decodage MIME
-
-../rmail/backup
- 1. 1994-03-09 Nicolas Anquetil: recode
- 2. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1
+../rmail/compilation
+ 1. 1999-08-25 François Pinard: Re: recode compile problem
+ 2. 1997-12-26 François Pinard: recode sur raptor
+ 3. 1999-06-23 Bruno Haible: recode installation on Solaris
+ 4. 1999-12-13 Tom Hageman: Re: recode-3.5 on NEXTSTEP, OPENSTEP and MacOS X Se
+ 5. 1998-05-17 Jim Meyering: Re: easing acconfig.h maintenance: utimbuf.m4
+ 6. 1999-12-17 Tom Hageman: Re: recode-3.5 on NEXTSTEP, OPENSTEP and MacOS X Se
+ 7. 1999-12-19 François Pinard: recode juste =?iso-8859-1?q?apr=E8s?= modifs do
+
+../rmail/configuration
+ 1. 1999-12-15 François Pinard: libtool.m4 and aclocal
+ 2. 1999-12-15 Jim Meyering: Re: libtool.m4 and aclocal
+ 3. 1999-12-15 Akim Demaille: Re: libtool.m4 and aclocal
+ 4. 1999-12-15 Tom Tromey: Re: libtool.m4 and aclocal
+
+../rmail/gettext
+ 1. 1999-07-05 Bruno Haible: recode-3.5 installation problem
+ 2. 1999-07-14 Eric Siegerman: Recode 3.5 w/NLS doesn't link on Solaris 2.5.1
+ 3. 1999-04-02 Laurent Bourbeau: Recode 3.4q - bug-1
+ 4. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 6
+ 5. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 7
+ 6. 1997-12-02 Fran\81çois Pinard: [Eric Backus <ericb@labejb.lsid.hp.com>] recod
+ 7. 1997-12-09 Fran\81çois Pinard: Re: recode 3.4e pretest
+ 8. 1998-11-09 Alain Magloire: recode on Solaris
+
+../rmail/lex
+ 1. 1998-04-06 Tom Tromey: Re: I want flex, not lex!
+ 2. 1998-04-07 Akim Demaille: Re: I want flex, not lex!
+ 3. 1998-04-07 Akim Demaille: Re: I want flex, not lex!
 
-../rmail/doc-hexa
- 1. 1998-10-14 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
- 2. 1998-10-14 Francois Yergeau: Re: Pour ceux qui ont le temps de lire... Cadr
- 3. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
- 4. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
+../rmail/libtool
+ 1. 1997-12-16 Erick Branderhorst: recode and ltmain.sh on solaris 2.6
+ 2. 1998-01-07 Erick Branderhorst: recode-3.4g is not compiling properly becaus
+ 3. 1998-02-23 Jim Meyering: Re: Installing fileutils 3.16m on icule
+ 4. 1998-03-24 Larry W. Virden, x2487: problems building recode 3.4f
+ 5. 1998-10-21 François Pinard: Re: Some paxutils issues
+ 6. 1999-04-02 François Pinard: recode 3.4q - testing difficulties
+ 7. 1999-04-03 Alexandre Oliva: Re: recode 3.4q - testing difficulties
+ 8. 1999-12-12 Tom Hageman: recode-3.5 on NEXTSTEP, OPENSTEP and MacOS X Server
+ 9. 1999-09-16 Daniel Ouimet: Re: probleme avec recode
+10. 1998-07-21 François Pinard: Re: recode: lat1html.c
+11. 1998-07-21 Wiel: recode: lat1html.c
+12. 1998-12-27 François Pinard: recode - dynlibs
 
-../rmail/emacs
+../admin/rmail/emacs
  1. 1998-05-12 François Pinard: Emacs 20.2.93 - lisp/format.el and recode
 
-../rmail/legalese
+../admin/rmail/jitterbug
+ 1. 1997-12-28 Jim Meyering: rsync: a neat tool
+ 2. 1999-08-03 François Pinard: Bug tracking
+ 3. 1999-08-03 David Ascher: FYI: CareTracker from LinuxCare
+ 4. 1999-10-18 Barry A. Warsaw: Re: Adding info to Python Buglist
+ 5. 1999-10-16 Jason Trowbridge: Re: Adding info to Python Buglist
+ 6. 1999-10-17 Hrvoje Niksic: Re: Adding info to Python Buglist
+ 7. 1999-10-18 Jason Trowbridge: Re: Adding info to Python Buglist
+
+../admin/rmail/legalese
  1. 1997-11-24 Richard Stallman: Re: License for recode
  2. 1999-01-30 Richard Stallman: Why you shouldn't use the Library GPL for your
- 3. 1999-03-19 Bob Friesenhahn: Re: libltdl license?
 
-../rmail/library
- 1. 1995-12-06 Per Bothner: Re: Internationalization resources?
- 2. 1996-05-29 Ulrich Drepper: librecode, again
- 3. 1997-10-14 Ulrich Drepper: Re: librecode
+../admin/rmail/list-admin
+ 1. 1999-07-20 Mail Delivery Subsystem: Returned mail: Can't create output
+ 2. 1999-07-20 Mail Delivery Subsystem: Returned mail: Can't create output
+ 3. 1999-06-02 Mail Delivery Subsystem: Returned mail: User unknown
 
-../rmail/list-announce
+../admin/rmail/list-announce
  1. 1994-10-31 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.3.2
  2. 1994-11-06 pinard@iro.umontreal.ca: Release: GNU recode 3.4
  3. 1994-12-01 pinard@IRO.UMontreal.CA: Prerelease: GNU recode 3.4.1
 24. 1999-04-29 François Pinard: Executable of `recode' for DOSWIN
 25. 1999-01-16 François Pinard: Playing with implied surfaces
 26. 1999-05-18 François Pinard: Prerelease: Free recode 3.4r
-
-../rmail/listing
- 1. 1993-12-21 Martin Maechler: Re: Prerelease: GNU recode version 3.2.10
- 2. 1993-12-21 Francois Pinard: Prerelease: GNU recode version 3.2.10
- 3. 1993-02-10 Patrik F{ltstr|m: Re: transcription iso-8859-1 to us-ascii?
- 4. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available
- 5. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available
- 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding
-
-../rmail/mixed
- 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode
- 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available
- 3. 1995-02-28 Francois Pinard: UUPC
- 4. 1995-03-11 Scott Nelson: ISO-8859-X email test
- 5. 1995-03-16 Martin Wendel: ANNOUNCE: emil-2.0.5 released
- 6. 1995-07-05 François Pinard: Re: Retour !
- 7. 1995-07-25 David Collier-Brown: Early announcement: Mime-witing library
- 8. 1996-03-02 François Pinard: Re: Présentation de Ulrich Drepper!
- 9. 1996-06-09 François Pinard: Re: About recode
-10. 1997-10-30 =?iso-8859-1?Q?G=E9rald_St=2DArneault_=3Cstarneag=40grics.qc.ca=
-
-../rmail/moteur
- 1. 1999-04-18 François Pinard: -lf et ibmpc ?
- 2. 1999-04-14 François Pinard: recode - IBM-PC
- 3. 1999-04-03 Laurent Bourbeau: Recode 3.4q - Bug 5
- 4. 1999-04-02 François Pinard: =?iso-8859-1?q?Probl=E8me?= recode
-
-../rmail/multext
- 1. 1996-05-24 Jean Ve'ronis: Soft: MtScript (Multilingual editor)
- 2. 1996-06-17 Jean Ve'ronis: Free Soft: MtStr - Multilingual string library
- 3. 1996-06-20 Jean Ve'ronis: Free Soft: MtRecode - Character conversion progra
- 4. 1996-08-29 Malek BOUALEM -- UNIVERSITE: Brief Introduction of the LPL
- 5. 1996-09-05 Malek BOUALEM -- UNIVERSITE: Re: Introduction of LPL/MULTEXT/MTS
- 6. 1997-12-10 Jean Veronis: Re: Citation de MtRecode
-
-../rmail/notation
- 1. 1997-08-06 Ulrich Drepper: Re: charset names
-
-../rmail/relecture
+27. 1999-06-01 François Pinard: Release: Free recode 3.5
+28. 1999-06-06 François Pinard: Release: Free recode 3.5
+
+../admin/rmail/port-doswin
+ 1. 1998-02-18 Eli Zaretskii: Re: Integrating your diffs
+ 2. 1998-02-26 Eli Zaretskii: Re: Snapshot of `tar' sources
+ 3. 1998-02-26 François Pinard: Re: Snapshot of `tar' sources
+ 4. 1998-03-01 Eli Zaretskii: Re: tar 1.12a
+ 5. 1998-03-01 Eli Zaretskii: Re: Snapshot of `tar' sources
+ 6. 1998-03-09 Eli Zaretskii: Re: Snapshot of `tar' sources
+ 7. 1998-03-22 Eli Zaretskii: File name quoting in Tar
+ 8. 1998-04-05 Tom Tromey: Re: AM_CONFIG_HEADER ignores directories
+ 9. 1998-11-10 François Pinard: Re: Snapshot of `tar' sources
+10. 1998-11-21 Jim Meyering: Re: Textutils 1.22d ported to DJGPP
+11. 1998-11-22 Eli Zaretskii: Re: `tar' modifs in `lib/'
+12. 1998-11-22 Eli Zaretskii: Re: msdos version of tar
+13. 1998-11-22 Eli Zaretskii: Re: Textutils 1.22d ported to DJGPP
+14. 1998-12-06 Eli Zaretskii: Re: GNU Emacs port to Solaris 7 (sparc, 64-bit)
+15. 1999-02-15 Eli Zaretskii: Re: gettext.m4 and absolute file names
+16. 1999-03-30 Eli Zaretskii: Re: GNU configur.bat
+17. 1999-03-30 Eli Zaretskii: Re: GNU configur.bat
+18. 1999-04-13 François Pinard: Re: ... and paxutils
+19. 1999-04-13 Eli Zaretskii: Re: ... and paxutils
+20. 1999-04-15 François Pinard: DJGPP rm possible bug
+21. 1999-04-18 Eli Zaretskii: Re: DJGPP rm possible bug
+22. 1999-05-06 Eli Zaretskii: Re: GNU sed or equivalent on Windows NT4?
+23. 1999-05-09 Eli Zaretskii: Re: Automatic expansion of environment variables
+24. 1999-05-16 Alain Magloire: Re: Automatic expansion of environment variables
+25. 1999-05-18 Eli Zaretskii: Re: Automatic expansion of environment variables
+26. 1999-05-18 Alain Magloire: Re: Automatic expansion of environment variables
+27. 1999-05-19 Eli Zaretskii: Re: Automatic expansion of environment variables
+28. 1999-05-26 Alain Magloire: v2.04 (was Re: Automatic ...)
+29. 1999-07-01 François Pinard: Re: ["Uwe Brauer" <oub@eucmos.sim.ucm.es>] hebr
+30. 1999-08-08 Ian Lance Taylor: [eliz@is.elta.co.il: Re: Problems building Bin
+31. 1999-08-08 Mark E.: Re: [eliz@is.elta.co.il: Re: Problems building Binutils
+32. 1998-03-26 Fran\81çois Pinard: Re: find reco dos executable
+33. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update
+34. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update
+35. 1998-11-24 François Pinard: Re: recode for Amiga - 3.4k update
+36. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k
+37. 1998-11-25 Eli Zaretskii: libtool+shell [was: Re: recode for Amiga - 3.4k u
+38. 1998-11-25 Eli Zaretskii: Perl [was: Re: recode for Amiga - 3.4k update]
+39. 1998-11-25 Eli Zaretskii: EOLs [was: Re: recode for Amiga - 3.4k update]
+40. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k
+41. 1998-11-25 Eli Zaretskii: Intro [was: Re: recode for Amiga - 3.4k update]
+42. 1998-11-30 Eli Zaretskii: Re: New -Spo option to `recode'
+43. 1999-01-31 Matt Armstrong: Re: Cygwin, make install and .exe
+44. 1999-02-15 Eli Zaretskii: Re: gettext.m4 and absolute file names
+45. 1999-04-10 Robert S. Maier: automake problems DJGPP
+46. 1999-04-10 Alexandre Oliva: Re: automake problems DJGPP
+47. 1999-04-13 Eli Zaretskii: Re: ... and paxutils
+48. 1999-04-12 Eli Zaretskii: Re: Playing with DJGPP again
+49. 1999-04-12 Eli Zaretskii: Re: Playing with DJGPP again
+50. 1999-04-15 François Pinard: recode on DJGPP
+51. 1999-06-01 François Pinard: Re: POT file for recode 3.4r now being uploaded
+52. 1999-06-02 François Pinard: Re: POT file for recode 3.4r now being uploaded
+53. 1999-06-03 Eli Zaretskii: Re: POT file for recode 3.4r now being uploaded
+54. 1999-12-14 Eli Zaretskii: Re: `recode' and DJGPP
+55. 1999-12-14 François Pinard: Re: `recode' and DJGPP
+56. 1999-02-07 Jim Meyering: Re: gettext.m4 and absolute file names
+
+../admin/rmail/port-winNT
+ 1. 1998-02-09 Paul E. Jones: Tar-1.12 on Windows NT
+ 2. 1998-02-09 François Pinard: Re: Tar-1.12 on Windows NT
+ 3. 1998-02-09 Eli Zaretskii: Re: Tar-1.12 on Windows NT
+ 4. 1998-02-11 Eli Zaretskii: Re: Tar-1.12 on Windows NT
+ 5. 1998-02-11 Eli Zaretskii: Re: Tar-1.12 on Windows NT
+ 6. 1998-02-11 Paul E. Jones: Re: Tar-1.12 on Windows NT
+ 7. 1998-02-12 Eli Zaretskii: Re: Tar-1.12 on Windows NT
+ 8. 1998-02-12 Eli Zaretskii: Re: [comp.windows.x.apps] Re: Making PC like UNIX
+ 9. 1998-02-24 Paul E. Jones: Re: Tar-1.12 on Windows NT
+10. 1998-03-05 François Pinard: Re: Tar-1.12 on Windows NT
+11. 1998-03-05 Eli Zaretskii: Re: Tar-1.12 on Windows NT
+12. 1998-03-08 Eli Zaretskii: Re: Tar-1.12 on Windows NT
+13. 1998-03-09 Paul E. Jones: Re: Tar-1.12 on Windows NT
+14. 1998-03-22 Eli Zaretskii: Re: [pinard@icule.progiciels-bpi.ca: Re: Prerelea
+15. 1998-03-27 François Pinard: Keeping copies of your binaries
+16. 1998-03-29 Paul E. Jones: Re: Keeping copies of your binaries
+17. 1998-03-29 Eli Zaretskii: Re: Keeping copies of your binaries
+
+../admin/rmail/relecture
  1. 1999-01-01 François Pinard: R\81éf\81érences de l'IANA sur les jeux de caract\81è
  2. 1999-01-01 François Pinard: D'autre r\81éf\81érences
  3. 1999-01-13 Ulrich Drepper: wanna read?
  8. 1999-04-23 Olivier Tharan: Re: =?iso-8859-1?Q?Manuel_fran=E7ais_pour_recode
  9. 1999-04-27 François Pinard: Re: Manuel =?iso-8859-1?q?fran=E7ais?= pour rec
 
-../rmail/speed
- 1. 1999-01-22 Andreas Schwab: Re: iconv changes
- 2. 1999-01-22 Ulrich Drepper: Re: iconv changes
-
-../rmail/charsets/1252
+../asian/rmail/2022
+ 1. 1994-08-26 David Williss: Unicode to ISO-2022
+ 2. 1994-08-27 Martin J. Duerst: Re: Unicode to ISO-2022
+ 3. 1994-12-15 Haruhiko Nishida: Re: HTML in Unicode?
+ 4. 1994-12-16 John B. Melby: Re: HTML in Unicode?
+ 5. 1995-07-31 morioka@jaist.ac.jp (=?ISO-2022-JP?B?GyRCPGkyLBsoQiAbJEJDTkknGyh
+ 6. 1994-09-02 Erik Naggum: Re: CDRA
+ 7. 1997-02-06 François Pinard: Re: flex-2.5.2.ko.po
+ 8. 1997-08-09 Kenichi Handa: Re: Learning more about MULE
+ 9. 1997-01-19 Alain LaBont/e'/: Re: switching ISO 2022 <-> Unicode
+10. 1997-08-06 Martin J. Duerst: Re: charset names
+11. 1997-09-02 Ulrich Drepper: Re: librecode, libc, gettext
+12. 1997-10-08 Martin J. Dürst: Re: librecode, libc, gettext
+13. 1997-10-07 Martin J. Dürst: Re: librecode, libc, gettext
+14. 1997-10-08 Keld J|rn Simonsen: Re: librecode, libc, gettext
+15. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext
+16. 1995-03-14 John B. Melby: Re: Unicode/ISO-10646/TRON/MULE/MCS for multiling
+17. 1990-06-29 Robert Claeson: Re: Int'l Character set (Was: Re: filen
+18. 1997-11-13 Duane Ellis: (none)
+19. 1997-11-14 Werner Lemberg: Re: your mail
+20. 1995-04-07 Kari E. Hurtta: 8-bit charset in C1-C3 banks (Re: DO use ESC [ 1
+21. 1997-11-14 Jungshik Shin: Re: unicode <-> iso-2022
+22. 1997-07-29 Oum Sang-il: clipboard encoding
+23. 1994-10-05 Erik Naggum: Re: Shift-JIS (was Re: multilingual HTML, SGML docu
+24. 1994-10-07 G. Ken Holman: Re: more on Japanese SGML, Ken Lunde & ISO 2022
+25. 1995-04-26 Chiaki Ishikawa: Re: 7 bit mail in 1992 still?
+26. 1998-03-09 Alain LaBonté : Canadian contribution objecting against future u
+27. 1997-11-14 Jungshik Shin: Re: unicode <-> iso-2022
+28. 1999-01-16 Shinya Hanataka: ISO-2022-JP-2 latin character encode bug
+29. 1999-01-16 Ulrich Drepper: Re: ISO-2022-JP-2 latin character encode bug
+30. 1999-01-16 Shinya Hanataka: ISO-2022-JP-2 latin character encode bug
+31. 1999-01-16 Ulrich Drepper: Re: ISO-2022-JP-2 latin character encode bug
+32. 1992-06-09 Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=: Re: How to see J
+33. 1999-07-13 lal@cs.ucdavis.edu: Japanese character conversion tools
+34. 1999-05-05 Frank da Cruz: Re: Can someone provide an explanation ?
+35. 1999-06-09 Hrvoje Niksic: ISO 2022 support
+36. 1999-08-17 François Pinard: Re: ISO 2022 support
+37. 1999-08-17 François Pinard: Re: ISO 2022 support
+38. 1999-08-24 Hrvoje Niksic: Re: ISO 2022 support
+39. 1999-08-24 François Pinard: Re: ISO 2022 support
+40. 1999-08-24 Hrvoje Niksic: Re: ISO 2022 support
+41. 1992-06-09 Yutaka Sato =?ISO-2022-JP?B?GyRAOjRGI0stGyhK?=: Re: How to see J
+42. 1997-03-28 Ulrich Drepper: Re: Re: Character set conversion API for libc
+43. 1997-03-28 Jake Morrison: Re: Re: Character set conversion API for libc
+44. 1997-09-11 Kenichi Handa: Re: RMAIL and coding system (Re: file name coding
+45. 1997-09-18 Martin J. Dürst: Re: RMAIL and coding system (Re: file name codi
+
+../asian/rmail/aides
+ 1. 1997-12-02 Jake Morrison: Re: Character set conversion API for libc
+ 2. 1997-12-08 François Pinard: Re: unicode <-> hex converter (fwd)
+ 3. 1997-12-08 François Pinard: Re: help
+ 4. 1998-03-23 François Pinard: Re: tar bugs with -g and -G
+ 5. 1998-03-24 Greg HERMAN: Re: tar bugs with -g and -G
+ 6. 1997-04-10 François Pinard: Re: unicode <-> hex converter (fwd)
+
+../asian/rmail/auto-recognition
+ 1. 1998-07-04 MORIOKA Tomohiko: Re: EMH 1.8.1
+ 2. 1998-07-04 Olivier Lecarme: Re: EMH 1.8.1
+ 3. 1999-12-18 Bruno Haible: Re: suggestion ridicule pour recode
+
+../asian/rmail/chinese
+ 1. 1993-07-22 Pierre Mailhot: Annonce: nouveaux utilitaires "chinois" sur sagu
+ 2. 1993-07-23 Qiang Ming Tan: How to use Chinese tools
+ 3. 1993-08-04 Richard Turmel: Annonce sur lude-iro
+ 4. 1994-11-21 L.S.Ng: Internationalisation vs. Native Development & Chinese WW
+ 5. 1995-01-21 Bow-Yaw Wang: Introducing CEF (Chinese Encoding Framework)
+ 6. 1995-05-01 ywliu@beta.wsl.sinica.edu.tw: Re: glocale info
+ 7. 1996-03-29 Pierre Zweigenbaum: Q: Chinese: GB-2312 or BIG-5?
+ 8. 1996-04-17 Pierre Zweigenbaum: R: Chinese: GB-2312 or BIG-5?
+ 9. 1997-02-25 Ya-Gui Wei: [INFO] How to Read Chinese Text on Usenet: FAQ for a
+10. 1997-05-05 John Clews: East Asian librarians voted for the pinyin system (f
+11. 1997-12-01 Richard Stallman: Chinese translation of the GNU Manifesto
+12. 1998-03-24 Greg HERMAN: Re: tar bugs with -g and -G
+13. 1998-03-24 Greg HERMAN: Re: tar bugs with -g and -G
+14. 1999-05-11 Ulrich Drepper: Re: Question on GB encoding in glibc-2.1.X
+15. 1999-05-12 Tung-Han Hsieh: Re: Question on GB encoding in glibc-2.1.X
+16. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext
+17. 1997-12-16 Pofeng Lee: Re: help
+
+../asian/rmail/chinese-big5
+ 1. 1995-08-07 Jyh-Shyang Wang: Re: Problem about compile tar on Ultrix...
+ 2. 1997-07-25 Pofeng Lee: Re: help
+ 3. 1997-12-08 Kenichi Handa: [rms@santafe.edu: Chinese translation of the GNU
+ 4. 1997-10-19 PILCH Hartmut: Hanja-Big5 conversion table
+ 5. 1997-10-20 Jason Molenda: Re: Hanja-Big5 conversion table
+ 6. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table
+ 7. 1997-10-20 Martin J. Dürst: Re: Hanja-Big5 conversion table
+ 8. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table
+ 9. 1997-10-21 Martin J. Dürst: Re: Hanja-Big5 conversion table
+10. 1997-10-21 Mark Leisher: Re: Hanja-Big5 conversion table
+11. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table
+12. 1997-10-20 Martin J. Dürst: Re: Hanja-Big5 conversion table
+13. 1997-10-20 Werner Lemberg: Re: Hanja-Big5 conversion table
+14. 1997-10-20 Jason Molenda: Re: Hanja-Big5 conversion table
+15. 1999-04-05 Tung-Han Hsieh: The zh_TW.Big5 locale data
+16. 1999-11-29 Angelo Borsotti: iconv Big5 incorrect decoding
+
+../asian/rmail/han-unification
+ 1. 1995-12-05 Per Bothner: Re: Internationalization resources?
+ 2. 1995-12-26 Per Bothner: Issues in Internationalizing Guile, Scheme, and Ema
+ 3. 1995-12-27 Richard Stallman: Re: Issues in Internationalizing Guile, Scheme
+ 4. 1995-12-27 Per Bothner: Re: Issues in Internationalizing Guile, Scheme, and
+ 5. 1995-12-28 Richard Stallman: Re: Issues in Internationalizing Guile, Scheme
+ 6. 1995-12-31 Per Bothner: emacs implications of Guile internationalization
+ 7. 1997-07-27 Ulrich Drepper: Re: Trying Emacs 20
+ 8. 1996-01-04 Per Bothner: Re: New Mule
+ 9. 1997-07-28 Pofeng Lee: Re: help
+10. 1996-11-27 unicode@Unicode.ORG: Re: Information on new unihan characters?
+11. 1995-03-16 John B. Melby: Re: Unicode/ISO-10646/TRON/MULE/MCS for multiling
+12. 1995-03-27 Martin J. Duerst: Re: Unicode/ISO-10646/TRON/MULE/MCS for multil
+13. 1997-10-31 Martin J. Dürst: Re: librecode, libc, gettext
+14. 1997-10-31 François Pinard: Re: librecode, libc, gettext
+15. 1997-10-31 Martin J. Dürst: Re: librecode, libc, gettext
+16. 1995-03-16 Glenn A. Adams: Re: Unicode/ISO-10646/TRON/MULE/MCS for multilin
+17. 1998-09-08 Alain LaBonté : Re: Projet de rapport de liaison entre ISO/CEI J
+18. 1998-03-17 Alain LaBonté : Compréhension du problème japonais pour le jeu u
+19. 1996-01-05 Fran\81çois Pinard: Re: 8bit clean perl? (fwd)
+20. 1998-09-09 Alain LaBont\81é\81 : Re: Projet de rapport de liaison entre ISO/IEC
+
+../asian/rmail/help
+ 1. 1998-12-04 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i
+ 2. 1998-12-07 François Pinard: Re: Prerelease: GNU recode 3.4i
+ 3. 1998-12-10 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i
+ 4. 1998-12-10 François Pinard: Re: Prerelease: GNU recode 3.4i
+ 5. 1998-12-18 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i
+
+../asian/rmail/iconv
+ 1. 1998-12-08 hanataka@abyss.rim.or.jp: gconv/iconv bugs about japanese charac
+ 2. 1998-12-08 Ulrich Drepper: Re: gconv/iconv bugs about japanese character co
+ 3. 1999-01-22 Andreas Schwab: Re: iconv changes
+ 4. 1999-05-06 Rick Jelliffe: Improvement to libc iconv for East Asian text: lo
+ 5. 1999-07-23 Changwoo Ryu: iconv() utf8 -> euc-kr bug.
+ 6. 1999-12-10 Bruno Haible: iconv program produces invalid output
+ 7. 1999-12-10 Ulrich Drepper: Re: iconv program produces invalid output
+ 8. 1999-12-11 Andrew Clausen: iconv() and UCS4 endianness
+ 9. 1999-12-11 Ulrich Drepper: Re: iconv() and UCS4 endianness
+10. 1999-12-11 Andrew Clausen: Re: iconv() and UCS4 endianness
+11. 1999-12-09 Bruno Haible: Re: cjk.tgz, iconv, transliterations
+12. 1999-12-09 François Pinard: Re: cjk.tgz, iconv, transliterations
+13. 1999-12-09 Bruno Haible: Re: cjk.tgz, iconv, transliterations
+14. 1999-12-09 François Pinard: Re: cjk.tgz, iconv, transliterations
+15. 1999-12-09 Bruno Haible: Re: cjk.tgz, iconv, transliterations
+16. 1999-12-06 François Pinard: Re: disclaimers
+17. 1999-12-06 assignments: Re: disclaimers
+18. 1999-12-06 assignments: Re: disclaimers
+19. 1999-12-12 François Pinard: Re: cjk.tgz, iconv, transliterations
+20. 1999-12-06 Bruno Haible: Re: disclaimers
+21. 1999-09-07 Bruno Haible: Re: [loic@ceic.com] Unicode: Toward a standard lib
+22. 1999-09-07 François Pinard: Re: [loic@ceic.com] Unicode: Toward a standard
+23. 1999-09-08 Bruno Haible: Re: [loic@ceic.com] Unicode: Toward a standard lib
+24. 1999-09-13 Bruno Haible: cjk.tgz
+25. 1999-09-08 François Pinard: Re: none
+26. 1999-09-08 Bruno Haible: Re: cjk.tgz
+27. 1999-09-15 François Pinard: Re: cjk.tgz
+28. 1999-12-13 Bruno Haible: Re: cjk.tgz, iconv, transliterations
+29. 1999-12-13 François Pinard: Re: cjk.tgz, iconv, transliterations
+30. 1999-12-13 Andrew Clausen: Memory leaks in iconv_open() / iconv_close()
+31. 1999-12-15 Bruno Haible: Re: cjk.tgz, iconv, transliterations
+
+../asian/rmail/japanese
+ 1. 1995-04-25 Ryutaro Susukita: Re: tar-1.11.2 SunOS-4.1.3 JLE-1.1.3 segmentai
+ 2. 1995-04-26 International List: Re: International mailings/recodings
+ 3. 1996-04-08 Chiaki Ishikawa: Re: Notes to translators of GNU packages
+ 4. 1997-08-04 Yoshihiko Mori: Re: [Q] height and witdh of Emacs initial window
+ 5. 1997-08-06 Alain LaBont\i - SCT: Classement... « alphabétique »
+ 6. 1997-12-02 Ulrich Drepper: Re: Character set conversion API for libc
+ 7. 1997-12-02 Jake Morrison: Re: Character set conversion API for libc
+ 8. 1997-12-03 Ulrich Drepper: Re: Character set conversion API for libc
+ 9. 1997-12-03 Jake Morrison: Re: Character set conversion API for libc
+10. 1998-02-09 =?iso-2022-jp?B?GyRCRiM4NhsoQg==?= =?iso-2022-jp?B?GyRCQD8bKEI=?
+11. 1998-04-02 Uma Umamaheswaran: 10646 and Japanese
+12. 1996-07-05 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po
+13. 1996-07-05 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po
+14. 1996-07-08 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po
+15. 1996-07-08 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po
+16. 1996-07-10 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po
+17. 1996-07-10 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po
+18. 1996-07-15 SAKAI Kiyotaka: Re: About sharutils-4.2.1.ja_JP.EUC.po
+19. 1996-07-15 NIIBE Yutaka: Re: About sharutils-4.2.1.ja_JP.EUC.po
+20. 1996-07-15 Ulrich Drepper: Re: About sharutils-4.2.1.ja_JP.EUC.po
+21. 1996-04-05 François Pinard: Re: Notes to translators of GNU packages
+22. 1994-10-04 Rick Jelliffe: "was Re: multilingual HTML, SGML documents" <Shif
+23. 1994-10-05 Erik Naggum: Re: Shift-JIS (was Re: multilingual HTML, SGML docu
+24. 1996-07-24 =?ISO-2022-JP?B?GyRCQEQ7M0JnMnAbKEI=?= /Daisuke Aoyama: patch an
+25. 1996-07-24 \e$(B@D;3Bg2p\e(B /Daisuke Aoyama: patch and libraries
+26. 1994-09-27 Dan Connolly: Re: Multilingual HTML, SGML documents?
+27. 1994-10-09 Emmanuel Uren: 850 and more, 8859 and more, and more
+28. 1995-12-05 Jason Molenda: Re: Internationalization resources?
+29. 1995-12-05 Per Bothner: Re: Internationalization resources?
+30. 1996-04-09 Chiaki Ishikawa: Re: Notes to translators of GNU packages
+31. 1996-04-09 Chiaki Ishikawa: Re: Notes to translators of GNU packages
+32. 1997-04-11 Mark Leisher: Recode offer
+33. 1997-04-11 Brendan_Murray/DUB/Lotus@lotus.com: Re: unicode <-> hex converte
+34. 1997-04-11 Leong Kok Yong: Re: unicode <-> hex converter (fwd)
+35. 1997-12-08 François Pinard: Re: Japanese format conversions SJIS <--> JIS?
+36. 1997-12-12 NUMATA Toshinori: (i18n.419) (posix 3411) 3007 IDEOGRAPHIC NUMBE
+37. 1998-03-12 Jeffrey Friedl: Re: Japanese format conversions SJIS <--> JIS?
+38. 1998-03-12 Jeffrey Friedl: Re: Japanese format conversions SJIS <--> JIS?
+39. 1998-03-13 François Pinard: Re: Japanese format conversions SJIS <--> JIS?
+
+../asian/rmail/japanese-euc
+ 1. 1998-04-28 Koichi Nakatani: Re: MHonArc and multi-byte characters in HTML
+ 2. 1998-04-28 Earl Hood: Re: MHonArc and multi-byte characters in HTML
+ 3. 1998-05-06 Koichi Nakatani: Re: MHonArc and multi-byte characters in HTML
+ 4. 1994-12-14 Daniel R. Kegel: Re: HTML in Unicode?
+ 5. 1999-08-27 Coordinator of Japanese Team: SVP make EUC-JP charset valid (was
+
+../asian/rmail/jconv
+ 1. 1999-07-14 lal@cs.ucdavis.edu: Re: Japanese character conversion tools
+ 2. 1999-07-14 Peter Wyzlic: Re: Japanese character conversion tools
+ 3. 1999-07-14 Jungshik Shin: Re: Japanese character conversion tools
+
+../asian/rmail/korean
+ 1. 1997-10-07 Jungshik Shin: description of Korean/Chinese lang. environment
+ 2. 1997-10-08 Jungshik Shin: Re: korean
+ 3. 1997-10-08 Jungshik Shin: Re: description of Korean/Chinese lang. environme
+ 4. 1997-10-08 Ken Lunde: Re: description of Korean/Chinese lang. environment
+ 5. 1997-10-08 Ken Lunde: Re: description of Korean/Chinese lang. environment
+ 6. 1997-10-08 Martin J. Dürst: Re: description of Korean/Chinese lang. environ
+ 7. 1997-10-08 Kenichi Handa: Re: description of Korean/Chinese lang. environme
+ 8. 1997-10-08 Martin J. Dürst: Re: description of Korean/Chinese lang. environ
+ 9. 1997-10-09 Kenichi Handa: Re: description of Korean/Chinese lang. environme
+10. 1997-10-09 Martin J. Dürst: Re: description of Korean/Chinese lang. environ
+11. 1997-10-15 Deogtae Kim: Re: korean-hanterm input method and han.* encoding
+12. 1997-10-21 Werner Lemberg: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+13. 1997-10-21 Mark Leisher: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+14. 1997-10-21 Kenichi Handa: [Marcel.Kohl@vs.dasa.de: korean characters]
+15. 1997-10-21 Martin J. Dürst: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+16. 1997-10-22 Kenichi Handa: Re: korean-hanterm input method and han.* encodin
+17. 1997-10-22 Gary Roberts: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+18. 1997-10-22 Jungshik Shin: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+19. 1997-10-22 Jungshik Shin: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+20. 1997-10-22 Gary Roberts: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+21. 1997-10-22 Jungshik Shin: Re: Korean mail coding-system and bug in iso-2022
+22. 1997-10-22 Martin J. Dürst: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+23. 1997-10-22 Kenichi Handa: Re: korean-hanterm input method and han.* encodin
+24. 1997-10-22 Martin J. Dürst: Re: [Marcel.Kohl@vs.dasa.de: korean characters]
+25. 1997-10-24 Jungshik Shin: Re: korean-hanterm input method and han.* encodin
+26. 1997-10-25 Kenichi Handa: Re: korean-hanterm input method and han.* encodin
+27. 1997-10-25 Jungshik Shin: Re: korean-hanterm input method and han.* encodin
+28. 1997-10-25 Murata Shuuichirou: Re: korean-hanterm input method and han.* en
+29. 1997-10-25 Martin J. Dürst: Re: korean-hanterm input method and han.* encod
+30. 1997-10-25 Jungshik Shin: Re: korean-hanterm input method and han.* encodin
+31. 1997-10-27 Martin J. Dürst: Re: korean-hanterm input method and han.* encod
+32. 1997-10-27 Kenichi Handa: Re: korean-hanterm input method and han.* encodin
+33. 1997-10-29 Joerg Plassen: Re: description of Korean/Chinese lang. environme
+34. 1998-05-16 Yun YoungSun: [report] korean environment in gnus with semi.
+35. 1998-05-17 MORIOKA Tomohiko: Re: [report] korean environment in gnus with s
+36. 1998-11-26 Jungshik Shin: Adding Korean JOHAB support?
+37. 1998-11-27 Kenichi Handa: Re: Adding Korean JOHAB support?
+38. 1998-11-27 Jungshik Shin: Re: Adding Korean JOHAB support?
+39. 1994-12-13 Ross Paterson: Re: can ISO-IR-*** be used as MIME charset?
+40. 1999-03-11 Alain LaBont\81é\81 : JUC : Noms de caract\81ères cor\81éens
+41. 1997-12-15 Choi, Jun Ho: Re: flex-2.5.2.ko.po
+42. 1998-01-06 François Pinard: Re: Phonetic transcription of Korean [was: Re:
+
+../asian/rmail/korean-hangul
+ 1. 1996-05-14 Alain LaBont/e'/: UNICODE et le codage hangul
+ 2. 1996-05-15 Jian YANG: Re: UNICODE et le codage hangul
+ 3. 1996-05-15 Alain LaBont/e'/: Re: UNICODE et le codage hangul
+ 4. 1996-05-22 Alain LaBont/e'/: Re: Nom des caracteres coreens dans l'ISO/CEI
+ 5. 1998-12-16 Francois Yergeau: Tel que promis
+ 6. 1998-12-16 Francois Yergeau: Re: recode et table =?ISO-8859-1?Q?fran=E7aise
+
+../asian/rmail/mule
+ 1. 1998-03-28 Werner Lemberg: Re: MULE-UCS 0.01(YUME) Release.
+ 2. 1998-03-28 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: MULE-UCS 0.0
+ 3. 1998-03-28 Satoru Tomura: Re: MULE-UCS 0.01(YUME) Release.
+ 4. 1998-04-08 NIIBE Yutaka: it works again
+ 5. 1998-08-31 SL Baur: Re: MULE primer
+ 6. 1998-09-01 Stephen J. Turnbull: Re: MULE primer
+ 7. 1999-02-05 Stephen J. Turnbull: Re: More charset things
+ 8. 1999-02-05 Stephen J. Turnbull: Re: More charset things
+ 9. 1999-02-04 Stainless Steel Rat: Re: More charset things
+10. 1999-05-07 Takashi Nishimoto: Re: Need help to find doc
+11. 1997-11-05 French GNU/LI List: Re: Donation process
+
+../asian/rmail/printing
+ 1. 1998-02-11 Jungshik Shin: Re: Emacs 20.x desiderata
+ 2. 1998-02-25 Jens-Ulrik Holger Petersen: Re: Emacs 20.x desiderata
+ 3. 1998-03-02 SAKAI Kiyotaka: Re: Emacs 20.x desiderata
+ 4. 1999-07-05 Lars Magne Ingebrigtsen: Contributor section
+ 5. 1999-07-04 Russ Allbery: Re: Contributor section
+ 6. 1999-07-05 Mike Fabian: Re: Contributor section
+ 7. 1999-07-09 Werner LEMBERG: Re: MULE and TeX
+ 8. 1999-07-09 Werner LEMBERG: Re: MULE and TeX
+ 9. 1998-02-09 Joshua Redstone: Re: Emacs 20.x desiderata
+
+../asian/rmail/printing-latex
+ 1. 1999-01-08 Werner LEMBERG: ANNOUNCING CJK 4.2.0 [Chinese/Japanese/Korean fo
+
+../asian/rmail/references
+ 1. 1997-12-25 Junko Matsumoto: Free Software Distribution Approval
+
+../asian/rmail/tex
+ 1. 1997-10-06 Werner Lemberg: ANNOUNCING CJK 4.1.3 [Chin/Jap/Kor for LaTeX2e]
+ 2. 1997-09-05 Werner Lemberg: Re: a perhaps popular question
+
+../asian/rmail/ucip
+ 1. 1997-12-09 Ken Lunde: Re: Recode offer
+ 2. 1997-12-08 François Pinard: Re: Recode offer
+ 3. 1997-12-09 Mark Leisher: Re: Recode offer
+ 4. 1997-12-09 François Pinard: Re: Recode offer
+ 5. 1997-12-15 Ken Lunde: Re: Recode offer
+ 6. 1997-12-18 François Pinard: Re: Recode offer
+ 7. 1997-12-19 Gigi Estabrook: Review of Understanding CJKV Info. Processing
+ 8. 1997-12-19 François Pinard: Re: Review of Understanding CJKV Info. Processi
+ 9. 1997-12-19 François Pinard: Re: Review of Understanding CJKV Info. Processi
+10. 1998-12-30 Ora-News: CJKV Info Processing
+
+../asian/rmail/wnn
+ 1. 1997-08-07 David Fox: Re: Frustration: Universally available input methods
+
+../charsets/rmail/1252
  1. 1997-04-24 Markus Kuhn: Re: &#146; valid HTML or no?
  2. 1997-10-29 Alain LaBonté - 3: Re: Comment fonctionnent les codepages sous W
-
-../rmail/charsets/5426
+ 3. 1999-11-01 Karl Eichwalder: charset="Windows-1252"
+ 4. 1999-11-02 Steinar Bang: Re: charset="Windows-1252"
+ 5. 1999-11-02 Hrvoje Niksic: Re: charset="Windows-1252"
+ 6. 1999-11-02 Steinar Bang: Re: charset="Windows-1252"
+ 7. 1999-11-02 Hrvoje Niksic: Re: charset="Windows-1252"
+ 8. 1999-11-02 Steinar Bang: Re: charset="Windows-1252"
+ 9. 1999-11-02 Florian Weimer: Re: charset="Windows-1252"
+10. 1999-11-02 Toby Speight: Re: charset="Windows-1252"
+11. 1999-11-04 Robert Bihlmeyer: Re: charset="Windows-1252"
+12. 1999-11-04 Karl Eichwalder: Re: charset="Windows-1252"
+
+../charsets/rmail/5426
  1. 1997-12-23 François Pinard: Re: ISO 5426 -> iso8859-1 converter
  2. 1997-12-24 Ulrich Drepper: Re: ISO 5426 -> iso8859-1 converter
  3. 1998-01-08 Wolfram Schneider: Re: ISO 5426 -> iso8859-1 converter
  6. 1997-12-24 Keld J|rn Simonsen: Re: ISO 5426 -> iso8859-1 converter
  7. 1998-01-08 Keld J|rn Simonsen: Re: ISO 5426 -> iso8859-1 converter
 
-../rmail/charsets/737
+../charsets/rmail/737
  1. 1999-01-20 Alejandros Diamandidis: recode: CP737 (DOS Greek) request
 
-../rmail/charsets/850
+../charsets/rmail/850
  1. 1997-08-25 Duncan Sargeant: recode l1:cp850 improvement.
  2. 1996-10-09 Juliusz Chroboczek: Re: RMAIL and charset=iso-8859-1
 
-../rmail/charsets/8859-15
+../charsets/rmail/8859-15
  1. 1998-04-13 Alain LaBonté : Re: ISO 8859-15 to Unicode - Conversion table
  2. 1998-03-23 Alain LaBonté : registration of a new charset: iso-8859-15
  3. 1998-06-22 Alain LaBonté : Re: Outlook & the Euro
 16. 1998-09-08 Alain LaBonté : Nouvelle page de code EBCDIC respectant le franç
 17. 1999-03-09 Alain LaBonté : Re: Latin 1, latin 9 tout neuf : Windows et Mac
 18. 1999-03-31 Alain LaBonté : Publication of Latin 9
+19. 1998-03-24 Alain LaBont\81é\81 : Re: registration of a new charset: iso-8859-15
+20. 1998-04-17 Alain LaBont\81é\81 : ISO/CEI FDIS 8859-15 (final text)
+
+../charsets/rmail/8859-7
+ 1. 1999-10-29 Tom Tromey: forwarded message from Markus Kuhn
+
+../charsets/rmail/african
+ 1. 1998-08-18 Laurent Bourbeau: Texinfo - EC-FC
+ 2. 1998-08-25 Laurent Bourbeau: Recode 3.4h - Bilan BUG de Laurent
+ 3. 1998-09-02 Laurent Bourbeau: Recode - Tests 2
 
-../rmail/charsets/ansel
+../charsets/rmail/ansel
  1. 1998-04-06 Michael Taeschner: recode support for ANSI Z39.47 (1985) ?
  2. 1998-04-07 François Pinard: Re: recode support for ANSI Z39.47 (1985) ?
  3. 1998-04-07 François Pinard: ANSEL
  4. 1998-04-07 François Pinard: ANSEL (bis)
  5. 1998-04-08 Michael Taeschner: Re: recode support for ANSI Z39.47 (1985) ?
  6. 1998-04-08 François Pinard: Re: recode support for ANSI Z39.47 (1985) ?
+ 7. 1999-12-17 Bruno Haible: suggestion ridicule pour recode
 
-../rmail/charsets/apl
+../charsets/rmail/apl
  1. 1991-11-15 mitloehn@uxq.wu-wien.ac.at: [comp.lang.apl] APL Transliteration
  2. 1994-11-13 Raul Deluth Miller: recode-3.4 and APL
  3. 1994-11-14 Francois Pinard: Re: recode-3.4 and APL
  9. 1997-01-31 Leigh Clayton: Re: apl character set
 10. 1997-02-01 rdm@tad.micro.umn.edu: Re: apl character set
 
-../rmail/charsets/apple
+../charsets/rmail/apple
  1. 1998-12-08 Larry W. Virden: Re: Novice user of recode with question
  2. 1998-12-16 Larry W. Virden: Re: Novice user of recode with question
 
-../rmail/charsets/ascii-bs
+../charsets/rmail/ascii-bs
  1. 1997-04-23 V.S. Umamaheswaran: Contribution to SC2 on 8-bit codes and combi
 
-../rmail/charsets/ebcdic
+../charsets/rmail/ebcdic
  1. 1990-08-31 Keld J|rn Simonsen: [comp.unix.questions] Re: EBCDIC to ASCII co
  2. 1990-10-02 Jeff Beard: Re: EBCDIC <--> ASCII conversion
  3. 1990-10-03 Luciano Mannucci: Re: EBCDIC <--> ASCII conversion
 22. 1996-03-28 Jim Meyering: Re: dd conv=(ascii|ebcdic)
 23. 1996-11-24 Joe Wright: Re: The char type crossing the 8 bit barrier? (Was R
 
-../rmail/charsets/euro
+../charsets/rmail/euro
  1. 1998-04-01 K I Larsson: (TC304.1649) More on Euro-codetables
 
-../rmail/charsets/extended-ascii
+../charsets/rmail/extended-ascii
  1. 1997-04-14 Uri Guttman: recode and extended ascii
  2. 1997-06-18 François Pinard: Re: recode and extended ascii
 
-../rmail/charsets/georgian
+../charsets/rmail/georgian
  1. 1998-02-22 John Clews: (TC304.1511) Georgian standard (forwarded)
 
-../rmail/charsets/html
+../charsets/rmail/html
  1. 1994-03-19 David Lebel: HTML...
  2. 1994-11-12 Francois Pinard: iso8859-1.html
  3. 1994-11-12 Francois Pinard: isolat1.html
 41. 1998-10-25 Martin J. Duerst: Re: Converting control characters to HTML?
 42. 1998-12-07 Thorgeir Sigurdsson: (CEN/TC304-Contribtns) Mark-Up and Braille
 43. 1994-03-19 David Lebel: HTML...
+44. 1998-07-21 Wiel: recode: lat1html.c
 
-../rmail/charsets/kermit
+../charsets/rmail/kermit
  1. 1991-09-18 Christine M Gianone: Character Set Files and Utilities
  2. 1995-02-03 Chris Smith: kermit, recode latin1:cp850, and a little program
 
-../rmail/charsets/latex
+../charsets/rmail/latex
  1. 1992-10-30 Pierre Darmon: Re: How to make the "degree" symbol?
  2. 1992-11-02 Daniel H. Luecking: degree symbol
  3. 1992-11-18 Ivan A Derzhanski: Re: \b \d and ISO 6937 Latin Diacriticals
 23. 1998-07-14 Santiago Vila: Bug #24436: recode: missing some things for latex
 24. 1998-07-14 François Pinard: Re: Bug #24436: recode: missing some things for
 
-../rmail/charsets/latin1
+../charsets/rmail/latin1
  1. 1989-07-10 der Mouse: (none)
  2. 1996-03-08 Alain LaBont:e':: (SC2.15) (Copy) iso / dis 8879 Hypertext Marku
  3. 1996-05-22 Alain LaBont/e'/: Re:Roman Char set
  4. 1997-06-09 mike@vlsivie.tuwien.ac.at: ISO 8859-1 National Character Set FAQ
  5. 1997-01-17 mike@vlsivie.tuwien.ac.at: ISO 8859-1 National Character Set FAQ
+ 6. 1999-04-30 Julien CASSAIGNE: Re: Subjonctif imparfait
+ 7. 1999-05-06 Antoine Leca: Re: Subjonctif imparfait
+ 8. 1998-05-20 Alain LaBonté : La petite histoire de la ligature OE dans les no
+ 9. 1998-02-16 Alain LaBonté : Les ligatures dans les normes et standards
 
-../rmail/charsets/t61
- 1. 1997-11-21 Ulrich Drepper: Re: Character set conversion API for libc
- 2. 1997-11-26 Jake Morrison: Re: Character set conversion API for libc
-
-../rmail/charsets/tabular
- 1. 1995-06-21 Hilmar Schlegel: Re: recode problem
- 2. 1995-06-21 François Pinard: Re: recode problem
- 3. 1997-06-27 François Pinard: Re: recode 3.4 and Windows charset.
- 4. 1997-12-03 Hilmar Schlegel: Re: recode problem
- 5. 1997-04-09 Leong Kok Yong: Re: unicode <-> hex converter (fwd)
- 6. 1995-02-15 Francois Pinard: Re: recode 3.4 documentation
-
-../rmail/install/ansi2knr
- 1. 1998-04-07 Jim Meyering: Re: LIBOBJS and ANSI2KNR
- 2. 1998-04-07 Gary V Vaughan: Re: LIBOBJS and ANSI2KNR
- 3. 1999-02-02 L. Peter Deutsch: ansi2knr.c updates
- 4. 1999-02-02 L. Peter Deutsch: new version of ansi2knr
- 5. 1999-02-02 L. Peter Deutsch: new version of ansi2knr
- 6. 1999-02-02 L. Peter Deutsch: new version of ansi2knr
- 7. 1999-02-02 L. Peter Deutsch: new version of ansi2knr
-
-../rmail/install/bigcheck
- 1. 1998-12-18 Larry W. Virden: Re: Prerelease: Free recode 3.4n
-
-../rmail/install/docum
- 1. 1997-12-06 Santiago Vila Doncel: What is a `resurface'?
- 2. 1997-12-06 Santiago Vila Doncel: Re: What is a `resurface'?
- 3. 1997-12-11 François Pinard: Re: What is a `resurface'?
- 4. 1998-10-20 Brendan O'Dea: ANNOUNCE: help2man-1.5c available
-
-../rmail/install/gettext
- 1. 1997-12-02 François Pinard: [Eric Backus <ericb@labejb.lsid.hp.com>] recode
- 2. 1997-12-09 François Pinard: Re: recode 3.4e pretest
- 3. 1998-11-09 Alain Magloire: recode on Solaris
-
-../rmail/install/html
- 1. 1998-07-21 Wiel: recode: lat1html.c
- 2. 1998-07-21 François Pinard: Re: recode: lat1html.c
-
-../rmail/install/lex
- 1. 1998-04-06 Tom Tromey: Re: I want flex, not lex!
- 2. 1998-04-07 Akim Demaille: Re: I want flex, not lex!
- 3. 1998-04-07 Akim Demaille: Re: I want flex, not lex!
-
-../rmail/install/libtool
- 1. 1997-12-16 Erick Branderhorst: recode and ltmain.sh on solaris 2.6
- 2. 1998-01-07 Erick Branderhorst: recode-3.4g is not compiling properly becaus
- 3. 1998-02-23 Jim Meyering: Re: Installing fileutils 3.16m on icule
- 4. 1998-03-24 Larry W. Virden, x2487: problems building recode 3.4f
- 5. 1998-10-21 François Pinard: Re: Some paxutils issues
- 6. 1999-04-02 François Pinard: recode 3.4q - testing difficulties
- 7. 1999-04-03 Alexandre Oliva: Re: recode 3.4q - testing difficulties
-
-../rmail/install/overflows
- 1. 1999-04-26 François Pinard: Buffer overflows
-
-../rmail/install/raptor
- 1. 1998-12-10 François Pinard: recode 3.4l sur raptor - problèmes
-
-../rmail/install/types
- 1. 1997-12-26 François Pinard: recode sur raptor
-
-../rmail/iso/14652
- 1. 1997-12-21 Alain LaBonté - 3: (SC22WG20.2149) 14652 FDC available
- 2. 1998-01-07 Keld J|rn Simonsen: Re: ISO/IEC FCD 14651 and 14652
- 3. 1998-01-06 x.zhang@utoronto.ca: Re: ISO/IEC FCD 14651 and 14652
- 4. 1998-03-12 Keld J|rn Simonsen: Re: 9995-3 table 1 + registering Canadian lo
- 5. 1998-03-12 Keld J|rn Simonsen: Re: 9995-3 table 1 + registering Canadian lo
- 6. 1998-12-31 Keld J|rn Simonsen: (i18n.439) new sorting and locale drafts
-
-../rmail/iso/14766
- 1. 1998-05-19 Keld J|rn Simonsen: (iso14766.15) 14766 WD 3
-
-../rmail/iso/9term
- 1. 1996-07-09 Marc Feeley: 9term
- 2. 1996-07-25 Marc Feeley: 9term
- 3. 1996-06-07 Arnold D. Robbins: Re: terminal emulator recommendation?
- 4. 1996-07-25 Marc Feeley: 9term
- 5. 1995-11-22 Gary Capell: Unicode/UTF text editor: wily 0.9.8 (beta)
-
-../rmail/iso/cac-jtc1-i18n
- 1. 1998-04-02 Zbigniew, Ignatowicz: CAC-JTC1-I18N - mailing list.
- 2. 1998-05-29 Uma Umamaheswaran: (none)
- 3. 1998-04-03 SCC-JTC1_Forum@scc.ca: Notification of new entries in "CAC/JTC1/
- 4. 1995-03-24 Keld J|rn Simonsen: Re: Unicode/10646 equivalences for RFC 1345
- 5. 1996-02-27 Keld J|rn Simonsen: (i18n.292) new sc2/wg2 pages
-
-../rmail/iso/cdra
- 1. 1994-10-20 Erik Naggum: Re: Abandon ASCII for EBCDIC now!
-
-../rmail/iso/collate
- 1. 1997-10-29 Alain LaBonté - 3: Re: une question naïve
- 2. 1998-08-05 Alain LaBonté : RE: on Draft DoC on 14651 - sorting of numbers i
- 3. 1998-08-17 Alain LaBonté : RE: on Draft DoC on 14651 - sorting of numbers i
- 4. 1998-05-22 Alain LaBonté : ISO/IEC 14652 and ISO/IEC 14651
- 5. 1998-07-30 Alain LaBonté : Tri respectant la norme canadienne dans Excel
- 6. 1998-07-30 Alain LaBonté : Tri ne respectant pas la norme canadienne dans E
- 7. 1998-12-27 Alain LaBonté : Re: (SC22WG20.2470) Macron in ISO/IEC FCD 14651
- 8. 1998-12-24 Alain LaBonté : Re: Note from John Clews [on international order
- 9. 1998-12-30 Alain LaBonté : Re: (SC22WG20.2484) (SC22WG20.2483) (SC22WG20.24
-10. 1999-01-06 Alain LaBonté : Re: Caractères UCS cherchés :-)
-11. 1999-01-07 Thorgeir Sigurdsson: (CEN/TC304-N877) Greek Ordering
-12. 1998-11-19 Alain LaBonté: ISO/IEC 14651
-13. 1998-11-16 Alain LaBonté: Final final F[inal]CD 14651 ready for ballot (:
-14. 1998-11-17 Alain LaBonté: Re: Final final F[inal]CD 14651 ready for ballot
-15. 1998-11-17 Alain LaBonté: 14651
-16. 1998-11-10 Alain LaBonté: Ordering standard: to be sent for ballot unless t
-17. 1998-11-10 Alain LaBonté: Ordering standard: to be sent for ballot unless t
-18. 1999-04-29 Alain LaBonté : Re: Thai String Collation
-
-../rmail/iso/dutch
- 1. 1999-03-22 Thorgeir Sigurdsson: (CEN/TC304-N889) Dutch Char Set Policy
-
-../rmail/iso/elot
- 1. 1996-08-20 John Clews: Re: Transliteration and ISO
- 2. 1996-08-20 John Clews: EUROASCII and ASIASCII project proposals
- 3. 1996-08-23 François Pinard: [Mail Delivery Subsystem <MAILER-DAEMON@IRO.UMo
- 4. 1996-08-24 Mail Delivery Subsystem: Returned mail: Cannot send message for
- 5. 1996-08-22 François Pinard: subscribe
- 6. 1996-08-27 Mail Delivery Subsystem: Returned mail: Cannot send message for
-
-../rmail/iso/engine
- 1. 1998-10-30 Thorgeir Sigurdsson: (TC304.2057) N854 Draft of MODEL PT deliver
-
-../rmail/iso/euro
- 1. 1998-11-03 E.I. Kolehmainen: (TC304.2059) Euro Currency Support in Certain
-
-../rmail/iso/français
- 1. 1996-07-17 Alain LaBont/e'/: Correction required in the French title of ISO
- 2. 1996-08-08 Alain LaBont/e'/: Réunions de l'ISO à Québec
- 3. 1997-03-13 Alain LaBont/e'/: Character names and identifiers (was: Re: (SC2
- 4. 1998-03-18 Alain LaBonté : Re: Noms de caractères Unicode et ISO
- 5. 1998-03-23 Alain LaBonté : Re: Liste de noms de caractères du JUC
- 6. 1998-09-12 Alain LaBonté : Version française des normes
- 7. 1997-01-30 Alain LaBont/e'/: Re: HTLM et signes diacritiques
- 8. 1998-12-09 Alain LaBonté : Re: FW: Localising Unicode character names
- 9. 1998-12-17 François Pinard: Blancs suffixes
-10. 1998-12-17 François Pinard: Autres détails (je suis un peu maniaque :-)
-11. 1998-12-17 François Pinard: Re: recode et table française
-12. 1999-04-12 Alain LaBonté : Double name in the new version of the UCS
-
-../rmail/iso/guide
- 1. 1999-03-08 Thorgeir Sigurdsson: (CEN/TC304-N885) Guide on Character sets
- 2. 1999-03-10 malinder@algonet.se: (TC304.2138) Guide to Use of Character Sets
- 3. 1999-03-10 Subscription Confirmation: Subscribe guide CJIPROHXWU
- 4. 1999-03-10 François Pinard: Re: Subscribe guide CJIPROHXWU
- 5. 1999-03-10 STRI requests: Re: Subscribe guide CJIPROHXWU
- 6. 1999-03-10 François Pinard: (none)
-
-../rmail/iso/iso
- 1. 1997-10-29 Alain LaBonté - 3: Re: une question naïve
- 2. 1997-10-29 Alain LaBont\i - 2: L'ISO : francisation plus avancée qu'à l'UIT
- 3. 1997-11-04 Alain LaBont\i - 3: Nouveaux comités de l'ISO/CEI/JTC1 et leurs
- 4. 1997-11-04 Alain LaBonté - 1: RE: <<L'ISO et la CEI ne font pas partie des
- 5. 1998-04-22 Alain LaBonté : Plénière du JTC1 et Adaptabilité culturelle
- 6. 1998-03-10 Alain LaBonté : Nom et adresse du Conseil canadien des normes da
- 7. 1998-03-12 Alain LaBonté : Re: Adresse du site Web du CCN
-
-../rmail/iso/mailing-lists
- 1. 1997-10-31 Keld J|rn Simonsen: (TC304.1321) iso14766 list created
- 2. 1997-11-19 Michael Everson: (TC304.1354) iso15924 list created
- 3. 1997-11-19 Michael Everson: (i18n.399) iso15924 list created
- 4. 1997-11-03 Keld J|rn Simonsen: (TC304.1323) list of i18n lists
- 5. 1997-11-13 borka@e5.ijs.si: (TC304.1345) list of i18n lists
- 6. 1997-11-13 Alain LaBonté - 2: (TC304.1346) list of i18n lists
- 7. 1997-11-19 Tom Garland SMI European Software Centre: (TC304.1351) list of i
- 8. 1998-01-30 Þorvarður Kári Ólafsson: (TC304.1472) Discussion lists for funde
- 9. 1998-02-21 Þorvarður Kári Ólafsson: (TC304.1506) Please split up the discus
-10. 1998-04-06 Þorvarður Kári Ólafsson: (TC304.1684) Project discussion lists
-11. 1998-05-01 Keld J|rn Simonsen: (TC304.1742) guide on POSIX locales
-12. 1998-05-06 Þorvarður Kári Ólafsson: (TC304.1750) Keyboards list
-
-../rmail/iso/mes
- 1. 1998-08-26 Uma Umamaheswaran: Software to assist you in scrutinizing MES dr
-
-../rmail/iso/registry
- 1. 1998-05-20 Martin J. Duerst: International registry of coded character sets
- 2. 1998-05-20 Martin J. Duerst: International registry of coded character sets
- 3. 1997-10-07 Keld J|rn Simonsen: (TC304.1258) characters in MES - ENV 1973
- 4. 1997-10-07 Þorvarður Kári Ólafsson: (TC304.1264) characters in MES - ENV 19
- 5. 1998-08-03 Johan van Wingen: (TC304.1918) comparison of repertoires
- 6. 1998-08-04 Johan van Wingen: (TC304.1921) Annex C to NEN 1888 (revision in
- 7. 1998-05-13 Uma Umamaheswaran: (SC2.432) International registries of Coded C
- 8. 1998-05-20 Martin J. Duerst: International registry of coded character sets
- 9. 1998-09-16 Keld J|rn Simonsen: Cultural registry as international standard
-10. 1998-10-15 Uma Umamaheswaran: (SC2.463) New Registrations
-11. 1998-10-27 Thorgeir Sigurdsson: (TC304.2049) N852 Guide on the use of Char
-12. 1997-10-07 Keld J|rn Simonsen: Re: librecode, libc, gettext
-13. 1993-02-10 Jon Postel: Re: transcription iso-8859-1 to us-ascii?
-14. 1994-11-12 Ned Freed: Re: Non-observance of ; charset=xxxxxx etc
-15. 1997-01-12 Alain LaBont/e'/: Re: GUTenberg/oe y trema
-16. 1997-02-18 John F. Chandler: (i18n.347) Update to ISO International Registr
-17. 1995-03-14 Roman Czyborra: KOI8-R charset
-18. 1998-04-12 Keld J|rn Simonsen: (i18n.437) new list of character names
-19. 1998-04-13 Uma Umamaheswaran: (i18n.437) new list of character names
-20. 1993-02-10 Jon Postel: Re: transcription iso-8859-1 to us-ascii?
-21. 1994-10-12 Johannes Wilhelm: Re: ISO Latin-1 for DOS ?
-22. 1994-10-12 Markus Kuhn: Re: ISO Latin-1 for DOS ?
-23. 1994-10-17 Kosta Kostis: Re: ISO8859-1 to US-ASCII
-24. 1994-10-18 Kosta Kostis: Re: ISO8859-1 to US-ASCII
-25. 1994-11-16 J.P. Kuypers: Re: MacEudora and MIME charset
-26. 1994-11-29 Barry Bouwsma: Re: Looking for ISO-8859 character set definition
-27. 1995-02-10 Johan van Wingen: list of character code standards
-28. 1995-03-01 Johan van Wingen: (SC2WG3.47) document by ftp
-29. 1995-03-21 Kari E. Hurtta: Kehpager (Re: Latin-1 <-> NRC character set mapp
-30. 1995-04-10 Primoz Peterlin: Re: Recode and CP 1250
-31. 1996-06-18 John F. Chandler: (i18n.332) Updated summary of ISO IR
-32. 1997-06-20 Lukas Petrlik: Re: cs encodings (was: Re: recode 3.4)
-33. 1997-07-22 Keld J|rn Simonsen: (i18n.363) CEN cultural register
-34. 1996-01-13 Keld J|rn Simonsen: (i18n.285) CEN/TC304 PT01 report
+../charsets/rmail/marc
+ 1. 1999-12-17 Bruno Haible: suggestion ridicule pour recode
 
-../rmail/iso/rfc1345
+../charsets/rmail/rfc1345
  1. 1991-11-04 Jonas Lagerblad: International character sets.
  2. 1994-12-16 Ross Paterson: MIME charsets (was Re: can ISO-IR-*** be used as
  3. 1996-04-29 Lukas Petrlik: cs encodings (was: Re: recode 3.4)
 53. 1999-03-31 Keld J|rn Simonsen: Re: Fix for AtariST encoding
 54. 1999-01-02 François Pinard: recode dans doc
 
-../rmail/iso/tcs
- 1. 1993-02-09 andrew@research.att.com: (none)
- 2. 1993-02-14 Francois Pinard: tcs, recode
- 3. 1993-02-20 Francois Pinard: Legaleese
- 4. 1993-12-11 Francois Pinard: GNU recode 3.2.9
- 5. 1993-12-12 Per Abrahamsen: Re: GNU recode 3.2.9
- 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding
+../charsets/rmail/t61
+ 1. 1997-11-21 Ulrich Drepper: Re: Character set conversion API for libc
+ 2. 1997-11-26 Jake Morrison: Re: Character set conversion API for libc
 
-../rmail/iso/théorie
- 1. 1998-04-03 Alain LaBonté : Re: Étude sur le codage des caractères
+../charsets/rmail/tables
+ 1. 1999-07-05 Bruno Haible: recode-3.5 conversion bug
+ 2. 1994-12-20 Hennus Bergman: Re: Small GNU recode bugs
 
-../rmail/iso/ucs
- 1. 1993-08-26 Hermann Hueni: Re: WANTED: recode extension to ROMAN8 (HP) char
+../charsets/rmail/tabular
+ 1. 1995-06-21 Hilmar Schlegel: Re: recode problem
+ 2. 1995-06-21 François Pinard: Re: recode problem
+ 3. 1997-06-27 François Pinard: Re: recode 3.4 and Windows charset.
+ 4. 1997-12-03 Hilmar Schlegel: Re: recode problem
+ 5. 1997-04-09 Leong Kok Yong: Re: unicode <-> hex converter (fwd)
+ 6. 1995-02-15 Francois Pinard: Re: recode 3.4 documentation
 
-../rmail/iso/unicode
- 1. 1990-07-23 Dan Oscarsson: Re: Time for 8 bit news, isn't it?????.
- 2. 1994-08-26 Lloyd: Re: Microsoft Codepages to Unicode
- 3. 1994-08-27 H. Peter Anvin: Re: Unix, Unicode, and internationalization
- 4. 1994-09-06 Alan Cox: Re: Unicode & Linux's future (was Re: Acid)
- 5. 1994-09-06 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid)
- 6. 1994-10-02 Andries.Brouwer%cwi.nl@Lightning.McRCIM.McGill.EDU: Re: recode
- 7. 1994-10-04 ITO Takayuki: Re: UTF-8
- 8. 1994-10-04 Jim.Rees@umich.edu: Re: UTF-8
- 9. 1994-12-21 David Goldsmith: Unicode Web Page Now Available!
-10. 1995-09-20 François Pinard: Re: Emacs C-q NNN
-11. 1996-01-05 François Pinard: Re: 8bit clean perl? (fwd)
-12. 1996-01-05 François Pinard: Re: 8bit clean perl? (fwd)
-13. 1996-03-11 Hart, Edwin F.: Unicode* Version 2.0 and new members of
-14. 1996-03-15 Alain LaBont:e':: Impact of ISO/IEC 10646 on POSIX - Draft perso
-15. 1996-03-21 Alain LaBont/e'/: Version àjour de la liste des noms de
-16. 1996-03-28 Keld J|rn Simonsen: (i18n.298) 10646 amendments available
-17. 1996-04-26 Keld J|rn Simonsen: (i18n.325) ISO 10646 character namesand posi
-18. 1996-05-04 Michael Everson: (i18n.327) European Subsets of ISO/IEC 10646-1
-19. 1996-05-11 Alain LaBont/e'/: Équivalences UTF-8 - Impact d'UTF-8, repli d'U
-20. 1996-05-11 Alain LaBont/e'/: Re: French names for 10646
-21. 1996-05-28 Alain LaBont/e'/: Universal Character Set... the most valuable u
-22. 1996-05-29 dorai@vnet.ibm.com: NO SUBJECT
-23. 1996-06-10 Michael Everson: Re: Translation & comments
-24. 1996-06-10 by way of everson@indigo.ie (Michael Everson): (i18n.331) "News"
-25. 1996-08-19 François Pinard: (none)
-26. 1996-09-13 Markus G. Kuhn: Unicode Introduction and References
-27. 1996-09-30 Markus G. Kuhn: Unicode 2.0 available now!!!
-28. 1996-10-06 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
-29. 1996-10-06 Alain LaBont/e'/: Différences entre UNICODE et le JUC et implant
-30. 1996-10-07 unicode@Unicode.ORG: UNICODE, SGML and HEBREW
-31. 1996-10-15 unicode@Unicode.ORG: How to order Version 2.0
-32. 1996-10-28 unicode@Unicode.ORG: Repertoires of European Letters: Draft Four
-33. 1996-11-20 Alain LaBont/e'/: Re: French Names for Hebrew Characters
-34. 1996-11-21 Jonathan Rosenne: Re: French Names for Hebrew Characters
-35. 1996-11-22 news@Unicode.ORG: Web Update
-36. 1996-11-24 Erik Naggum: Re: The char type crossing the 8 bit barrier? (Was
-37. 1996-11-28 unicode@Unicode.ORG: Re: HTML - i18n / NCR & charsets
-38. 1997-01-06 Alain LaBont/e'/: Re: ABU: FREQUENCES
-39. 1997-01-09 Michael Everson: (none)
-40. 1997-01-16 unicode@Unicode.ORG: Re: unicode <-> hex converter
-41. 1997-02-05 Alain LaBont/e'/: Up-to-date version of the UCS
-42. 1997-03-16 Alain LaBont/e'/: Courrier électronique pour UNICODE sur ordinat
-43. 1997-05-07 Michael Everson: Re: NO SUBJECT
-44. 1997-05-20 Alain LaBont/e'/: UNICODE et ISO/CEI 10646
-45. 1997-08-12 Alain LaBont\i SCT: Défense altruiste... par un Américain par su
-46. 1997-10-28 François Pinard: Re: librecode, libc, gettext
-47. 1994-12-20 Hennus Bergman: Re: Small GNU recode bugs
-48. 1995-04-20 Markus Kuhn (CIP 90): ISO 10646 & recode concept
-49. 1997-11-26 Andreas Dietrich: Re: Cyrillic cp1251 in recode
-50. 1994-10-09 Emmanuel Uren: 850 and more, 8859 and more, and more
-51. 1997-11-22 François Pinard: Re: unicode and gnu?
-52. 1998-02-14 Erik Naggum: Re: Is there any alternative to MULE?
-53. 1996-10-24 Alain LaBont/e'/: Quelques adresses pour les références à mes tr
-54. 1998-01-02 Alain LaBonté - 3: Re: aide!
-55. 1998-02-16 Alain LaBonté : Les ligatures dans les normes et standards
-56. 1998-03-10 Alain LaBonté : Importance des noms des caractères
-57. 1998-03-10 Alain LaBonté : Noms de caractères -- subtilités
-58. 1998-03-11 Alain LaBonté : Site descriptions containing HTML entity names a
-59. 1998-03-17 Alain LaBonté : Devinette : qu'a de particulier le caractère UFB
-60. 1998-03-24 Alain LaBonté : Re: Erreurs de nomenclature dans Windows NT4
-61. 1998-03-24 Alain LaBonté : RE: Erreurs de nomenclature dans Windows NT4 (bi
-62. 1998-03-25 Alain LaBonté : Versions françaises des produits de Microsoft
-63. 1998-04-09 Alain LaBonté : Java Script (ECMA Script) et ISO/CEI 10646 - sou
-64. 1996-10-29 Francois Yergeau: Re: GNU utils and proportional fonts
-65. 1998-05-09 Martin J. Duerst: Last Call for Papers, Unicode Conference, Sept
-66. 1998-02-16 John Clews: (TC304.1487) Script summary: status of ISO/IEC 10646
-67. 1998-06-30 Thorgeir Sigurdsson: (TC304.1826) Enquiry among members of CEN/T
-68. 1998-07-13 Chris Makemson: (TC304.1862) Review draft of the MES
-69. 1998-07-20 Keld J|rn Simonsen: (TC304.1873) (TC304 P10) Review draft of the
-70. 1998-07-21 Klaas Ruppel: (TC304.1875) (TC304 P10) Review draft of the MES
-71. 1998-07-21 K I Larsson: (TC304.1877) Review MES draft
-72. 1997-10-31 Alain LaBonté - 3: Philosophie de l'internationalisation de bon
-73. 1997-12-12 Alain LaBonté - 2: 10646 online
-74. 1997-12-15 Alain LaBonté : Re: Proposition pour le Notial à l'intention de
-75. 1997-12-12 NUMATA Toshinori: (i18n.419) (posix 3411) 3007 IDEOGRAPHIC NUMBE
-76. 1997-12-12 Lu Chin (or Lu Qin): (i18n.420) (posix 3411) 3007 IDEOGRAPHIC NU
-77. 1998-05-05 Alain LaBonté : Codage de la langue dans le jeu universel de car
-78. 1998-04-29 Alain LaBonté : Use of the Glyphs associated to the Unicode char
-79. 1998-08-05 Alain LaBonté : Re: Unicode Converter
-80. 1998-08-05 Alain LaBonté : Re: Unicode Converter
-81. 1998-05-26 Michel Suignard: RE: Symboles de fonctions de clavier - Déplacem
-82. 1998-06-23 Alain LaBonté : Re: fonte ou police ?
-83. 1998-09-09 Alain LaBonté : Re: Projet de rapport de liaison entre ISO/IEC J
-84. 1998-09-10 Gisle Aas: Re: "Coding system"? Eh?
-85. 1998-09-11 François Pinard: Re: "Coding system"? Eh?
-86. 1998-09-11 François Pinard: Re: "Coding system"? Eh?
-87. 1997-01-16 unicode@Unicode.ORG: Re: unicode <-> hex converter
-88. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext
-89. 1997-11-25 Markus Kuhn: Re: ISO 10646 & recode concept
-90. 1998-01-15 Alain LaBonté : ISO/CEI 10646 et UNICODE : un peu de vulgarisati
-91. 1998-02-25 Alain LaBonté : Underanding/Status of agreement with UNICODE on
-92. 1998-05-20 Alain LaBonté : La petite histoire de la ligature OE dans les no
-93. 1998-09-07 François Pinard: 1) biz IRC 2) Perl et Unicode (http)
-94. 1998-09-17 Alain LaBonté : Character identifiers, names and mnemonicity --
-95. 1998-10-02 Uma Umamaheswaran: Fourteenth International Unicode Conference
-96. 1998-10-05 Mark Crispin: Re: proposal for a GNU Unicode font
-97. 1998-10-06 Mark Crispin: Re: proposal for a GNU Unicode font
-98. 1998-11-09 malinder@algonet.se: (TC304.2065) PT Guide on Character Sets - O
-99. 1998-11-09 Kenneth Whistler: (TC304.2066) FW: (TC304.2065) PT Guide on Char
-100. 1999-02-15 umavs@ca.ibm.com: FYI: Draft Irish comments on JTC1 N5698
-101. 1999-04-16 umavs@ca.ibm.com: 2nd Call for Papers -- 15th Unicode Conferenc
-102. 1999-05-11 Alain LaBonté : Une question intéressante et une réponse/RE: Un
-
-../rmail/iso/utf-32
- 1. 1999-04-07 Alain LaBonté : Info -- RE: UTF-32
-
-../rmail/iso/utf-mnemonics
- 1. 1998-07-18 Markus Kuhn: (TC304.1872) German reaction to Enquiry among membe
+../charsets/rmail/usoft
+ 1. 1994-08-26 Lloyd: Re: Microsoft Codepages to Unicode
+ 2. 1997-01-06 Alain LaBont/e'/: Re: ABU: FREQUENCES
 
-../rmail/iso/utf16
- 1. 1998-02-25 François Pinard: Re: Necessity of a better liaison with ISO TC 2
- 2. ---- -- -- C.Douglas O'Brien [SMTP:dobrien@idon.com]: RE: Necessity of a be
- 3. 1998-09-30 Roman Czyborra: Re: UTF16 <=> Reuters format?
+../engines/rmail/auto-detect
+ 1. 1996-01-13 DiDakDok,IVC: Decodage MIME
+ 2. 1997-12-09 François Pinard: Re: recode
+ 3. 1997-12-09 Milivoj Ivkovic: Re: recode
+ 4. 1998-07-01 Sam: Re: au secour!
+ 5. 1999-06-25 Earl Hood: Re: language detection
+ 6. 1999-08-23 Larry W. Virden: How to translated from unknown to known?
+ 7. 1999-12-13 François Pinard: Re: How to translated from unknown to known?
 
-../rmail/iso/utf7
- 1. 1998-03-02 François Pinard: Re: origine de ces nouveaux [...]?
- 2. 1998-03-03 François Pinard: Re: origine de ces nouveaux [...]?
+../engines/rmail/backup
+ 1. 1994-03-09 Nicolas Anquetil: recode
+ 2. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1
+ 3. 1999-07-19 François Pinard: Re: better user interface
+ 4. 1999-07-20 Jean-loup Gailly: Re: better user interface
+ 5. 1999-07-20 Scott Schwartz: Re: better user interface
+ 6. 1999-07-20 Scott Schwartz: Re: better user interface
+ 7. 1999-07-20 François Pinard: Re: [Scott Schwartz <schwartz@bio.cse.psu.edu>]
+ 8. 1999-07-20 Fred L. Drake: Re: [Scott Schwartz <schwartz@bio.cse.psu.edu>] R
+ 9. 1999-07-20 Larry W. Virden: Re: [Scott Schwartz <schwartz@bio.cse.psu.edu>]
+
+../engines/rmail/bigcheck
+ 1. 1998-12-18 Larry W. Virden: Re: Prerelease: Free recode 3.4n
 
-../rmail/iso/utf8
- 1. 1994-05-05 Martin J. Duerst: Re: What is status of internationalization of
- 2. 1996-03-27 Francois Yergeau: UTF-8 I-D submitted
- 3. 1997-01-14 Alistair Crooks: ssam-1.4 and ure-2.5
- 4. 1997-11-22 François Pinard: Re: Movement for having Internet addresses usin
- 5. 1995-01-21 Markus Kuhn (CIP 90): ISO 10646/UTF-8 support for recode 3.4
- 6. 1997-12-10 Francois Yergeau: Re: Movement for having Internet addresses usi
- 7. 1998-03-02 Alain LaBonté : Re: origine de ces nouveaux «é», è, à ...?
- 8. 1997-12-10 Francois Yergeau: Re: Movement for having Internet addresses usi
- 9. 1995-09-19 François Pinard: Re: Emacs C-q NNN
-10. 1997-10-28 Martin J. Dürst: Re: A couple of bugs in Gnus-mule : summary buf
-11. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available
-12. 1998-12-02 Richard Coleman: Re: Info on Internationalization
-13. 1998-12-03 Shenghuo ZHU: Re: Info on Internationalization
-14. 1998-12-06 François Pinard: Re: Info on Internationalization
-15. 1998-11-27 Alain LaBonté : Qu'est-ce que l'ASCII (bis) et courriel de l'ave
-16. 1999-02-09 François Pinard: Re: More charset things
-17. 1999-02-09 Steinar Bang: Re: More charset things
-18. 1999-02-08 François Pinard: Re: More charset things
-19. 1999-02-08 François Pinard: Re: More charset things
-20. 1999-02-14 Steinar Bang: UTF-8 (Was: More charset things)
-21. 1999-02-09 Lars Magne Ingebrigtsen: Re: More charset things
-22. 1998-11-02 Paul Eggert: Re: UTF-8 in gas
-23. 1998-11-02 Paul Eggert: Re: UTF-8 in gas
-24. 1998-11-04 Paul Eggert: Re: UTF-8 in gas
+../engines/rmail/documentation
+ 1. 1997-12-06 Santiago Vila Doncel: What is a `resurface'?
+ 2. 1997-12-06 Santiago Vila Doncel: Re: What is a `resurface'?
+ 3. 1997-12-11 François Pinard: Re: What is a `resurface'?
+ 4. 1999-12-13 CERT Advisory: CERT Advisory CA-99.15 - Buffer Overflows in SSH
+ 5. 1999-12-15 Eli Zaretskii: Re: Release: Free recode 3.5
+ 6. 1999-12-15 François Pinard: Re: Release: Free recode 3.5
+ 7. 1999-12-19 Eli Zaretskii: Re: Release: Free recode 3.5
+ 8. 1999-12-19 Eli Zaretskii: Re: Release: Free recode 3.5
 
-../rmail/iso/web-sites
- 1. 1997-11-03 Thorgeir Sigurdsson: (TC304.1326) Web of CEN and our Call
- 2. 1997-11-19 Michael Everson: (i18n.399) iso15924 list created
- 3. 1998-03-13 Thorgeir Sigurdsson: (TC304.1529) Inability to Distribute via ST
- 4. 1998-03-20 Keld J|rn Simonsen: (TC304.1535) Cultural convention standards f
- 5. 1998-04-17 Alain LaBonté : Versions pdf (fr+en) des alphabets latin n° 8 (c
- 6. 1998-05-12 Marc Wilhelm Kster: (TC304.1757) First draft of the European Ord
- 7. 1998-06-02 Michael Everson: (TC304.1790) (TC304 P11) WS/Alpha base document
- 8. 1998-06-03 Keld J|rn Simonsen: (TC304.1791) taxonomy draft
- 9. 1998-06-15 Thorgeir Sigurdsson: (TC304.1812) ISSS URL
-10. 1998-07-01 borka@e5.ijs.si: (TC304.1830) LE journal on the WEB
-11. 1998-07-02 Thorgeir Sigurdsson: (TC304.1837) Documents, in the mail
-12. 1998-07-07 Thorgeir Sigurdsson: (TC304.1854) Database of Latin letters
-13. 1998-08-05 Alain LaBonté : Re: Obtaining ISO standards in Canada
+../engines/rmail/erreurs-doc
+ 1. 1999-12-13 François Pinard: Re: Recode
+
+../engines/rmail/flat-optimizer
+ 1. 1999-07-23 Frantisek Hanzlik: recode x strip diacritics ?
+ 2. 1999-07-23 François Pinard: Re: recode x strip diacritics ?
+ 3. 1999-08-17 Frantisek Hanzlik: Re: recode x strip diacritics ?
+
+../engines/rmail/iso-paper
+ 1. 1998-10-30 Thorgeir Sigurdsson: (TC304.2057) N854 Draft of MODEL PT deliver
+
+../engines/rmail/library
+ 1. 1995-12-06 Per Bothner: Re: Internationalization resources?
+ 2. 1996-05-29 Ulrich Drepper: librecode, again
+ 3. 1997-10-14 Ulrich Drepper: Re: librecode
+ 4. 1999-09-23 Pawel Krawczyk: Re: recode memory management
+
+../engines/rmail/listing
+ 1. 1993-12-21 Martin Maechler: Re: Prerelease: GNU recode version 3.2.10
+ 2. 1993-12-21 Francois Pinard: Prerelease: GNU recode version 3.2.10
+ 3. 1993-02-10 Patrik F{ltstr|m: Re: transcription iso-8859-1 to us-ascii?
+ 4. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available
+ 5. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available
+ 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding
+
+../engines/rmail/mixed
+ 1. 1992-11-23 mcgill-vision!corto.inria.fr!shapiro: recode
+ 2. 1994-12-19 Martin Wendel: ANNOUNCE: Emil-2.0 is available
+ 3. 1995-02-28 Francois Pinard: UUPC
+ 4. 1995-03-11 Scott Nelson: ISO-8859-X email test
+ 5. 1995-03-16 Martin Wendel: ANNOUNCE: emil-2.0.5 released
+ 6. 1995-07-05 François Pinard: Re: Retour !
+ 7. 1995-07-25 David Collier-Brown: Early announcement: Mime-witing library
+ 8. 1996-03-02 François Pinard: Re: Présentation de Ulrich Drepper!
+ 9. 1996-06-09 François Pinard: Re: About recode
+10. 1997-10-30 =?iso-8859-1?Q?G=E9rald_St=2DArneault_=3Cstarneag=40grics.qc.ca=
+
+../engines/rmail/moteur
+ 1. 1999-04-18 François Pinard: -lf et ibmpc ?
+ 2. 1999-04-14 François Pinard: recode - IBM-PC
+ 3. 1999-04-03 Laurent Bourbeau: Recode 3.4q - Bug 5
+ 4. 1999-04-02 François Pinard: =?iso-8859-1?q?Probl=E8me?= recode
+ 5. 1999-06-03 Markus Kuhn: UTF-8 table output
+ 6. 1999-06-03 François Pinard: Re: UTF-8 table output
+ 7. 1999-06-03 François Pinard: Re: UTF-8 table output
+ 8. 1999-07-19 François Pinard: Re: better user interface
+ 9. 1999-08-17 Scott Schwartz: Re: better user interface
+
+../engines/rmail/moteur-ucs
+ 1. 1999-09-02 Bernard Derval: recode 3.5
+ 2. 1999-08-27 Laurent Bonnaud: Re: Bug#42208: recoding latin1<->html is not re
+ 3. 1999-12-13 François Pinard: Re: recode 3.5
+ 4. 1999-08-02 Santiago Vila: Bug#42208: recoding latin1<->html is not reversib
+ 5. 1999-08-17 François Pinard: Re: Bug#42208: recoding latin1<->html is not re
+ 6. 1999-08-13 Jukka Korpela: Recode - something simple I'm missing?
+ 7. 1999-08-13 François Pinard: Re: Recode - something simple I'm missing?
+ 8. 1999-08-16 Jukka.Korpela@hut.fi: Re: Recode - something simple I'm missing?
+ 9. 1999-08-16 François Pinard: Re: Recode - something simple I'm missing?
+
+../engines/rmail/multext
+ 1. 1996-05-24 Jean Ve'ronis: Soft: MtScript (Multilingual editor)
+ 2. 1996-06-17 Jean Ve'ronis: Free Soft: MtStr - Multilingual string library
+ 3. 1996-06-20 Jean Ve'ronis: Free Soft: MtRecode - Character conversion progra
+ 4. 1996-08-29 Malek BOUALEM -- UNIVERSITE: Brief Introduction of the LPL
+ 5. 1996-09-05 Malek BOUALEM -- UNIVERSITE: Re: Introduction of LPL/MULTEXT/MTS
+ 6. 1997-12-10 Jean Veronis: Re: Citation de MtRecode
+
+../engines/rmail/notation
+ 1. 1997-08-06 Ulrich Drepper: Re: charset names
 
-../rmail/options/Arabic
+../engines/rmail/overflows
+ 1. 1999-04-26 François Pinard: Buffer overflows
+
+../engines/rmail/speed
+ 1. 1999-01-22 Andreas Schwab: Re: iconv changes
+ 2. 1999-01-22 Ulrich Drepper: Re: iconv changes
+
+../engines/rmail/testing
+ 1. 1999-12-15 Eli Zaretskii: Re: Release: Free recode 3.5
+ 2. 1999-12-15 Eli Zaretskii: Re: Release: Free recode 3.5
+ 3. 1999-12-15 François Pinard: Re: Release: Free recode 3.5
+ 4. 1999-12-15 François Pinard: Re: Release: Free recode 3.5
+ 5. 1999-12-16 François Pinard: Re: Release: Free recode 3.5
+ 6. 1999-12-19 Eli Zaretskii: Re: Release: Free recode 3.5
+ 7. 1999-12-19 François Pinard: Re: Release: Free recode 3.5
+
+../fallbacks/rmail/Arabic
  1. 1998-06-18 Roman Czyborra: Arabic renderer in four lines of Perl
  2. 1996-12-04 unicode@Unicode.ORG: Arabic code pages (fwd)
  3. 1999-03-08 Bill Kerruish: Re: recode-3.4g for use with Arabjoin
  4. 1998-07-03 TAKAHASHI Naoto: new arabic package for Mule-2.3
  5. 1998-03-23 Kenichi Handa: Re: Arabic in xemacs (or equivalent if necessary)
+ 6. 1999-07-09 François Pinard: Re: MULE and TeX
+ 7. 1999-07-21 Eli Zaretskii: Re: `paxutils', `tar' and Paul, the saga only beg
+ 8. 1996-10-29 Francois Yergeau: Re: GNU utils and proportional fonts
 
-../rmail/options/Cyrillic-Emacs
- 1. 1997-08-21 Kenichi Handa: Re: input cyrillic
- 2. 1997-08-23 Kenichi Handa: Re: Thank you, Re: input cyrillic
- 3. 1997-08-25 Martin J. Dürst: Re: input cyrillic
-
-../rmail/options/Cyrillic-LaTeX
- 1. 1998-05-20 Barbara Beeton: Re: Cyrillic by AMS
- 2. 1998-05-21 Boguslaw Jackowski: re: Cyrillic fonts by AMS
- 3. 1998-05-21 Barbara Beeton: re: Cyrillic fonts by AMS
- 4. 1998-05-21 Boguslaw Jackowski: Re: Cyrillic fonts by AMS (hopefully my fina
- 5. 1998-06-07 Barbara Beeton: Re: Cyrillic fonts with T1 encoding
- 6. 1998-06-08 taupin: Cyrillic fonts with T1 encoding
- 7. 1998-06-08 Robin Fairbairns: Re: Cyrillic fonts with T1 encoding
- 8. 1998-06-08 taupin: About cyrillic fonts.
- 9. 1998-06-09 taupin: Re: Ligature question
+../fallbacks/rmail/CLASSER
+ 1. 1996-03-28 Keld J|rn Simonsen: (POSIX.2 96) proposal for culturally depende
+ 2. 1996-04-07 Hallvard B Furuseth: recode suggestion: as-readable-as-possible
+ 3. 1996-04-17 Don Cragun: (SC22WG15RIN.324) (POSIX.2 96) proposal for cultural
+ 4. 1996-06-21 Keld J|rn Simonsen: recode [was: Re: Spelling "sango" in ISO 639
+ 5. 1998-07-02 Thorgeir Sigurdsson: (TC304.1838) Fallback info request- N839
+ 6. 1998-07-03 Keld J|rn Simonsen: (TC304.1839) Fallback info request- N839
+ 7. 1998-07-07 borka@e5.ijs.si: (TC304.1853) Fallback info request- N839
+ 8. 1998-07-07 Keld J|rn Simonsen: (TC304.1857) fallback
+ 9. 1998-07-17 Johan van Wingen: (TC304.1867) fall back
+10. 1998-07-21 borka@e5.ijs.si: (TC304.1874) German reaction to Enquiry among m
+11. 1998-07-22 borka@e5.ijs.si: (TC304.1887) German reaction to Enquiry among m
+12. 1998-07-22 Marc Wilhelm Kster: (TC304.1890) German reaction to Enquiry amon
+13. 1998-07-22 Markus Kuhn: (TC304.1894) fallback characters
+14. 1998-07-23 John Clews: (TC304.1902) Actions on UTF-Mnemonic/Fallbacks/trans
+15. 1998-09-15 Alain LaBont\82é\82 : Re: Two questions
+16. 1998-10-24 François Pinard: HTML, fallbacks and varia
+17. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available
+18. 1998-12-27 Martin Mares: Assorted recode ideas
+19. 1998-07-22 John Clews: (TC304.1897) Fallbacks/transformation
+20. 1997-12-04 Ulrich Drepper: Re: recode problem
+21. 1997-12-03 François Pinard: Re: recode problem
+22. 1998-12-27 François Pinard: Re: Assorted recode ideas
+23. 1998-11-18 Thorgeir Sigurdsson: (TC304.2092) N858 Fallback 1st draft
+24. 1998-11-19 Michael Everson: (TC304.2094) N858 Fallback 1st draft
+25. 1998-11-20 Chris Makemson: (TC304.2100) (TC304.2094) N858 Fallback 1st draf
+26. 1998-11-20 Michael Everson: (TC304.2101) N858 Fallback 1st draft
+27. 1999-02-15 Thorgeir Sigurdsson: (CEN/TC304-N881) Euro report
+28. 1998-12-28 Keld J|rn Simonsen: Re: Recode 3.4n: combining byte to byte brok
+29. 1998-12-27 Martin Mares: Assorted recode ideas
+30. 1998-12-27 François Pinard: Re: Assorted recode ideas
 
-../rmail/options/Danish
+../fallbacks/rmail/Danish
  1. 1998-05-01 Bo Vagner Hoejer: Re: hello-1.3.10.da.po
 
-../rmail/options/Esperanto
+../fallbacks/rmail/Dutch
+ 1. 1999-03-22 Thorgeir Sigurdsson: (CEN/TC304-N889) Dutch Char Set Policy
+
+../fallbacks/rmail/Esperanto
  1. 1998-10-04 Moshe Zadka: recode: Esperanto addition?
  2. 1992-07-10 Will Overington: Usenet University. Learning Material. Esperanto
  3. 1992-07-22 Will Overington: TOOLS Roman (including Esperanto) and Cyrillic
  7. 1993-12-23 Jim Kingdon: Changes to recode for Esperanto
  8. 1994-01-13 Thorbjoern Hansen: Re: Suggestions for `recode'
 
-../rmail/options/French
+../fallbacks/rmail/Français
+ 1. 1996-07-17 Alain LaBont/e'/: Correction required in the French title of ISO
+ 2. 1996-08-08 Alain LaBont/e'/: Réunions de l'ISO à Québec
+ 3. 1997-03-13 Alain LaBont/e'/: Character names and identifiers (was: Re: (SC2
+ 4. 1998-03-18 Alain LaBonté : Re: Noms de caractères Unicode et ISO
+ 5. 1998-03-23 Alain LaBonté : Re: Liste de noms de caractères du JUC
+ 6. 1998-09-12 Alain LaBonté : Version française des normes
+ 7. 1997-01-30 Alain LaBont/e'/: Re: HTLM et signes diacritiques
+ 8. 1998-12-09 Alain LaBonté : Re: FW: Localising Unicode character names
+ 9. 1998-12-17 François Pinard: Blancs suffixes
+10. 1998-12-17 François Pinard: Autres détails (je suis un peu maniaque :-)
+11. 1998-12-17 François Pinard: Re: recode et table française
+12. 1999-04-12 Alain LaBonté : Double name in the new version of the UCS
+13. 1998-03-25 Alain LaBonté : Versions françaises des produits de Microsoft
+
+../fallbacks/rmail/French
  1. 1994-03-11 Francois Pinard: recode
  2. 1994-11-16 Francois Pinard: Re: recode 3.4+ and HTML
  3. 1996-09-24 François Pinard: Re: recode-3.4
 12. 1998-02-24 François Pinard: Re: Subspace-based fault Subspace-based fault d
 13. 1993-02-14 Harald Tveit Alvestrand: Re: ISO-8859-1 and French
 
-../rmail/options/German
+../fallbacks/rmail/German
  1. 1997-09-05 Michael Mauch: Recode 3.4: latin small letter sharp s (german) i
  2. 1998-04-28 Jochen.Hayek@acm.org: what about `ASCII with easy German convent
  3. 1998-04-28 François Pinard: Re: what about `ASCII with easy German conventi
  5. 1994-04-13 Ulrich Windl: recode 3.3
  6. 1997-11-25 Markus Kuhn: Re: ISO 10646/UTF-8 support for recode 3.4
 
-../rmail/options/Greek
+../fallbacks/rmail/Greek
  1. 1994-10-13 Liam R. E. Quin: Re: Multilingual HTML, SGML documents?
 
-../rmail/options/Hebrew
+../fallbacks/rmail/Hebrew
  1. 1997-10-03 Noam Shomron: Re: Hebrew Transcription
  2. 1997-10-01 Noam Shomron: Hebrew Transcription
  3. 1997-10-03 Martin J. Dürst: Re: Hebrew Transcription
  5. 1997-10-01 Noam Shomron: Re: Hebrew
  6. 1992-02-06 Nathaniel Borenstein: test of =?iso-8859-8?q?=FA=E9=F8=E1=F2?= i
 
-../rmail/options/Hungarian
+../fallbacks/rmail/Hungarian
  1. 1995-11-02 Andras Kornai: Re: Hungarian
 
-../rmail/options/Irish
+../fallbacks/rmail/Irish
  1. 1995-02-15 Daniel Quinlan: Re: recode 3.4 documentation
  2. 1995-01-11 Daniel Quinlan: GNU recode addition - Gaelic
  3. 1995-02-15 Daniel Quinlan: Re: recode 3.4 documentation
 
-../rmail/options/compose
+../fallbacks/rmail/compose
  1. 1998-07-21 Markus Kuhn: (TC304.1878) UTF-mnemonic (was: German reaction)
  2. 1998-07-24 K I Larsson: (TC304.1903) Keyboard compose sequences
  3. 1998-12-08 Ulrich Drepper: Re: Character composition
  6. 1998-12-08 Ulrich Drepper: Re: Character composition
  7. 1998-12-10 Martin J. Duerst: Re: Character composition
 
-../rmail/options/fallback
- 1. 1996-03-28 Keld J|rn Simonsen: (POSIX.2 96) proposal for culturally depende
- 2. 1996-04-07 Hallvard B Furuseth: recode suggestion: as-readable-as-possible
- 3. 1996-04-17 Don Cragun: (SC22WG15RIN.324) (POSIX.2 96) proposal for cultural
- 4. 1996-06-21 Keld J|rn Simonsen: recode [was: Re: Spelling "sango" in ISO 639
- 5. 1998-07-02 Thorgeir Sigurdsson: (TC304.1838) Fallback info request- N839
- 6. 1998-07-03 Keld J|rn Simonsen: (TC304.1839) Fallback info request- N839
- 7. 1998-07-07 borka@e5.ijs.si: (TC304.1853) Fallback info request- N839
- 8. 1998-07-07 Keld J|rn Simonsen: (TC304.1857) fallback
- 9. 1998-07-17 Johan van Wingen: (TC304.1867) fall back
-10. 1998-07-21 borka@e5.ijs.si: (TC304.1874) German reaction to Enquiry among m
-11. 1998-07-22 borka@e5.ijs.si: (TC304.1887) German reaction to Enquiry among m
-12. 1998-07-22 Marc Wilhelm Kster: (TC304.1890) German reaction to Enquiry amon
-13. 1998-07-22 Markus Kuhn: (TC304.1894) fallback characters
-14. 1998-07-23 John Clews: (TC304.1902) Actions on UTF-Mnemonic/Fallbacks/trans
-15. 1998-09-15 Alain LaBont\82é\82 : Re: Two questions
-16. 1998-10-24 François Pinard: HTML, fallbacks and varia
-17. 1998-11-22 François Pinard: Re: Free X11 Unicode terminal font available
-18. 1998-12-27 Martin Mares: Assorted recode ideas
-19. 1998-07-22 John Clews: (TC304.1897) Fallbacks/transformation
-20. 1997-12-04 Ulrich Drepper: Re: recode problem
-21. 1997-12-03 François Pinard: Re: recode problem
-22. 1998-12-27 François Pinard: Re: Assorted recode ideas
-23. 1998-11-18 Thorgeir Sigurdsson: (TC304.2092) N858 Fallback 1st draft
-24. 1998-11-19 Michael Everson: (TC304.2094) N858 Fallback 1st draft
-25. 1998-11-20 Chris Makemson: (TC304.2100) (TC304.2094) N858 Fallback 1st draf
-26. 1998-11-20 Michael Everson: (TC304.2101) N858 Fallback 1st draft
-27. 1999-02-15 Thorgeir Sigurdsson: (CEN/TC304-N881) Euro report
-28. 1998-12-28 Keld J|rn Simonsen: Re: Recode 3.4n: combining byte to byte brok
-29. 1998-12-27 Martin Mares: Assorted recode ideas
-30. 1998-12-27 François Pinard: Re: Assorted recode ideas
-
-../rmail/options/flat
+../fallbacks/rmail/flat
  1. 1996-04-30 Yann Dirson: Re: recode: suggestion
 
-../rmail/options/generic
+../fallbacks/rmail/generic
  1. 1993-02-10 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii?
 
-../rmail/options/mnemo
+../fallbacks/rmail/mnemo
  1. 1995-02-28 Francois Pinard: UUPC
 
-../rmail/options/translit
+../fallbacks/rmail/translit
  1. 1996-04-07 Hallvard B Furuseth: recode suggestion: as-readable-as-possible
  2. 1996-10-14 Lars Magne Ingebrigtsen: Re: 8 bits in citations (Was: Re: sgnus
  3. 1997-11-25 Fran\82çois Pinard: Re: ISO 10646/UTF-8 support for recode 3.4
 13. 1998-07-08 Johan van Wingen: (TC304.1858) transliterating Greek
 14. 1996-10-03 feeley@JSP.UMontreal.CA: (none)
 
-../rmail/options/translit-iso
+../fallbacks/rmail/translit-iso
  1. 1996-05-31 Alain LaBont/e'/: Réflecteur de courrier sur la translittération
  2. 1996-06-12 Alain LaBont/e'/: Translittération
  3. 1996-06-24 dorai@vnet.ibm.com: Transliteration standards; Liaisons; and Ema
 42. 1997-11-25 Keld J|rn Simonsen: (i18n.416) Transliteration [and transcriptio
 43. 1997-11-25 Keld J|rn Simonsen: (i18n.417) Transliteration [and transcriptio
 
-../rmail/surfaces/base64
- 1. 1998-09-11 Lars Magne Ingebrigtsen: Re: [Various] base64-decode
- 2. 1998-09-10 Santiago Vila: Re: [Various] base64-decode
- 3. 1998-09-10 François Pinard: Re: [Various] base64-decode
- 4. 1998-09-29 Christopher Davis: Re: line endings
+../iso/rmail/14652
+ 1. 1997-12-21 Alain LaBonté - 3: (SC22WG20.2149) 14652 FDC available
+ 2. 1998-01-07 Keld J|rn Simonsen: Re: ISO/IEC FCD 14651 and 14652
+ 3. 1998-01-06 x.zhang@utoronto.ca: Re: ISO/IEC FCD 14651 and 14652
+ 4. 1998-03-12 Keld J|rn Simonsen: Re: 9995-3 table 1 + registering Canadian lo
+ 5. 1998-03-12 Keld J|rn Simonsen: Re: 9995-3 table 1 + registering Canadian lo
+ 6. 1998-12-31 Keld J|rn Simonsen: (i18n.439) new sorting and locale drafts
 
-../rmail/surfaces/binhex
- 1. 1996-08-28 Claude Charest: Re: Binhex
- 2. 1995-04-05 John Gardiner Myers: Re: I Need MIME/BASE64 Decoder for Nintendo
- 3. 1995-05-18 Chris Newman: Re: Info on MACMIME needed (bis)
- 4. 1998-11-30 Lars Magne Ingebrigtsen: MIME display: broken multipart; binhex
- 5. 1998-08-07 Remi St-Onge: pasv
+../iso/rmail/14766
+ 1. 1998-05-19 Keld J|rn Simonsen: (iso14766.15) 14766 WD 3
 
-../rmail/surfaces/braille
- 1. 1994-05-18 Francois Pinard: Braille codes
+../iso/rmail/cac-jtc1-i18n
+ 1. 1998-04-02 Zbigniew, Ignatowicz: CAC-JTC1-I18N - mailing list.
+ 2. 1998-05-29 Uma Umamaheswaran: (none)
+ 3. 1998-04-03 SCC-JTC1_Forum@scc.ca: Notification of new entries in "CAC/JTC1/
+ 4. 1995-03-24 Keld J|rn Simonsen: Re: Unicode/10646 equivalences for RFC 1345
+ 5. 1996-02-27 Keld J|rn Simonsen: (i18n.292) new sc2/wg2 pages
 
-../rmail/surfaces/crypt
- 1. 1995-07-24 John Gardiner Myers: Re: New base64 option to uuencode in POSIX
- 2. 1995-08-03 David Eaves: Re: MIME Content-MD5 header
+../iso/rmail/cdra
+ 1. 1994-10-20 Erik Naggum: Re: Abandon ASCII for EBCDIC now!
 
-../rmail/surfaces/graphic
- 1. 1994-11-16 Francois Pinard: Re: recode 3.4+ and HTML
- 2. 1994-10-11 mike@vlsivie.tuwien.ac.at: Re: recode
- 3. 1994-12-02 Lukas Petrlik: recode 3.4
+../iso/rmail/collate
+ 1. 1997-10-29 Alain LaBonté - 3: Re: une question naïve
+ 2. 1998-08-05 Alain LaBonté : RE: on Draft DoC on 14651 - sorting of numbers i
+ 3. 1998-08-17 Alain LaBonté : RE: on Draft DoC on 14651 - sorting of numbers i
+ 4. 1998-05-22 Alain LaBonté : ISO/IEC 14652 and ISO/IEC 14651
+ 5. 1998-07-30 Alain LaBonté : Tri respectant la norme canadienne dans Excel
+ 6. 1998-07-30 Alain LaBonté : Tri ne respectant pas la norme canadienne dans E
+ 7. 1998-12-27 Alain LaBonté : Re: (SC22WG20.2470) Macron in ISO/IEC FCD 14651
+ 8. 1998-12-24 Alain LaBonté : Re: Note from John Clews [on international order
+ 9. 1998-12-30 Alain LaBonté : Re: (SC22WG20.2484) (SC22WG20.2483) (SC22WG20.24
+10. 1999-01-06 Alain LaBonté : Re: Caractères UCS cherchés :-)
+11. 1999-01-07 Thorgeir Sigurdsson: (CEN/TC304-N877) Greek Ordering
+12. 1998-11-19 Alain LaBonté: ISO/IEC 14651
+13. 1998-11-16 Alain LaBonté: Final final F[inal]CD 14651 ready for ballot (:
+14. 1998-11-17 Alain LaBonté: Re: Final final F[inal]CD 14651 ready for ballot
+15. 1998-11-17 Alain LaBonté: 14651
+16. 1998-11-10 Alain LaBonté: Ordering standard: to be sent for ballot unless t
+17. 1998-11-10 Alain LaBonté: Ordering standard: to be sent for ballot unless t
+18. 1999-04-29 Alain LaBonté : Re: Thai String Collation
 
-../rmail/surfaces/hlp
- 1. 1998-10-29 Marc Verreault: Re: [Q]: *.hlp format to HTML
+../iso/rmail/elot
+ 1. 1996-08-20 John Clews: Re: Transliteration and ISO
+ 2. 1996-08-20 John Clews: EUROASCII and ASIASCII project proposals
+ 3. 1996-08-23 François Pinard: [Mail Delivery Subsystem <MAILER-DAEMON@IRO.UMo
+ 4. 1996-08-24 Mail Delivery Subsystem: Returned mail: Cannot send message for
+ 5. 1996-08-22 François Pinard: subscribe
+ 6. 1996-08-27 Mail Delivery Subsystem: Returned mail: Cannot send message for
 
-../rmail/surfaces/implied
- 1. 1998-12-07 François Pinard: Re: Novice user of recode with question
- 2. 1997-12-09 Milivoj Ivkovic: Re: recode
+../iso/rmail/euro
+ 1. 1998-11-03 E.I. Kolehmainen: (TC304.2059) Euro Currency Support in Certain
 
-../rmail/surfaces/keyboards
- 1. 1994-09-07 Darin Johnson: Re: Unicode & Linux's future (was Re: Acid)
- 2. 1994-09-07 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid)
- 3. 1994-09-07 Richard L. Goerwitz: Re: Unicode & Linux's future (was Re: Acid)
- 4. 1994-09-08 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid)
- 5. ---- -- -- Alain LaBont(e'): Re: list of character code standards
- 6. ---- -- -- Alain LaBont(e'): Input methods to enter characters of ISO/IEC 1
- 7. ---- -- -- Alain LaBont(e'): Input methods -- 8859-1-coded version
- 8. 1994-08-29 ALB@immedia.ca: Universal Input methods
- 9. 1995-04-19 Gilles Pinard: Divers
-10. 1989-07-21 Francois Pinard: Support du franc,ais sur icule
+../iso/rmail/guide
+ 1. 1999-03-08 Thorgeir Sigurdsson: (CEN/TC304-N885) Guide on Character sets
+ 2. 1999-03-10 malinder@algonet.se: (TC304.2138) Guide to Use of Character Sets
+ 3. 1999-03-10 Subscription Confirmation: Subscribe guide CJIPROHXWU
+ 4. 1999-03-10 François Pinard: Re: Subscribe guide CJIPROHXWU
+ 5. 1999-03-10 STRI requests: Re: Subscribe guide CJIPROHXWU
+ 6. 1999-03-10 François Pinard: (none)
 
-../rmail/surfaces/rfc934
- 1. 1994-10-31 David J. MacKenzie: [pinard@iro.umontreal.ca: Re: bug in ansi2kn
- 2. 1994-10-31 Francois Pinard: Re: [pinard@iro.umontreal.ca: Re: bug in ansi2k
+../iso/rmail/iso
+ 1. 1997-10-29 Alain LaBonté - 3: Re: une question naïve
+ 2. 1997-10-29 Alain LaBont\i - 2: L'ISO : francisation plus avancée qu'à l'UIT
+ 3. 1997-11-04 Alain LaBont\i - 3: Nouveaux comités de l'ISO/CEI/JTC1 et leurs
+ 4. 1997-11-04 Alain LaBonté - 1: RE: <<L'ISO et la CEI ne font pas partie des
+ 5. 1998-04-22 Alain LaBonté : Plénière du JTC1 et Adaptabilité culturelle
+ 6. 1998-03-10 Alain LaBonté : Nom et adresse du Conseil canadien des normes da
+ 7. 1998-03-12 Alain LaBonté : Re: Adresse du site Web du CCN
 
-../rmail/surfaces/sgml
- 1. 1995-04-19 François Pinard: Re: ISO 10646 & recode concept
+../iso/rmail/mailing-lists
+ 1. 1997-10-31 Keld J|rn Simonsen: (TC304.1321) iso14766 list created
+ 2. 1997-11-19 Michael Everson: (TC304.1354) iso15924 list created
+ 3. 1997-11-19 Michael Everson: (i18n.399) iso15924 list created
+ 4. 1997-11-03 Keld J|rn Simonsen: (TC304.1323) list of i18n lists
+ 5. 1997-11-13 borka@e5.ijs.si: (TC304.1345) list of i18n lists
+ 6. 1997-11-13 Alain LaBonté - 2: (TC304.1346) list of i18n lists
+ 7. 1997-11-19 Tom Garland SMI European Software Centre: (TC304.1351) list of i
+ 8. 1998-01-30 Þorvarður Kári Ólafsson: (TC304.1472) Discussion lists for funde
+ 9. 1998-02-21 Þorvarður Kári Ólafsson: (TC304.1506) Please split up the discus
+10. 1998-04-06 Þorvarður Kári Ólafsson: (TC304.1684) Project discussion lists
+11. 1998-05-01 Keld J|rn Simonsen: (TC304.1742) guide on POSIX locales
+12. 1998-05-06 Þorvarður Kári Ólafsson: (TC304.1750) Keyboards list
 
-../rmail/surfaces/shar-docum
- 1. ....-..-.. lvirden@cas.org: Re: Solution for [Re: shar 4.0 make shar.dvi pr
- 2. 1994-09-09 gaumondp@ere.umontreal.ca: Comments about shar-4.0
- 3. 1994-09-11 davidsen@tmr.com: Re: shar 4.0 [was: Re: disk buffering in Linux
- 4. 1994-09-12 Francois Pinard: Say a word about GNU touch
- 5. 1994-09-16 djm@va.pubnix.com: comments on shar 4.0 doc
- 6. 1994-09-10 Mailer-Daemon@ileaf.com: Returned mail: Host unknown
- 7. 1994-09-03 Francois Pinard: GNU shar 4.0
- 8. 1994-11-11 Francois Pinard: Re: Release: GNU sharutils 4.1
- 9. 1994-11-11 Martin Maechler: Re: Release: GNU sharutils 4.1
-10. 1994-11-30 Francois Pinard: Re: Suggestion for Sharutils (feature)
-11. 1994-11-30 Francois Pinard: Re: Suggestion for Sharutils (feature)
-12. 1995-02-11 Francois Pinard: sh, shar, unshar - explications
-13. 1994-11-16 Francois Pinard: Re: sharutils
-14. 1994-11-17 Winston Edmond: Suggested change to shar
-15. 1994-11-17 Francois Pinard: Re: Suggested change to shar
-16. 1995-03-31 François Pinard: Re: v47i048: htmlchek - htmlchek - HTML Error C
-17. 1995-12-11 François Pinard: Re: shar & standard input
-18. 1995-12-12 François Pinard: Re: GNU shar 4.1: ambiguous date format in head
+../iso/rmail/mes
+ 1. 1996-05-04 Michael Everson: (i18n.327) European Subsets of ISO/IEC 10646-1
+ 2. 1998-07-13 Chris Makemson: (TC304.1862) Review draft of the MES
+ 3. 1998-07-21 Klaas Ruppel: (TC304.1875) (TC304 P10) Review draft of the MES
+ 4. 1998-07-21 K I Larsson: (TC304.1877) Review MES draft
+ 5. 1998-08-26 Uma Umamaheswaran: Software to assist you in scrutinizing MES dr
 
-../rmail/surfaces/tranisci
- 1. 1996-02-16 Alain LaBont:e':: Re: Frappe de caracte`res accentue's
+../iso/rmail/registry
+ 1. 1998-05-20 Martin J. Duerst: International registry of coded character sets
+ 2. 1998-05-20 Martin J. Duerst: International registry of coded character sets
+ 3. 1997-10-07 Keld J|rn Simonsen: (TC304.1258) characters in MES - ENV 1973
+ 4. 1997-10-07 Þorvarður Kári Ólafsson: (TC304.1264) characters in MES - ENV 19
+ 5. 1998-08-03 Johan van Wingen: (TC304.1918) comparison of repertoires
+ 6. 1998-08-04 Johan van Wingen: (TC304.1921) Annex C to NEN 1888 (revision in
+ 7. 1998-05-13 Uma Umamaheswaran: (SC2.432) International registries of Coded C
+ 8. 1998-05-20 Martin J. Duerst: International registry of coded character sets
+ 9. 1998-09-16 Keld J|rn Simonsen: Cultural registry as international standard
+10. 1998-10-15 Uma Umamaheswaran: (SC2.463) New Registrations
+11. 1998-10-27 Thorgeir Sigurdsson: (TC304.2049) N852 Guide on the use of Char
+12. 1997-10-07 Keld J|rn Simonsen: Re: librecode, libc, gettext
+13. 1993-02-10 Jon Postel: Re: transcription iso-8859-1 to us-ascii?
+14. 1994-11-12 Ned Freed: Re: Non-observance of ; charset=xxxxxx etc
+15. 1997-01-12 Alain LaBont/e'/: Re: GUTenberg/oe y trema
+16. 1997-02-18 John F. Chandler: (i18n.347) Update to ISO International Registr
+17. 1995-03-14 Roman Czyborra: KOI8-R charset
+18. 1998-04-12 Keld J|rn Simonsen: (i18n.437) new list of character names
+19. 1998-04-13 Uma Umamaheswaran: (i18n.437) new list of character names
+20. 1993-02-10 Jon Postel: Re: transcription iso-8859-1 to us-ascii?
+21. 1994-10-12 Johannes Wilhelm: Re: ISO Latin-1 for DOS ?
+22. 1994-10-12 Markus Kuhn: Re: ISO Latin-1 for DOS ?
+23. 1994-10-17 Kosta Kostis: Re: ISO8859-1 to US-ASCII
+24. 1994-10-18 Kosta Kostis: Re: ISO8859-1 to US-ASCII
+25. 1994-11-16 J.P. Kuypers: Re: MacEudora and MIME charset
+26. 1994-11-29 Barry Bouwsma: Re: Looking for ISO-8859 character set definition
+27. 1995-02-10 Johan van Wingen: list of character code standards
+28. 1995-03-01 Johan van Wingen: (SC2WG3.47) document by ftp
+29. 1995-03-21 Kari E. Hurtta: Kehpager (Re: Latin-1 <-> NRC character set mapp
+30. 1995-04-10 Primoz Peterlin: Re: Recode and CP 1250
+31. 1996-06-18 John F. Chandler: (i18n.332) Updated summary of ISO IR
+32. 1997-06-20 Lukas Petrlik: Re: cs encodings (was: Re: recode 3.4)
+33. 1997-07-22 Keld J|rn Simonsen: (i18n.363) CEN cultural register
+34. 1996-01-13 Keld J|rn Simonsen: (i18n.285) CEN/TC304 PT01 report
+35. 1999-07-07 LaBonté, Alain: Enregistrement des jeux de caractères ISO - comi
+
+../iso/rmail/références
+ 1. 1998-04-03 Alain LaBonté : Re: Étude sur le codage des caractères
+ 2. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix
+
+../iso/rmail/using-word
+ 1. 1996-10-06 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
+
+../iso/rmail/web-sites
+ 1. 1997-11-03 Thorgeir Sigurdsson: (TC304.1326) Web of CEN and our Call
+ 2. 1997-11-19 Michael Everson: (i18n.399) iso15924 list created
+ 3. 1998-03-13 Thorgeir Sigurdsson: (TC304.1529) Inability to Distribute via ST
+ 4. 1998-03-20 Keld J|rn Simonsen: (TC304.1535) Cultural convention standards f
+ 5. 1998-04-17 Alain LaBonté : Versions pdf (fr+en) des alphabets latin n° 8 (c
+ 6. 1998-05-12 Marc Wilhelm Kster: (TC304.1757) First draft of the European Ord
+ 7. 1998-06-02 Michael Everson: (TC304.1790) (TC304 P11) WS/Alpha base document
+ 8. 1998-06-03 Keld J|rn Simonsen: (TC304.1791) taxonomy draft
+ 9. 1998-06-15 Thorgeir Sigurdsson: (TC304.1812) ISSS URL
+10. 1998-07-01 borka@e5.ijs.si: (TC304.1830) LE journal on the WEB
+11. 1998-07-02 Thorgeir Sigurdsson: (TC304.1837) Documents, in the mail
+12. 1998-07-07 Thorgeir Sigurdsson: (TC304.1854) Database of Latin letters
+13. 1998-08-05 Alain LaBonté : Re: Obtaining ISO standards in Canada
+
+../surfaces/rmail/base64
+ 1. 1998-09-11 Lars Magne Ingebrigtsen: Re: [Various] base64-decode
+ 2. 1998-09-10 Santiago Vila: Re: [Various] base64-decode
+ 3. 1998-09-10 François Pinard: Re: [Various] base64-decode
+ 4. 1998-09-29 Christopher Davis: Re: line endings
+ 5. 1999-12-13 François Pinard: Re: Whitespace in base64 input
+ 6. 1999-12-13 François Pinard: Re: Base64 decoding
+
+../surfaces/rmail/binhex
+ 1. 1996-08-28 Claude Charest: Re: Binhex
+ 2. 1995-04-05 John Gardiner Myers: Re: I Need MIME/BASE64 Decoder for Nintendo
+ 3. 1995-05-18 Chris Newman: Re: Info on MACMIME needed (bis)
+ 4. 1998-11-30 Lars Magne Ingebrigtsen: MIME display: broken multipart; binhex
+ 5. 1998-08-07 Remi St-Onge: pasv
+
+../surfaces/rmail/braille
+ 1. 1994-05-18 Francois Pinard: Braille codes
+
+../surfaces/rmail/control-z
+ 1. 1999-07-29 Per Starback: Re: Ctrl-Z in files
+
+../surfaces/rmail/crypt
+ 1. 1995-07-24 John Gardiner Myers: Re: New base64 option to uuencode in POSIX
+ 2. 1995-08-03 David Eaves: Re: MIME Content-MD5 header
+
+../surfaces/rmail/doc-hexa
+ 1. 1998-10-14 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
+ 2. 1998-10-14 Francois Yergeau: Re: Pour ceux qui ont le temps de lire... Cadr
+ 3. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
+ 4. 1998-10-23 François Pinard: Re: Pour ceux qui ont le temps de lire... Cadre
+
+../surfaces/rmail/endlines
+ 1. 1999-10-31 Matt Gushee: Re: A Small dos->UNIX convertor
+
+../surfaces/rmail/graphic
+ 1. 1994-11-16 Francois Pinard: Re: recode 3.4+ and HTML
+ 2. 1994-10-11 mike@vlsivie.tuwien.ac.at: Re: recode
+ 3. 1994-12-02 Lukas Petrlik: recode 3.4
+
+../surfaces/rmail/hlp
+ 1. 1998-10-29 Marc Verreault: Re: [Q]: *.hlp format to HTML
+
+../surfaces/rmail/implied
+ 1. 1998-12-07 François Pinard: Re: Novice user of recode with question
+ 2. 1997-12-09 Milivoj Ivkovic: Re: recode
+
+../surfaces/rmail/keyboards
+ 1. 1994-09-07 Darin Johnson: Re: Unicode & Linux's future (was Re: Acid)
+ 2. 1994-09-07 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid)
+ 3. 1994-09-07 Richard L. Goerwitz: Re: Unicode & Linux's future (was Re: Acid)
+ 4. 1994-09-08 Andries Brouwer: Re: Unicode & Linux's future (was Re: Acid)
+ 5. ---- -- -- Alain LaBont(e'): Re: list of character code standards
+ 6. ---- -- -- Alain LaBont(e'): Input methods to enter characters of ISO/IEC 1
+ 7. ---- -- -- Alain LaBont(e'): Input methods -- 8859-1-coded version
+ 8. 1994-08-29 ALB@immedia.ca: Universal Input methods
+ 9. 1995-04-19 Gilles Pinard: Divers
+10. 1989-07-21 Francois Pinard: Support du franc,ais sur icule
+
+../surfaces/rmail/rfc934
+ 1. 1994-10-31 David J. MacKenzie: [pinard@iro.umontreal.ca: Re: bug in ansi2kn
+ 2. 1994-10-31 Francois Pinard: Re: [pinard@iro.umontreal.ca: Re: bug in ansi2k
+
+../surfaces/rmail/sgml
+ 1. 1995-04-19 François Pinard: Re: ISO 10646 & recode concept
+
+../surfaces/rmail/shar-docum
+ 1. ....-..-.. lvirden@cas.org: Re: Solution for [Re: shar 4.0 make shar.dvi pr
+ 2. 1994-09-09 gaumondp@ere.umontreal.ca: Comments about shar-4.0
+ 3. 1994-09-11 davidsen@tmr.com: Re: shar 4.0 [was: Re: disk buffering in Linux
+ 4. 1994-09-12 Francois Pinard: Say a word about GNU touch
+ 5. 1994-09-16 djm@va.pubnix.com: comments on shar 4.0 doc
+ 6. 1994-09-10 Mailer-Daemon@ileaf.com: Returned mail: Host unknown
+ 7. 1994-09-03 Francois Pinard: GNU shar 4.0
+ 8. 1994-11-11 Francois Pinard: Re: Release: GNU sharutils 4.1
+ 9. 1994-11-11 Martin Maechler: Re: Release: GNU sharutils 4.1
+10. 1994-11-30 Francois Pinard: Re: Suggestion for Sharutils (feature)
+11. 1994-11-30 Francois Pinard: Re: Suggestion for Sharutils (feature)
+12. 1995-02-11 Francois Pinard: sh, shar, unshar - explications
+13. 1994-11-16 Francois Pinard: Re: sharutils
+14. 1994-11-17 Winston Edmond: Suggested change to shar
+15. 1994-11-17 Francois Pinard: Re: Suggested change to shar
+16. 1995-03-31 François Pinard: Re: v47i048: htmlchek - htmlchek - HTML Error C
+17. 1995-12-11 François Pinard: Re: shar & standard input
+18. 1995-12-12 François Pinard: Re: GNU shar 4.1: ambiguous date format in head
+
+../surfaces/rmail/tranisci
+ 1. 1996-02-16 Alain LaBont:e':: Re: Frappe de caracte`res accentue's
  2. 1996-03-22 asiascii@sesame.demon.co.uk (John Clews) (by way of Alain LaBont
  3. 1996-08-23 Alain LaBont/e'/: Transliteration, ISO and bullet-proof Internet
  4. 1997-12-16 Alain LaBonté - 1: Re: RFC1345 charset
 
-../rmail/surfaces/uu-bigger-specs
+../surfaces/rmail/uu-bigger-specs
  1. 1993-09-05 mathew: Re: uuencode/uudecode
  2. 1993-09-07 mathew: Re: GNU uudecode: why no GNU btoa?
  3. 1994-03-03 Ian Jackson: uuencode 1.0: Ultrix, use of spaces, no table, not
 12. 1993-09-02 David Herron: Re: uuencode/uudecode
 13. 1995-02-16 Martin Schulze: Hint: uudecode/uuencode
 
-../rmail/surfaces/uu-doc
+../surfaces/rmail/uu-doc
  1. 1993-09-02 Ian Lance Taylor: DOS uuencode and uudecode
  2. 1993-10-13 -----: Re: uuencode
  3. 1989-07-17 Allott P: uudecode - permission denied
  9. 1994-11-30 Ulrich Drepper: Re: Prerelease: GNU sharutils 4.1.1
 10. 1995-07-14 Elizabeth B. Naime: Uuencode/uudecode for PC
 
-../rmail/surfaces/uu-new-w-option
+../surfaces/rmail/uu-new-w-option
  1. 1994-10-29 Michael Shields: New `uudecode -w' option for easy multipart dec
  2. 1994-10-29 Francois Pinard: Re: New `uudecode -w' option for easy multipart
  3. 1994-10-29 Michael Shields: Re: New `uudecode -w' option for easy multipart
  4. 1994-10-29 Michael Shields: New `uudecode -w' option for easy multipart dec
 
-../rmail/urgent/african
- 1. 1998-08-18 Laurent Bourbeau: Texinfo - EC-FC
- 2. 1998-08-25 Laurent Bourbeau: Recode 3.4h - Bilan BUG de Laurent
- 3. 1998-09-02 Laurent Bourbeau: Recode - Tests 2
-
-../rmail/urgent/cyrillic-866
- 1. 1998-01-06 Roman Czyborra: Re: cyrillic support in recode - patch
- 2. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch
- 3. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
- 4. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
-
-../rmail/urgent/cyrillic-878
- 1. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
-
-../rmail/urgent/cyrillic-gnus
- 1. 1999-02-19 Lars Magne Ingebrigtsen: Re: How to specify charset in message h
- 2. 1999-02-19 Dmitry Yaitskov: Re: How to specify charset in message headers?
- 3. 1999-02-19 Lars Magne Ingebrigtsen: Re: with 0.76, messages in koi8-r are s
- 4. 1999-02-05 Vladimir Volovich: Re: More charset things
- 5. 1999-02-08 Bill White: Re: More charset things
-
-../rmail/urgent/cyrillic-gost
- 1. 1997-12-05 Roman Czyborra: GOST 19768
- 2. 1997-12-05 Roman Czyborra: ECMA-113
- 3. 1997-12-05 Keld J|rn Simonsen: Re: GOST 19768
- 4. 1999-01-04 Keld J|rn Simonsen: Re: Details in your latest charset tables
-
-../rmail/urgent/cyrillic-latin5
- 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch
-
-../rmail/urgent/cyrillic-unified
- 1. 1997-12-05 Roman Czyborra: new Ukrainian KOI8 charsets
- 2. 1997-12-05 Keld J|rn Simonsen: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 an
- 3. 1998-06-12 Roman Czyborra: KOI8-U
- 4. 1999-01-11 François Pinard: Re: cyrillic support in recode - patch
-
-../rmail/urgent/cyrillic-windows
- 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch
- 2. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
- 3. 1998-01-31 Alexander L. Belikoff: cyrillic support in recode
-
-../rmail/urgent/cyrillic-zzz
- 1. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
- 2. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
- 3. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
- 4. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
- 5. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
- 6. 1998-06-12 Roman Czyborra: proofreading RFC 1345++
- 7. 1998-06-15 Roman Czyborra: ANNOUNCE: new charset soups (ISO 8859, Cyrillic,
- 8. 1998-09-12 Vladimir Volovich: Re: \201 problem reproduced
- 9. 1998-09-12 Vladimir Volovich: Re: \201 problem reproduced
-10. 1998-03-10 Thorgeir Sigurdsson: (TC304.1525) EN1923 is an adopted 8 bit MES
-11. 1997-12-28 Andries.Brouwer@cwi.nl: Re: cyrillic support in recode - patch
-12. 1998-11-18 Uma Umamaheswaran: Site with info on different character sets et
-13. 1999-03-26 Earl Hood: RFC: Character sets in MHonArc (was private Re: MHonA
-14. 1999-03-27 Andrew S. Howell: Re: RFC: Character sets in MHonArc (was privat
-15. 1999-03-29 Koichi Nakatani: Re: RFC: Character sets in MHonArc (was private
-16. 1999-03-24 Takashi P.KATOH: iso-2022 filter
-17. 1999-03-24 Earl Hood: Re: iso-2022 filter
-18. 1999-03-02 Lukas Petrlik: Re: Prerelease: GNU recode 3.4i
-19. 1999-01-06 Martin Mares: Re: Prerelease: GNU recode 3.4i
-20. 1999-02-18 Alexander L. Belikoff: Cyrillic encodings - a more or less autho
-21. 1999-01-25 Alexander L. Belikoff: Re: cyrillic support in recode - patch
-22. 1999-01-09 Alexander L. Belikoff: Re: cyrillic support in recode - patch
-23. 1999-01-11 François Pinard: Re: cyrillic support in recode - patch
-24. 1999-01-25 Alexander L. Belikoff: Re: cyrillic support in recode - patch
-25. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix
-26. 1999-03-02 Lukas Petrlik: Re: Prerelease: GNU recode 3.4i
-27. 1999-01-06 Martin Mares: Re: Prerelease: GNU recode 3.4i
-28. 1999-01-06 Keld J|rn Simonsen: Re: Prerelease: GNU recode 3.4i
-29. 1999-01-05 Martin Mares: Re: Prerelease: GNU recode 3.4i
-30. 1999-01-06 François Pinard: Re: Prerelease: GNU recode 3.4i
-31. 1999-04-13 borka@e5.ijs.si: (TC304.2152) (SC22WG20.2656) Differences betwee
-32. 1999-04-13 Karlsson Kent - keka: (TC304.2153) RE: (SC22WG20.2685) (SC22WG20
-33. 1999-04-15 Konstantin Chuguev: (TC304.2154) (SC22WG20.2686) RE: (SC22WG20.2
-
-../rmail/urgent/doswin
- 1. 1998-03-26 François Pinard: Re: find reco dos executable
- 2. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update
- 3. 1998-11-24 Eli Zaretskii: Re: recode for Amiga - 3.4k update
- 4. 1998-11-24 François Pinard: Re: recode for Amiga - 3.4k update
- 5. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k
- 6. 1998-11-25 Eli Zaretskii: libtool+shell [was: Re: recode for Amiga - 3.4k u
- 7. 1998-11-25 Eli Zaretskii: Perl [was: Re: recode for Amiga - 3.4k update]
- 8. 1998-11-25 Eli Zaretskii: EOLs [was: Re: recode for Amiga - 3.4k update]
- 9. 1998-11-25 Eli Zaretskii: configure+dist [was: Re: recode for Amiga - 3.4k
-10. 1998-11-25 Eli Zaretskii: Intro [was: Re: recode for Amiga - 3.4k update]
-11. 1998-11-30 Eli Zaretskii: Re: New -Spo option to `recode'
-12. 1999-01-31 Matt Armstrong: Re: Cygwin, make install and .exe
-13. 1999-02-15 Eli Zaretskii: Re: gettext.m4 and absolute file names
-14. 1999-04-10 Robert S. Maier: automake problems DJGPP
-15. 1999-04-10 Alexandre Oliva: Re: automake problems DJGPP
-16. 1999-04-13 Eli Zaretskii: Re: ... and paxutils
-17. 1999-04-12 Eli Zaretskii: Re: Playing with DJGPP again
-18. 1999-04-12 Eli Zaretskii: Re: Playing with DJGPP again
-19. 1999-04-15 François Pinard: recode on DJGPP
-20. 1999-06-01 François Pinard: Re: POT file for recode 3.4r now being uploaded
-
-../rmail/urgent/gettext
- 1. 1999-04-02 Laurent Bourbeau: Recode 3.4q - bug-1
- 2. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 6
- 3. 1999-04-05 Laurent Bourbeau: Recode 3.4q - Bug 7
-
-../rmail/urgent/korean
- 1. 1999-03-11 Alain LaBonté : JUC : Noms de caractères coréens
-
-../admin/abe/RMAIL
- 1. 1991-01-17 Francois Pinard: abe and directories; dabe and Turbo-C
- 2. 1991-01-27 Brad Templeton: Re: abe part numbering
- 3. 1991-02-11 Francois Pinard: Possible bug with b= option
- 4. 1991-02-11 Brad Templeton: Re: Possible bug with b= option
- 5. 1992-07-15 Francois Pinard: Minor problem in dabe.c
- 6. 1994-09-23 Francois Pinard: Re: Possible bug with b= option
- 7. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option
- 8. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option
- 9. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option
-10. 1994-09-24 Francois Pinard: Re: Possible bug with b= option
-11. 1994-09-24 Francois Pinard: Re: Possible bug with b= option
-12. 1994-09-26 brad@alto.clarinet.com: Re: Possible bug with b= option
-
-../admin/abrahamsen/RMAIL
- 1. 1993-03-11 Per Abrahamsen: min-key.el: Keyboard Remapping and Character Set
- 2. 1993-06-02 Per Abrahamsen: Danish, Swedish, German, Russian, and DVORAK Key
-
-../admin/apple/RMAIL
- 1. 1987-06-30 Kevin O'Gorman: Comb
- 2. 1995-05-04 Leonardo Topa: Re: mcvert version 2.16 installed
- 3. 1995-03-10 John Gianni: Re: Application/MAC-BINHEX40
- 4. 1995-03-31 Chris Newman: Re: Looking For BinHex Specifications
- 5. 1995-04-02 Kari E. Hurtta: Re: Looking For BinHex Specifications
- 6. 1995-04-07 Andrew M. Langmead: Re: Looking For BinHex Specifications
- 7. 1995-03-31 bill@slipnet.com: Re: Binhex4.0
- 8. 1995-03-05 Mathieu Dubreuil: Re: Rencontre Jeunes - Nations Unies
- 9. 1995-12-08 DOCUMENSA: DTD Loi
-10. 1997-03-12 François Pinard: Macintosh
-
-../admin/btoa/RMAIL
- 1. 1994-09-20 kb@cs.umb.edu: shar, uuencode, atob
- 2. 1994-09-20 Francois Pinard: Re: shar, uuencode, atob
- 3. 1994-07-29 ericb@lsid.hp.com: Re: GNU shar, -M and you
- 4. 1994-07-28 Francois Pinard: Re: GNU shar, -M and you
- 5. 1992-10-09 Jef Poskanzer: version of atob with factor of 2 speedup
- 6. 1993-09-26 Francois Pinard: GNU encode 1.0 - still
- 7. 1989-12-30 Stefan Parmark: Re: BTOA 5.2
- 8. 1989-12-30 Francois Pinard: BTOA 5.2
- 9. 1989-12-31 Francois Pinard: diffs for btoa 5.2 under MSDOS
-10. 1990-07-18 Francois Pinard: shar blues
-11. 1994-09-20 Francois Pinard: Re: shar, uuencode, atob
-12. 1994-09-24 kb@cs.umb.edu: Re: shar, uuencode, atob
-
-../admin/cdc-tape/RMAIL
- 1. 1995-02-03 Francois Pinard: Re: Cyber tape formats
-
-../admin/charconv/RMAIL
- 1. 1993-07-19 Burkhard Kirste: charconv - convert extended character sets (1/2
-
-../admin/german/RMAIL
- 1. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode'
- 2. 1994-01-11 Francois Pinard: Suggestions for `recode'
- 3. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode'
- 4. 1994-01-12 Francois Pinard: shar: diac.tar.gz
- 5. 1994-01-12 Francois Pinard: Re: Suggestions for `recode'
- 6. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode'
- 7. 1994-01-11 Francois Pinard: Suggestions for `recode'
- 8. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode'
- 9. 1994-01-12 Francois Pinard: Re: Suggestions for `recode'
-10. 1994-09-28 gator@cs.tu-berlin.de: new charset for recode
-11. 1994-09-30 Francois Pinard: Re: new charset for recode
-12. 1994-10-01 gator@cs.tu-berlin.de: Re: new charset for recode
-13. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: latex conversions in r
-14. 1994-07-19 Francois Pinard: Re: latex conversions in recode-3.3
-15. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: Re: latex conversions
-16. 1993-02-11 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii?
-17. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1
-18. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1
-19. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1
-20. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1
-21. 1995-01-21 Markus Kuhn: Re: Unicode Matters
-22. 1995-05-09 Ulrich Drepper: Re: Volunteering for translations
-23. 1995-05-10 Ulrich Drepper: Re: Volunteering for translations
-24. 1995-05-10 François Pinard: Re: Volunteering for translations
-25. 1995-06-07 Ulrich Drepper: something you might be interested in
-26. 1995-06-06 François Pinard: Re: something you might be interested in
-27. 1995-06-07 Ulrich Drepper: Re: something you might be interested in
-28. 1995-06-07 François Pinard: Re: something you might be interested in
-29. 1995-07-17 Juergen Weigert (Inf4 - hiwi): recode-3.4 extended 'flat' charac
-30. 1995-07-25 François Pinard: Re: Patch for recode-3.4
-31. 1995-08-22 Ulrich Windl: Re: problem with recode 3
-32. 1995-08-22 François Pinard: Re: problem with recode 3
-33. 1995-05-07 François Pinard: Re: Volunteering for translations
-34. 1995-05-08 Ulrich Drepper: Re: Volunteering for translations
-35. 1995-05-08 Martin Husemann: Re: Volunteering for translations
-36. 1995-05-08 François Pinard: Re: Volunteering for translations
-
-../admin/mule/RMAIL
+../admin/reweb/RMAIL
+ 1. 1999-06-24 François Pinard: Re: Please tell me the URL of your home Web pag
+ 2. 1999-06-26 François Pinard: Re: Please tell me the URL of your home Web pag
+
+../asian/martin/RMAIL
+ 1. 1998-12-18 Martin J. Duerst: Re: Prerelease: GNU recode 3.4i
+
+../asian/vietnam/RMAIL
+ 1. 1999-09-22 NGUYEN-DAI Quy: renseignement concernant "recode"
+ 2. 1999-12-13 Nguyen-Dai Quy: Re: renseignement concernant "recode"
+ 3. 1999-12-17 Nguyen-Dai Quy: Re: renseignement concernant "recode"
+ 4. 1999-12-17 Nguyen-Dai Quy: Re: renseignement concernant "recode"
+ 5. 1999-12-17 Nguyen-Dai Quy: Re: renseignement concernant "recode"
+ 6. 1999-12-18 Bruno Haible: Re: suggestion ridicule pour recode
+ 7. 1999-12-18 François Pinard: Re: renseignement concernant "recode"
+ 8. 1999-12-18 François Pinard: Contre-cotices (:-) dans `test.viqr'
+ 9. 1999-12-18 François Pinard: Autres =?iso-8859-1?q?probl=E8mes?= VISCII
+10. 1999-12-18 François Pinard: TCVN
+11. 1999-12-18 François Pinard: VPS
+12. 1999-12-19 Nguyen-Dai Quy: recode & vietnamese
+13. 1999-12-19 François Pinard: Re: recode & vietnamese
+
+../charsets/mule/RMAIL
  1. 1993-08-12 Kenichi Handa: The official release of Mule Ver.1.0 (Patch Level
  2. 1995-03-30 Gianni Mariani: Re: Unicode/ISO-10646/TRON/MULE/MCS for multilin
  3. 1995-03-30 Martin J. Duerst: Re: Unicode/ISO-10646/TRON/MULE/MCS for multil
 89. 1998-05-13 Kenichi Handa: Re: dialog boxes
 90. 1997-12-06 François Pinard: Re: Small difficulties in Emacs 20
 91. 1999-05-05 Alfred J Correira: Re: NT / pgnus draft problem
+92. 1999-06-14 Kenichi Handa: Re: dead key for quail
+93. 1999-07-11 Dave Love: Re: Mule Emacs 20.3 w/enable-multibyte-characters set
+94. 1999-07-12 Michael Welsh Duggan: Re: Mule Emacs 20.3 w/enable-multibyte-cha
+95. 1999-07-14 Dave Love: Re: Mule Emacs 20.3 w/enable-multibyte-characters set
+96. 1999-07-29 Kenichi Handa: shift to a new mailing list server.
+97. 1999-07-29 Mito: Re: FAQ: UNICODE conversion support planned?
+98. 1999-07-31 FUJITA Kazutoshi: Re: shift to a new mailing list server.
+
+../engines/abrahamsen/RMAIL
+ 1. 1993-03-11 Per Abrahamsen: min-key.el: Keyboard Remapping and Character Set
+ 2. 1993-06-02 Per Abrahamsen: Danish, Swedish, German, Russian, and DVORAK Key
+
+../engines/charconv/RMAIL
+ 1. 1993-07-19 Burkhard Kirste: charconv - convert extended character sets (1/2
 
-../admin/translit/RMAIL
+../engines/iso2asc/RMAIL
+ 1. 1993-02-11 Markus Kuhn: Re: ISO-8859-1 and French
+ 2. 1993-05-20 Markus Kuhn: Portable ISO Latin 1 -> ASCII Converter
+ 3. 1993-02-10 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii?
+ 4. 1993-12-07 Markus Kuhn (CIP 90): Re: transcription iso-8859-1 to us-ascii?
+
+../engines/translit/RMAIL
  1. 1993-03-18 Jan Labanowski: Translit --- transliterate foreign alphabets
+ 2. 1999-06-03 Han-Wen Nienhuys: Unidentified subject!
+ 3. 1999-06-03 Sigfrid Lundberg, Lub NetLab: Re: Unidentified subject!
 
-../admin/wilson/RMAIL
+../engines/wilson/RMAIL
  1. 1994-10-27 David E A Wilson: recode-3.3
  2. 1994-10-28 David E A Wilson: Re: recode-3.3
  3. 1994-10-28 David E A Wilson: charset program
+
+../fallbacks/German/RMAIL
+ 1. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode'
+ 2. 1994-01-11 Francois Pinard: Suggestions for `recode'
+ 3. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode'
+ 4. 1994-01-12 Francois Pinard: shar: diac.tar.gz
+ 5. 1994-01-12 Francois Pinard: Re: Suggestions for `recode'
+ 6. 1994-01-09 Thorbjoern Hansen: Suggestions for `recode'
+ 7. 1994-01-11 Francois Pinard: Suggestions for `recode'
+ 8. 1994-01-12 Thorbjoern Hansen: Re: Suggestions for `recode'
+ 9. 1994-01-12 Francois Pinard: Re: Suggestions for `recode'
+10. 1994-09-28 gator@cs.tu-berlin.de: new charset for recode
+11. 1994-09-30 Francois Pinard: Re: new charset for recode
+12. 1994-10-01 gator@cs.tu-berlin.de: Re: new charset for recode
+13. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: latex conversions in r
+14. 1994-07-19 Francois Pinard: Re: latex conversions in recode-3.3
+15. 1994-07-19 haible@ma2s2.mathematik.uni-karlsruhe.de: Re: latex conversions
+16. 1993-02-11 Markus Kuhn: Re: transcription iso-8859-1 to us-ascii?
+17. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1
+18. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1
+19. 1994-12-04 Francois Pinard: Re: Prerelease: GNU recode 3.4.1
+20. 1994-12-04 Michael Gschwind: Re: Prerelease: GNU recode 3.4.1
+21. 1995-01-21 Markus Kuhn: Re: Unicode Matters
+22. 1995-05-09 Ulrich Drepper: Re: Volunteering for translations
+23. 1995-05-10 Ulrich Drepper: Re: Volunteering for translations
+24. 1995-05-10 François Pinard: Re: Volunteering for translations
+25. 1995-06-07 Ulrich Drepper: something you might be interested in
+26. 1995-06-06 François Pinard: Re: something you might be interested in
+27. 1995-06-07 Ulrich Drepper: Re: something you might be interested in
+28. 1995-06-07 François Pinard: Re: something you might be interested in
+29. 1995-07-17 Juergen Weigert (Inf4 - hiwi): recode-3.4 extended 'flat' charac
+30. 1995-07-25 François Pinard: Re: Patch for recode-3.4
+31. 1995-08-22 Ulrich Windl: Re: problem with recode 3
+32. 1995-08-22 François Pinard: Re: problem with recode 3
+33. 1995-05-07 François Pinard: Re: Volunteering for translations
+34. 1995-05-08 Ulrich Drepper: Re: Volunteering for translations
+35. 1995-05-08 Martin Husemann: Re: Volunteering for translations
+36. 1995-05-08 François Pinard: Re: Volunteering for translations
+
+../surfaces/abe/RMAIL
+ 1. 1991-01-17 Francois Pinard: abe and directories; dabe and Turbo-C
+ 2. 1991-01-27 Brad Templeton: Re: abe part numbering
+ 3. 1991-02-11 Francois Pinard: Possible bug with b= option
+ 4. 1991-02-11 Brad Templeton: Re: Possible bug with b= option
+ 5. 1992-07-15 Francois Pinard: Minor problem in dabe.c
+ 6. 1994-09-23 Francois Pinard: Re: Possible bug with b= option
+ 7. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option
+ 8. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option
+ 9. 1994-09-24 brad@alto.clarinet.com: Re: Possible bug with b= option
+10. 1994-09-24 Francois Pinard: Re: Possible bug with b= option
+11. 1994-09-24 Francois Pinard: Re: Possible bug with b= option
+12. 1994-09-26 brad@alto.clarinet.com: Re: Possible bug with b= option
+
+../surfaces/apple/RMAIL
+ 1. 1987-06-30 Kevin O'Gorman: Comb
+ 2. 1995-05-04 Leonardo Topa: Re: mcvert version 2.16 installed
+ 3. 1995-03-10 John Gianni: Re: Application/MAC-BINHEX40
+ 4. 1995-03-31 Chris Newman: Re: Looking For BinHex Specifications
+ 5. 1995-04-02 Kari E. Hurtta: Re: Looking For BinHex Specifications
+ 6. 1995-04-07 Andrew M. Langmead: Re: Looking For BinHex Specifications
+ 7. 1995-03-31 bill@slipnet.com: Re: Binhex4.0
+ 8. 1995-03-05 Mathieu Dubreuil: Re: Rencontre Jeunes - Nations Unies
+ 9. 1995-12-08 DOCUMENSA: DTD Loi
+10. 1997-03-12 François Pinard: Macintosh
+11. 1999-08-02 Benjamin Kowarsch: Re: Mac Install
+
+../surfaces/btoa/RMAIL
+ 1. 1994-09-20 kb@cs.umb.edu: shar, uuencode, atob
+ 2. 1994-09-20 Francois Pinard: Re: shar, uuencode, atob
+ 3. 1994-07-29 ericb@lsid.hp.com: Re: GNU shar, -M and you
+ 4. 1994-07-28 Francois Pinard: Re: GNU shar, -M and you
+ 5. 1992-10-09 Jef Poskanzer: version of atob with factor of 2 speedup
+ 6. 1993-09-26 Francois Pinard: GNU encode 1.0 - still
+ 7. 1989-12-30 Stefan Parmark: Re: BTOA 5.2
+ 8. 1989-12-30 Francois Pinard: BTOA 5.2
+ 9. 1989-12-31 Francois Pinard: diffs for btoa 5.2 under MSDOS
+10. 1990-07-18 Francois Pinard: shar blues
+11. 1994-09-20 Francois Pinard: Re: shar, uuencode, atob
+12. 1994-09-24 kb@cs.umb.edu: Re: shar, uuencode, atob
+
+../surfaces/cdc-tape/RMAIL
+ 1. 1995-02-03 Francois Pinard: Re: Cyber tape formats
+
+../charsets/cyrillic/rmail/866
+ 1. 1998-01-06 Roman Czyborra: Re: cyrillic support in recode - patch
+ 2. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch
+ 3. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+ 4. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+
+../charsets/cyrillic/rmail/878
+ 1. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+
+../charsets/cyrillic/rmail/documentation
+ 1. 1999-06-08 Lukas Petrlik: recode 3.5 docs
+
+../charsets/cyrillic/rmail/emacs
+ 1. 1997-08-21 Kenichi Handa: Re: input cyrillic
+ 2. 1997-08-23 Kenichi Handa: Re: Thank you, Re: input cyrillic
+ 3. 1997-08-25 Martin J. Dürst: Re: input cyrillic
+
+../charsets/cyrillic/rmail/gnus
+ 1. 1999-02-19 Lars Magne Ingebrigtsen: Re: How to specify charset in message h
+ 2. 1999-02-19 Dmitry Yaitskov: Re: How to specify charset in message headers?
+ 3. 1999-02-19 Lars Magne Ingebrigtsen: Re: with 0.76, messages in koi8-r are s
+ 4. 1999-02-05 Vladimir Volovich: Re: More charset things
+ 5. 1999-02-08 Bill White: Re: More charset things
+
+../charsets/cyrillic/rmail/gost
+ 1. 1997-12-05 Roman Czyborra: GOST 19768
+ 2. 1997-12-05 Roman Czyborra: ECMA-113
+ 3. 1997-12-05 Keld J|rn Simonsen: Re: GOST 19768
+ 4. 1999-01-04 Keld J|rn Simonsen: Re: Details in your latest charset tables
+
+../charsets/cyrillic/rmail/latex
+ 1. 1998-05-20 Barbara Beeton: Re: Cyrillic by AMS
+ 2. 1998-05-21 Boguslaw Jackowski: re: Cyrillic fonts by AMS
+ 3. 1998-05-21 Barbara Beeton: re: Cyrillic fonts by AMS
+ 4. 1998-05-21 Boguslaw Jackowski: Re: Cyrillic fonts by AMS (hopefully my fina
+ 5. 1998-06-07 Barbara Beeton: Re: Cyrillic fonts with T1 encoding
+ 6. 1998-06-08 taupin: Cyrillic fonts with T1 encoding
+ 7. 1998-06-08 Robin Fairbairns: Re: Cyrillic fonts with T1 encoding
+ 8. 1998-06-08 taupin: About cyrillic fonts.
+ 9. 1998-06-09 taupin: Re: Ligature question
+
+../charsets/cyrillic/rmail/latin5
+ 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch
+
+../charsets/cyrillic/rmail/unified
+ 1. 1997-12-05 Roman Czyborra: new Ukrainian KOI8 charsets
+ 2. 1997-12-05 Keld J|rn Simonsen: Re: ISO-IR-111 Cyrillic wrong in RFC 1345 an
+ 3. 1998-06-12 Roman Czyborra: KOI8-U
+ 4. 1999-01-11 François Pinard: Re: cyrillic support in recode - patch
+
+../charsets/cyrillic/rmail/windows
+ 1. 1997-12-28 François Pinard: Re: cyrillic support in recode - patch
+ 2. 1997-12-28 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+ 3. 1998-01-31 Alexander L. Belikoff: cyrillic support in recode
+
+../charsets/cyrillic/rmail/zzz
+ 1. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
+ 2. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
+ 3. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
+ 4. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
+ 5. 1994-11-01 Roman Czyborra: Re: Prerelease: GNU recode 3.3.2
+ 6. 1998-06-12 Roman Czyborra: proofreading RFC 1345++
+ 7. 1998-06-15 Roman Czyborra: ANNOUNCE: new charset soups (ISO 8859, Cyrillic,
+ 8. 1998-09-12 Vladimir Volovich: Re: \201 problem reproduced
+ 9. 1998-09-12 Vladimir Volovich: Re: \201 problem reproduced
+10. 1998-03-10 Thorgeir Sigurdsson: (TC304.1525) EN1923 is an adopted 8 bit MES
+11. 1997-12-28 Andries.Brouwer@cwi.nl: Re: cyrillic support in recode - patch
+12. 1998-11-18 Uma Umamaheswaran: Site with info on different character sets et
+13. 1999-03-26 Earl Hood: RFC: Character sets in MHonArc (was private Re: MHonA
+14. 1999-03-27 Andrew S. Howell: Re: RFC: Character sets in MHonArc (was privat
+15. 1999-03-29 Koichi Nakatani: Re: RFC: Character sets in MHonArc (was private
+16. 1999-03-24 Takashi P.KATOH: iso-2022 filter
+17. 1999-03-24 Earl Hood: Re: iso-2022 filter
+18. 1999-03-02 Lukas Petrlik: Re: Prerelease: GNU recode 3.4i
+19. 1999-01-06 Martin Mares: Re: Prerelease: GNU recode 3.4i
+20. 1999-02-18 Alexander L. Belikoff: Cyrillic encodings - a more or less autho
+21. 1999-01-25 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+22. 1999-01-09 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+23. 1999-01-11 François Pinard: Re: cyrillic support in recode - patch
+24. 1999-01-25 Alexander L. Belikoff: Re: cyrillic support in recode - patch
+25. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix
+26. 1999-03-02 Lukas Petrlik: Re: Prerelease: GNU recode 3.4i
+27. 1999-01-06 Martin Mares: Re: Prerelease: GNU recode 3.4i
+28. 1999-01-06 Keld J|rn Simonsen: Re: Prerelease: GNU recode 3.4i
+29. 1999-01-05 Martin Mares: Re: Prerelease: GNU recode 3.4i
+30. 1999-01-06 François Pinard: Re: Prerelease: GNU recode 3.4i
+31. 1999-04-13 borka@e5.ijs.si: (TC304.2152) (SC22WG20.2656) Differences betwee
+32. 1999-04-13 Karlsson Kent - keka: (TC304.2153) RE: (SC22WG20.2685) (SC22WG20
+33. 1999-04-15 Konstantin Chuguev: (TC304.2154) (SC22WG20.2686) RE: (SC22WG20.2
+34. 1996-10-13 Alexander L. Belikoff: Linux Cyrillic HOWTO (part 1/1)
+
+../charsets/ucs/rmail/10646
+ 1. 1996-03-15 Alain LaBont:e':: Impact of ISO/IEC 10646 on POSIX - Draft perso
+ 2. 1996-03-28 Keld J|rn Simonsen: (i18n.298) 10646 amendments available
+ 3. 1996-04-26 Keld J|rn Simonsen: (i18n.325) ISO 10646 character namesand posi
+ 4. 1997-02-04 unicode@Unicode.ORG: Re: Korean m*, what is it?
+ 5. 1999-08-25 Alain LaBonté : ISO 10646 (v.f.) - Annexe K -- Conseils pour le
+
+../charsets/ucs/rmail/byte-order-mark
+ 1. 1999-08-01 Marc Feeley: Unicode BOM
+
+../charsets/ucs/rmail/dns
+ 1. 1999-07-07 Stuart Kwan: RE: skwan-utf8-dns (RE: (Almost final) Agenda for d
+
+../charsets/ucs/rmail/documentation
+ 1. 1994-10-09 Emmanuel Uren: 850 and more, 8859 and more, and more
+ 2. 1996-09-13 Markus G. Kuhn: Unicode Introduction and References
+ 3. 1996-11-24 Erik Naggum: Re: The char type crossing the 8 bit barrier? (Was
+ 4. 1997-05-20 Alain LaBont/e'/: UNICODE et ISO/CEI 10646
+ 5. 1997-10-28 Fran\81çois Pinard: Re: librecode, libc, gettext
+ 6. 1997-10-31 Alain LaBonté - 3: Philosophie de l'internationalisation de bon
+ 7. 1998-01-02 Alain LaBonté - 3: Re: aide!
+ 8. 1998-02-14 Erik Naggum: Re: Is there any alternative to MULE?
+ 9. 1998-02-16 John Clews: (TC304.1487) Script summary: status of ISO/IEC 10646
+10. 1998-03-10 Alain LaBonté : Importance des noms des caractères
+11. 1998-03-10 Alain LaBonté : Noms de caractères -- subtilités
+12. 1998-03-24 Alain LaBonté : Re: Erreurs de nomenclature dans Windows NT4
+13. 1998-05-05 Alain LaBonté : Codage de la langue dans le jeu universel de car
+
+../charsets/ucs/rmail/fontes
+ 1. 1997-10-28 Martin J. Dürst: Re: Mule -> NT
+ 2. 1995-06-05 Michael Everson: (i18n.265) Announcing Everson Mono 10646
+ 3. 1995-12-14 Ulrich Drepper: Unicode mappings
+ 4. 1996-04-30 Yann Dirson: Re: recode: suggestion
+ 5. 1995-12-11 Ulrich Drepper: Re: check successful message
+ 6. 1998-09-29 Roman Czyborra: proposal for a GNU Unicode font
+ 7. 1998-09-30 Jungshik Shin: Re: proposal for a GNU Unicode font
+ 8. 1998-10-04 Primoz Peterlin: Re: proposal for a GNU Unicode font
+ 9. 1998-10-04 Markus Kuhn: Re: proposal for a GNU Unicode font
+10. 1998-10-05 Primoz Peterlin: Re: proposal for a GNU Unicode font
+11. 1998-10-02 Markus Kuhn: Re: proposal for a GNU Unicode font
+12. 1998-10-03 Markus Kuhn: Re: proposal for a GNU Unicode font
+13. 1998-10-06 Jungshik Shin: Re: proposal for a GNU Unicode font
+14. 1998-10-07 Mark Leisher: Re: proposal for a GNU Unicode font
+15. 1998-10-07 Jungshik Shin: Re: proposal for a GNU Unicode font
+16. 1998-10-02 Mark Leisher: Clearly U BDF font update
+17. 1998-10-05 James Matthew Farrow: Font editors...
+18. 1997-11-24 Mark Leisher: Unicode BDF fonts available
+19. 1998-11-24 François Pinard: Re: Free X11 Unicode terminal font available
+20. 1997-06-14 mike@vlsivie.tuwien.ac.at: Finding Fonts for Internationalizatio
+21. 1999-06-04 Martin J. Duerst: Re: UTF-8 table output
+22. 1999-06-03 François Pinard: Re: UTF-8 table output
+23. 1999-07-17 Markus Kuhn: Unicode fonts for X11
+
+../charsets/ucs/rmail/français
+ 1. 1996-05-11 Alain LaBont/e'/: Re: French names for 10646
+ 2. 1996-10-24 Alain LaBont/e'/: Quelques adresses pour les références à mes tr
+ 3. 1998-04-29 Alain LaBonté : Use of the Glyphs associated to the Unicode char
+ 4. 1998-09-17 Alain LaBonté : Character identifiers, names and mnemonicity --
+ 5. 1998-12-17 François Pinard: Tables française pour les noms JUC
+
+../charsets/ucs/rmail/html
+ 1. 1995-12-21 Francois Yergeau: RFC sur l'i18n de HTML
+ 2. 1996-05-30 Alain LaBont/e'/: Internationalisation de HTML
+ 3. 1995-03-29 alb@riq.qc.ca: http://www.echo.lu/other/norm
+ 4. 1994-10-08 Gary Houston: Re: multilingual HTML, SGML documents
+ 5. 1997-04-25 Henry Churchyard: Re: &#146; valid HTML or no?
+ 6. 1997-04-30 Henry Churchyard: Re: &#146; valid HTML or no?
+ 7. 1997-04-30 Paul Eggert: Re: &#146; valid HTML or no?
+ 8. 1997-04-27 Tall Ethnic Person: Re: &#146; valid HTML or no?
+ 9. 1997-04-27 Markus Kuhn: Re: &#146; valid HTML or no?
+10. 1999-04-09 Pierre Laplante: Re: =?iso-8859-1?Q?param=E8tres?= avec script c
+
+../charsets/ucs/rmail/libutf8
+ 1. 1999-07-30 Jim Meyering: Re: [François Pinard <pinard@iro.umontreal.ca>] Re
+ 2. 1999-07-30 François Pinard: Re: UTF-8
+ 3. 1999-07-30 Bruno Haible: Re: [Fran\81çois Pinard <pinard@iro.umontreal.ca>] R
+ 4. 1999-07-30 Bruno Haible: Re: [=?iso-8859-1?q?Fran=E7ois?= Pinard <pinard@ir
+ 5. 1999-07-30 François Pinard: Re: UTF-8
+ 6. 1999-07-30 Bruno Haible: Re: UTF-8
+ 7. 1999-07-30 François Pinard: Re: UTF-8
+ 8. 1999-08-01 Marc Feeley: Unicode BOM
+ 9. 1999-08-02 François Pinard: Re: UTF-8
+10. 1999-08-02 Bruno Haible: Clarification, UTF-8
+11. 1999-08-02 Bruno Haible: Re: UTF-8, concrete action
+12. 1999-08-02 Bruno Haible: Re: UTF-8, meta discussion
+13. 1999-08-02 Bruno Haible: Re: UTF-8, meta discussion
+14. 1999-08-02 François Pinard: Re: UTF-8, concrete action
+15. 1999-08-02 Bruno Haible: Re: UTF-8, concrete action
+16. 1999-08-02 François Pinard: Re: UTF-8, meta discussion
+17. 1999-08-02 Bruno Haible: Re: UTF-8, meta discussion
+18. 1999-08-02 Bruno Haible: Re: UTF-8, meta discussion
+19. 1999-08-04 François Pinard: Bruno's project
+20. 1999-08-04 Jim Meyering: Re: Bruno's project
+21. 1999-08-04 Jim Meyering: Re: Bruno's project
+22. 1999-08-04 François Pinard: Re: TP-Robot hello-1.3.23.lv.po
+23. 1999-08-04 François Pinard: Re: Bruno's project
+24. 1999-09-07 Bruno Haible: Re: [loic@ceic.com] Unicode: Toward a standard lib
+25. 1999-12-06 ADEMIRNET@aol.com: =?ISO-8859-1?Q?Bulletin=20N=B014=20Ademirnet=
+
+../charsets/ucs/rmail/roman
+ 1. 1998-11-30 Roman Czyborra: finished thesis on Unicode in Unix
+
+../charsets/ucs/rmail/sgml
+ 1. 1997-04-30 Paul Eggert: Re: &#146; valid HTML or no?
+ 2. 1994-11-14 Oliver Bonten: Re: Character entity names for ISO-Latin 1
+ 3. 1997-02-05 Bruce Hunter: Re: Mapping Character Entities to Windows Characte
+ 4. 1997-02-05 Markus Kuhn: Unicode Web Test Pages
+ 5. 1997-02-23 Peter Flynn: Re: mapping iso SGML entities to TeX chars?
+ 6. 1997-05-14 Clayton Weaver: catalog entry for ECMA-94
+ 7. 1997-05-14 Markus Kuhn: Re: catalog entry for ECMA-94
+ 8. 1997-05-15 Peter Flynn: Re: catalog entry for ECMA-94
+ 9. 1997-05-15 Peter Flynn: Re: catalog entry for ECMA-94
+10. 1997-06-23 Walther Schubert: Help with FrameMaker+SGML Conversion Table
+11. 1996-03-16 Peter Flynn: Re: TeX to Latin 1 table
+
+../charsets/ucs/rmail/spreading
+ 1. 1996-01-05 François Pinard: Re: 8bit clean perl? (fwd)
+
+../charsets/ucs/rmail/tools-gscript
+ 1. 1999-07-13 Tom Tromey: good news for internationalization
+
+../charsets/ucs/rmail/tools-java-netscape
+ 1. 1998-08-05 Alain LaBont\81é\81 : Re: Unicode Converter
+
+../charsets/ucs/rmail/tools-mule
+ 1. 1999-07-28 =?ISO-2022-JP?B?GyRCNVwyPBsoQiAbJEI+MBsoQjpISU1J?=: Re: FAQ: UNI
+
+../charsets/ucs/rmail/tools-recode
+ 1. 1995-04-20 Markus Kuhn (CIP 90): ISO 10646 & recode concept
+ 2. 1997-08-01 Martin J. Duerst: Re: librecode, libc, gettext
+ 3. 1997-11-25 Markus Kuhn: Re: ISO 10646 & recode concept
+
+../charsets/ucs/rmail/tools-ssam-ure
+ 1. 1997-11-22 François Pinard: Re: unicode and gnu?
+
+../charsets/ucs/rmail/tools-tcs
+ 1. 1993-02-09 andrew@research.att.com: (none)
+ 2. 1993-02-14 Francois Pinard: tcs, recode
+ 3. 1993-02-20 Francois Pinard: Legaleese
+ 4. 1993-12-11 Francois Pinard: GNU recode 3.2.9
+ 5. 1993-12-12 Per Abrahamsen: Re: GNU recode 3.2.9
+ 6. 1999-03-30 Andreas Schwab: Fix for AtariST encoding
+
+../charsets/ucs/rmail/tools-ucs
+ 1. 1993-08-26 Hermann Hueni: Re: WANTED: recode extension to ROMAN8 (HP) char
+
+../charsets/ucs/rmail/unicode
+ 1. 1994-10-02 Andries.Brouwer%cwi.nl@Lightning.McRCIM.McGill.EDU: Re: recode
+ 2. 1994-12-21 David Goldsmith: Unicode Web Page Now Available!
+ 3. 1996-03-11 Hart, Edwin F.: Unicode* Version 2.0 and new members of
+ 4. 1996-06-10 by way of everson@indigo.ie (Michael Everson): (i18n.331) "News"
+ 5. 1996-08-19 François Pinard: (none)
+ 6. 1996-09-30 Markus G. Kuhn: Unicode 2.0 available now!!!
+ 7. 1996-10-06 Alain LaBont/e'/: Différences entre UNICODE et le JUC et implant
+ 8. 1996-10-07 unicode@Unicode.ORG: UNICODE, SGML and HEBREW
+ 9. 1996-10-15 unicode@Unicode.ORG: How to order Version 2.0
+10. 1996-11-22 news@Unicode.ORG: Web Update
+11. 1996-11-28 unicode@Unicode.ORG: Re: HTML - i18n / NCR & charsets
+12. 1997-01-16 unicode@Unicode.ORG: Re: unicode <-> hex converter
+13. 1997-11-26 Andreas Dietrich: Re: Cyrillic cp1251 in recode
+14. 1998-09-10 Gisle Aas: Re: "Coding system"? Eh?
+15. 1998-09-11 François Pinard: Re: "Coding system"? Eh?
+16. 1998-11-09 Kenneth Whistler: (TC304.2066) FW: (TC304.2065) PT Guide on Char
+17. 1999-10-13 François Pinard: Re: Making message/rfc822 boundaries visible
+18. 1999-09-15 François Pinard: Projet de Loic
+19. 1999-09-15 François Pinard: Message de Loic
+20. 1999-09-15 François Pinard: =?iso-8859-1?q?R=E9ponse_=E0?= Loic
+21. 1999-09-15 François Pinard: Autre =?iso-8859-1?q?r=E9ponse?=
+22. 1999-09-15 François Pinard: =?iso-8859-1?q?Re-r=E9ponse?= de =?iso-8859-1?q
+23. 1999-09-08 loic@ceic.com: [hshih@us.ibm.com: [sw-i18n-l10n] Re: Unicode: To
+24. 1999-09-07 Bruno Haible: Re: [loic@ceic.com] Unicode: Toward a standard lib
+25. 1999-09-07 loic@ceic.com: Unicode: Toward a standard library
+26. 1999-09-07 loic@ceic.com: Latest regex implementation
+27. 1999-09-10 Henry Spencer: Re: Latest regex implementation
+28. 1999-09-06 loic@ceic.com: recode-3.5 & libunicode
+29. 1999-09-06 François Pinard: Re: recode-3.5 & libunicode
+30. 1999-09-07 loic@ceic.com: Re: recode-3.5 & libunicode
+31. 1999-08-18 Markus Kuhn: Normalization Form KC for Linux
+32. 1999-08-18 Mark H. David: Re: Normalization Form KC for Linux
+33. 1999-08-18 Mark Davis: Re: Normalization Form KC for Linux
+
+../charsets/ucs/rmail/utf-16
+ 1. 1998-01-15 Alain LaBonté : ISO/CEI 10646 et UNICODE : un peu de vulgarisati
+ 2. 1998-09-30 Roman Czyborra: Re: UTF16 <=> Reuters format?
+ 3. ---- -- -- C.Douglas O'Brien [SMTP:dobrien@idon.com]: RE: Necessity of a be
+
+../charsets/ucs/rmail/utf-32
+ 1. 1999-04-07 Hart, Edwin F.: RE: UTF-32
+
+../charsets/ucs/rmail/utf-7
+ 1. 1998-09-11 François Pinard: Re: "Coding system"? Eh?
+
+../charsets/ucs/rmail/utf-8
+ 1. 1994-05-05 Martin J. Duerst: Re: What is status of internationalization of
+ 2. 1995-09-19 François Pinard: Re: Emacs C-q NNN
+ 3. 1996-03-27 Francois Yergeau: UTF-8 I-D submitted
+ 4. 1996-05-11 Alain LaBont/e'/: Équivalences UTF-8 - Impact d'UTF-8, repli d'U
+ 5. 1997-01-14 Alistair Crooks: ssam-1.4 and ure-2.5
+ 6. 1997-10-28 Martin J. Dürst: Re: A couple of bugs in Gnus-mule : summary buf
+ 7. 1997-11-22 François Pinard: Re: Movement for having Internet addresses usin
+ 8. 1997-12-10 Francois Yergeau: Re: Movement for having Internet addresses usi
+ 9. 1998-03-02 Alain LaBonté : Re: origine de ces nouveaux «é», è, à ...?
+10. 1998-10-29 Markus Kuhn: Free X11 Unicode terminal font available
+11. 1998-11-02 Paul Eggert: Re: UTF-8 in gas
+12. 1998-11-02 Paul Eggert: Re: UTF-8 in gas
+13. 1998-11-04 Paul Eggert: Re: UTF-8 in gas
+14. 1998-11-27 Alain LaBonté : Qu'est-ce que l'ASCII (bis) et courriel de l'ave
+15. 1998-12-02 Richard Coleman: Re: Info on Internationalization
+16. 1998-12-03 Shenghuo ZHU: Re: Info on Internationalization
+17. 1998-12-06 François Pinard: Re: Info on Internationalization
+18. 1999-02-08 François Pinard: Re: More charset things
+19. 1999-02-08 François Pinard: Re: More charset things
+20. 1999-02-09 Lars Magne Ingebrigtsen: Re: More charset things
+21. 1999-02-09 François Pinard: Re: More charset things
+22. 1999-02-09 Steinar Bang: Re: More charset things
+23. 1999-02-14 Steinar Bang: UTF-8 (Was: More charset things)
+
+../charsets/ucs/rmail/utf-mnemonics
+ 1. 1998-07-18 Markus Kuhn: (TC304.1872) German reaction to Enquiry among membe
+
+../charsets/ucs/rmail/voir-web
+ 1. 1996-10-28 unicode@Unicode.ORG: Repertoires of European Letters: Draft Four
+ 2. 1997-01-09 Michael Everson: (none)
+ 3. 1999-02-15 umavs@ca.ibm.com: FYI: Draft Irish comments on JTC1 N5698
+
+../charsets/ucs/rmail/xterm
+ 1. 1995-11-22 Gary Capell: Unicode/UTF text editor: wily 0.9.8 (beta)
+ 2. 1996-06-07 Arnold D. Robbins: Re: terminal emulator recommendation?
+ 3. 1996-07-09 Marc Feeley: 9term
+ 4. 1996-07-25 Marc Feeley: 9term
+ 5. 1999-06-09 Markus Kuhn: Xterm now has UTF-8 support
+ 6. 1998-11-22 Markus Kuhn: Re: Free X11 Unicode terminal font available
+ 7. 1998-11-25 Markus Kuhn: Re: Free X11 Unicode terminal font available
+ 8. 1998-11-22 Markus Kuhn: Re: Free X11 Unicode terminal font available
+ 9. 1998-11-25 Markus Kuhn: Re: Free X11 Unicode terminal font available
index 756563b0080b10fbd835c21cbcc7edd6c85fe423..6a80437be2e1b98bb3c444cb5e844b8352567ffb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,48 @@
+1999-12-19  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am (BABYL): Adjusted.
+
+1999-12-14  François Pinard  <pinard@iro.umontreal.ca>
+
+       * configure.in (LIBOBJS): Manage for ANSI2KNR.
+       (LTLIBOBJS): Adjusted to fit the style of the above.
+       Reported by Jim Meyering.
+
+       * configure.in: Delete AC_PROG_AWK.
+
+       * Makefile.am, acconfig.h, configure.in: Adapt to the gettext
+       scheme used in wdiff.
+       * i18n: New name for directory po.
+       * intl: Deleted directory.
+
+       * configure.in: Use AC_FUNC_ALLOCA.
+
+       * acinclude.m4: New file, containing file libtool.m4 from the
+       libtool distribution, which suggest that it should be distributed.
+
+1999-12-12  François Pinard  <pinard@iro.umontreal.ca>
+
+       * configure.in: Replace strtol and strtoul only when missing.
+       Reported by Tom Hageman.
+
+1999-11-27  François Pinard  <pinard@iro.umontreal.ca>
+
+       * configure.in (ALL_LINGUAS): Add it.
+
+1999-06-22  François Pinard  <pinard@iro.umontreal.ca>
+
+       * configure.in (ALL_LINGUAS): Add el.
+
+1999-06-15  François Pinard  <pinard@iro.umontreal.ca>
+
+       * configure.in: Substitute LIBOBJS, so jm_FUNC_MALLOC and
+       jm_FUNC_REALLOC has some chance to work.
+       Reported by Alexandre Oliva.
+
+1999-06-02  François Pinard  <pinard@iro.umontreal.ca>
+
+       * configure.in: Version 3.5a.
+\f
 1999-05-31  François Pinard  <pinard@iro.umontreal.ca>
 
        * configure.in: Version 3.5.
index a75c4bb94ae91376ef221a99a7b701cdec7e79ff..27d8e89cb85a2445da18e81bfdd258e7f81536a7 100644 (file)
 AUTOMAKE_OPTIONS = gnits
 ACLOCAL_AMFLAGS = -I m4
 
-BABYL = ../rmail/* ../rmail/*/* ../admin/*/RMAIL
+BABYL = ../rmail/* ../*/rmail/* ../*/*/RMAIL ../*/*/rmail/*
 EXTRA_DIST = rebox.el COPYING-LIB
-SUBDIRS = m4 doc lib intl src po tests contrib
+SUBDIRS = m4 doc lib i18n src tests contrib
+
+POTFILES = src/debug.c src/main.c src/names.c src/outer.c src/recode.c \
+src/request.c src/strip-data.c src/task.c
+
+all-local: $(srcdir)/stamp-pot
+
+$(srcdir)/stamp-pot: $(POTFILES)
+       @echo "$(POTFILES)" > $@
index 1205cb44885850c25fe89cad67f765d2f336f730..29056b98e66fb7bdde29e03fcda11278e9be357c 100644 (file)
@@ -78,9 +78,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
-AWK = @AWK@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -99,16 +101,16 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
 LEX = @LEX@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
@@ -123,17 +125,21 @@ l = @l@
 AUTOMAKE_OPTIONS = gnits
 ACLOCAL_AMFLAGS = -I m4
 
-BABYL = ../rmail/* ../rmail/*/* ../admin/*/RMAIL
+BABYL = ../rmail/* ../*/rmail/* ../*/*/RMAIL ../*/*/rmail/*
 EXTRA_DIST = rebox.el COPYING-LIB
-SUBDIRS = m4 doc lib intl src po tests contrib
+SUBDIRS = m4 doc lib i18n src tests contrib
+
+POTFILES = src/debug.c src/main.c src/names.c src/outer.c src/recode.c src/request.c src/strip-data.c src/task.c
+
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = 
 DIST_COMMON =  README ./stamp-h.in ABOUT-NLS AUTHORS BACKLOG COPYING \
-ChangeLog INSTALL Makefile.am Makefile.in NEWS THANKS TODO acconfig.h \
-aclocal.m4 config.guess config.h.in config.sub configure configure.in \
-install-sh ltconfig ltmain.sh missing mkinstalldirs
+ChangeLog INSTALL Makefile.am Makefile.in NEWS README-alpha THANKS TODO \
+acconfig.h acinclude.m4 aclocal.m4 config.guess config.h.in config.sub \
+configure configure.in install-sh ltconfig ltmain.sh missing \
+mkinstalldirs
 
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
@@ -149,8 +155,8 @@ Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
        cd $(top_builddir) \
          && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-$(ACLOCAL_M4):  configure.in  m4/atconfig.m4 m4/malloc.m4 \
-               m4/microsoft.m4 m4/nls.m4 m4/realloc.m4
+$(ACLOCAL_M4):  configure.in  acinclude.m4 m4/atconfig.m4 m4/gettext.m4 \
+               m4/malloc.m4 m4/microsoft.m4 m4/realloc.m4
        cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
 
 config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -288,7 +294,7 @@ distcheck: dist
        mkdir $(distdir)/=inst
        dc_install_base=`cd $(distdir)/=inst && pwd`; \
        cd $(distdir)/=build \
-         && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \
+         && ../configure --srcdir=.. --prefix=$$dc_install_base \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -359,7 +365,7 @@ install-am: all-am
 install: install-recursive
 uninstall-am:
 uninstall: uninstall-recursive
-all-am: Makefile config.h
+all-am: Makefile config.h all-local
 all-redirect: all-recursive-am
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
@@ -407,10 +413,16 @@ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
 distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
 dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \
 install-exec-am install-exec install-data-am install-data install-am \
-install uninstall-am uninstall all-redirect all-am all installdirs-am \
-installdirs mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+install uninstall-am uninstall all-local all-redirect all-am all \
+installdirs-am installdirs mostlyclean-generic distclean-generic \
+clean-generic maintainer-clean-generic clean mostlyclean distclean \
+maintainer-clean
+
+
+all-local: $(srcdir)/stamp-pot
 
+$(srcdir)/stamp-pot: $(POTFILES)
+       @echo "$(POTFILES)" > $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
index 917e98f97873194fcccca0e74814a29f6f1c4f7f..2a05716b051b8bfbfd1ba0e07f2bedc61901702e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,12 @@
 Free recode NEWS - User visible changes.       -*- outline -*- (allout)
 Copyright © 1993, 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
 
+* Version 3.5a - François Pinard, 1999-05.
+
+.* The Texinfo manual has been indexed, thanks to Eli.
+.* Program messages are also available in Greek and Italian.
+.* Vietnamese charsets are supported, but still mostly untested.
+
 * Version 3.5 - François Pinard, 1999-05.
 
 .* Incompatible changes
diff --git a/README b/README
index e5e55ce5c607c3cc7c7c3f409631310bc0f4e979..643b384ce6c657f8f51ed83d12186914cdbc55eb 100644 (file)
--- a/README
+++ b/README
@@ -1,20 +1,20 @@
 * README file for `recode'                     allout -*- outline -*-
 
-  Here is version 3.5 for the Free `recode' program and library.  Glance
+  Here is version 3.5a for the Free `recode' program and library.  Glance
   through this `README' file before starting configuration.  Make sure
   you read files `ABOUT-NLS' and `INSTALL' if you are not familiar with
   them already.
 
   The canonical distribution point for this version is either:
 
-     http://www.iro.umontreal.ca/contrib/recode/recode-3.5.tar.gz
-     ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5.tar.gz
+     http://www.iro.umontreal.ca/contrib/recode/recode-3.5a.tar.gz
+     ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5a.tar.gz
 
   yet the second URL (the FTP one) might disappear one day.  GNU mirrors
   usually hold a copy of non-pretest releases, the canonical distribution
   point for the last such release is:
 
-     ftp://ftp.gnu.org/pub/gnu/recode-3.4.tar.gz
+     ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz
 
 .* Introduction
    ------------
 
     autoconf   ftp://ftp.gnu.org/pub/gnu/autoconf/autoconf-2.13.tar.gz
     automake   ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz
-    flex       ftp://ftp.gnu.org/pub/gnu/flex-2.5.2.tar.gz
-    gawk       ftp://ftp.gnu.org/pub/gnu/gawk-3.0.3.tar.gz
+    flex       ftp://ftp.gnu.org/pub/gnu/flex/flex-2.5.4a.tar.gz
     gettext    ftp://ftp.cygnus.com/pub/home/drepper/gettext-0.10.35.tar.gz
-    help2man   http://www.ozemail.com.au/~bod/help2man-1.008.tar.gz
-    libtool    ftp://ftp.gnu.org/pub/gnu/libtool/libtool-1.3.2.tar.gz
-    m4         ftp://ftp.seindal.dk/pub/rene/gnu/m4-1.4l.tar.gz
-    perl       ftp://ftp.gnu.org/pub/gnu/perl-5.003.tar.gz
-    tar                ftp://ftp.gnu.org/pub/gnu/tar-1.12.tar.gz
+    help2man   http://www.ozemail.com.au/~bod/help2man-1.019.tar.gz
+    libtool    http://www.oranda.demon.co.uk/dist/libtool-1.3.4.tar.gz
+    m4         ftp://ftp.seindal.dk/pub/rene/gnu/m4-1.4n.tar.gz
+    perl       ftp://ftp.gnu.org/pub/gnu/perl/perl-5.005.03.tar.gz
+    python     ftp://ftp.python.org/pub/python/src/py152.tgz
+    tar                ftp://ftp.gnu.org/pub/gnu/tar/tar-1.12.tar.gz
 
     Make sure GNU `m4' is fully installed before you start installing
     Autoconf.  Have Perl installed before Automake and `help2man'.
 
-    `mawk', GNU `awk' or `nawk', and also Flex 2.5 or better, are needed
-    for remaking `merged.c', after you modify or add an `.l' source file.
+    Python 1.5 and Flex 2.5, or better, are needed for remaking `merged.c',
+    after you modify or add an `.l' source file.
 
 . + Mailing lists and collaboration
 
diff --git a/README-alpha b/README-alpha
new file mode 100644 (file)
index 0000000..e4bf36e
--- /dev/null
@@ -0,0 +1,24 @@
+A new pretest for the `recode' program and library is now available as:
+
+   http://www.iro.umontreal.ca/contrib/recode/recode-3.5a.tar.gz
+
+This is beta status software.  You are invited to use the mailing list
+mailto:recode-forum@iro.umontreal.ca, but you could also write to me either
+at mailto:recode-bugs@iro.umontreal.ca or mailto:pinard@iro.umontreal.ca.
+
+Most pretesters may skip this pretest, which is more a snapshot to help
+communication with some collaborators on specific matters.  There will
+be other pretests before 3.6 goes out.  A few reported bugs related to
+portability have been addressed.  In this snapshot, many matters are still
+pending.  I usually send a letter to a submitter once his/her report has
+been acted upon, you know if I replied to yours! :-)
+
+This pretest contains many changes in the installation engineering, first
+by using newer Autoconf, Automake, Libtool, Help2man, and such things,
+but also by using an experimental Makefile scheme for `gettext' matters.
+A few internal Perl or awk scripts have been rewritten into Python.
+
+Bugs have been corrected, and especially the following ones:
+- HTML with `-d' was spuriously repeating part of the input into the output.
+- Base64 decoding was uselessly requiring `-f' to complete, in many cases.
+- The validation suite should now work in DJGPP/DOSWIN environments.
diff --git a/THANKS b/THANKS
index 8eecac45f3060ac92cc5a926d50b2034081be44a..d62a2c433aebe29375dee0c6e578023f8332de4b 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -7,133 +7,196 @@ for a detailed description of contributions.
 Akim Demaille          demaille@inf.enst.fr
 Alain Labonté          alb@riq.qc.ca
 Alain Magloire         alainm@macs.ee.mcgill.ca
-Alexander L. Belikoff  abel@bfr.co.il
+Alan J. Flavell                flavell@a5.ph.gla.ac.uk
+Alexander L. Belikoff  abel@vallinor4.com
+                       http://www.vallinor4.com
+Alexandre Oliva                oliva@dcc.unicamp.br
+                       http://www.dcc.unicamp.br/~oliva
 Andreas Dietrich       quasi@mathematik.uni-marburg.de
+Andreas Frick          afr@aifb.uni-karlsruhe.de
 Andreas Mueller                afm@othello.ch
-Andreas Schwab         schwab@issan.informatik.uni-dortmund.de
+                       http://www.othello.ch
+Andreas Schwab         schwab@suse.de
 Andries Brouwer                Andries.Brouwer@cwi.nl
 Arnaldo Mandel         am@ime.usp.br
-Bastian Schlueter      buzz@cs.tu-berlin.de
+Bastian Schlueter      buzz@gmx.de
+                       http://home.pages.de/~buzz
 Bernt Guldbrandtsen    bg@rs580.sh.dk
 Bert Schweitzer                b.schweitzer@tu-bs.de
-Branimir Dolicki       bdolicki@tel.hr
+Branimir Dolicki
+Brendan O'Dea          bod@compusol.com.au
+                       http://www.ozemail.com.au/~bod/
+Bruno Haible           haible@ilog.fr
+                       http://clisp.cons.org/~haible/
 Christian Limpach      Christian.Limpach@nice.ch
-Christian Recktenwald  chris@janus.citecs.de
-Christian Rolland      Christian.Rolland@irisa.fr
+                       http://www.nice.ch/~chris/
+Christian Recktenwald  chris@citecs.de
+                       http://www.citecs.de/
+Christian Rolland
 Claude Goutier         goutier@jsp.umontreal.ca
-Colin Plumb            colin@nyx10.cs.du.edu
+Colin Plumb
 Daniel Quinlan         quinlan@best.com
 Daniel Taupin          taupin@lps.u-psud.fr
-David E. A. Wilson     david@cs.uow.edu.au
-David Kastrup          dak@pool.informatik.rwth-aachen.de
+David E. A. Wilson     david_wilson@uow.edu.au
+                       http://www.uow.edu.au/~david
+David Kastrup
 David Lebel            lebel@iro.umontreal.ca
-David Mentre           David.Mentre@enst-bretagne.fr
-David van Leeuwen      david@gandalf.tm.tno.nl
+David Mentre
+David van Leeuwen
 Detlev Droege          droege@informatik.uni-koblenz.de
-Dominique Quatravaux   quatrava@clipper.ens.fr
+Dominique Quatravaux   Dominique.Quatravaux@quatramaran.ens.fr
+                       http://www.piren.epita.fr/~dom
 Dominique Schmit       dschmit@tabarly.saclay.cea.fr
 Duane Ellis            duane@franklin.com
+                       http://www.franklin.com
 Eli Zaretskii          eliz@is.elta.co.il
-Eric Backus            ericb@lsid.hp.com
-Erick Branderhorst     branderh@iaehv.nl
-Erwan Mas              emas@bondy.orstom.fr
-Farzad Farid           farzy@publicis.fr
+Eric Backus            eric_backus@hp.com
+                       http://www.wolfenet.com/~ericjb
+Erick Branderhorst     Erick.Branderhorst@asml.nl
+Erwan Mas              erwanmas@chez.com
+                       http://www.chez.com/erwanmas/
+Farzad Farid
 Florian Oelmaier       100265.2501@compuserve.com
 François Pinard                pinard@iro.umontreal.ca
-François Robitaille    f_robita@crim.ca
+                       http://www.iro.umontreal.ca/~pinard
+François Robitaille
 François Yergeau       yergeau@alis.com
+                       http://www.alis.com/~yergeau/
 Françoise Audebrand    audebran@ere.umontreal.ca
-Frederic Albrecht      fred@calvacom.fr
+Frederic Albrecht
 Frère Roy              roy@taize.fr
-Gabriel P. Silva       gabriel@rio.cos.ufrj.br
-Ghislain Plamondon     gplamon@edupac.qc.ca
+                       http://www.taize.fr
+Gabriel P. Silva       gpsilva@geocities.com
+                       http://www.nce.ufrj.br/~gabriel
+Ghislain Plamondon
 Georg Haefele          haefele@atlas.gis.univie.ac.at
-Greg McGary            gkm@cstone.net
+Greg McGary
 Guy Lapalme            lapalme@iro.umontreal.ca
+                       http://www.iro.umontreal.ca/~lapalme
 Harald Falkenberg      harald.falkenberg@desy.de
 Harald Koenig          koenig@tat.physik.uni-tuebingen.de
 Hermann Hueni          hueni@iam.unibe.ch
-Hennus Bergman         hennus@sky.ow.nl
+Hennus Bergman
 Hilmar Schlegel                hs@semic.ag-berlin.mpg.de
+Hrvoje Niksic          hniksic@srce.hr
 Jacques Madelaine      jacques@info.unicaen.fr
-Jacques Richer         richer@cerca.umontreal.ca
+                       http://www.info.unicaen.r/~jacques
+Jacques Richer         Jacques.Richer@CERCA.UMontreal.CA
+                       http://www.CERCA.UMontreal.CA/~richer
 Jan Djarv              jan.djarv@mbox200.swipnet.se
 Jean-Claude Nadeau     nadeau@jsp.umontreal.ca
 Jens Quade             jens@ronja.dinoco.de
 Jim Meyering           meyering@na-net.ornl.gov
-Joelle Stemp           stemp@ere.umontreal.ca
-John van Krieken       john@atcmp.nl
+Joelle Stemp
+John van Krieken       John.van.Krieken@ATComputing.nl
+                       http://www.ATComputing.nl/images/pasfotos/john.jpg
 Jörg Höhle             Joerg.Hoehle@gmd.de
+                       http://fit.gmd.de/~hoehle/
 Jose Joao Almeida      jj@di.uminho.pt
+                       http://www.di.uminho.pt/~jj
 Julio Sanchez          jsanchez@gmv.es
 Juliusz Chroboczek     jch@clipper.ens.fr
 Juergen Zeller         zet@rupert.franken.de
-Kai Uwe Rommel         rommel@ars.muc.de
+Kai Uwe Rommel
 Karl Berry             karl@cs.umb.edu
+                       http://www.cs.umb.edu/~karl/
 Keld Jørn Simonsen     keld@dkuug.dk
 Kester Habermann       kester@unix-ag.uni-kl.de
-Kevin Stuckless                kevins@rc.gc.ca
+                       http://www.unix-ag.uni-kl.de/~kester/
+Kevin Stuckless                kevins@stuck.warped.com
+                       http://stuck.warped.com/~kevins
+Kristian K\e.A\8eöhntopp  kk@netuse.de
 Laurent Bourbeau       bourbeau@progiciels-bpi.ca
 Larry W. Virden                lvirden@cas.org
+                       http://purl.org/net/lvirden/
 Liisa R{ih{            lr@cs.uta.fi
-Loic Dachary           loic@design.axis.fr
-Lukas Petrlik          luki@scylla.zcu.cz
+Loic Dachary
+Lukas Petrlik
 Mac Pigman             gwp@dido.caltech.edu
-Marc Gingold           gingold@amoco.saclay.cea.fr
+Marc Gingold           gingold@spht.saclay.cea.fr
+                       http:////www-spht.cea.fr/doc.html
 Marc Shapiro           shapiro@prof.inria.fr
-Marc Verreault         vero@iro.umontreal.ca
+Marc Verreault
 Mario Gay              mgay@ti-edu.ch
-Markus Kuhn            mskuhn@faui01.informatik.uni-erlangen.de
-Martin J. Dürst                mduerst@ifi.unizh.ch
+Markus Kuhn            Markus.Kuhn@cl.cam.ac.uk
+                       http://www.cl.cam.ac.uk/~mgk25/
+Martin J. Dürst                duerst@w3.org
+                       http://www.w3.org/People/D%C3%BCrst
 Martin Maechler                maechler@stat.math.ethz.ch
 Martin Mares           mj@ucw.cz
+                       http://atrey.karlin.mff.cuni.cz/~mj/
 Michael Gschwind       mike@vlsivie.tuwien.ac.at
-Michael L. Dowling     mike@mo.math.nat.tu-bs.de
+Michael L. Dowling     M.Dowling@tu-bs.de
+                       http://www.mathematik.tu-bs.de
 Michael Schmidt                mschmidt@koblenz.fh-rpl.de
-Michael Shields                shields@tembel.org
-Mikko Silvonen         Mikko.Silvonen@helsinki.fi
-Nathanael Makarevitch  Nathanael.MAKAREVITCH@ifp.fr
+Michael Shields                shields@msrl.com
+                       http://www.msrl.com/
+Mikko Silvonen         silvonen@iki.fi
+                       http://www.iki.fi/silvonen/
+Nathanael Makarevitch
 Nathaniel Borenstein   nsb@aa.fv.com
-Nicolas Anquetil       anquetil@iro.umontreal.ca
-Nicolas Thiery         nthiery@clipper.ens.fr
+Neal McBurnett         http://bcn.boulder.co.us/~neal/
+Nguy\8eên-\8eÐai Qu\8eý              daiquy.nguyen@ulg.ac.be
+Nicolas Anquetil
+Nicolas Thiery         Nicolas.Thiery@jonas.univ-lyon1.fr
+                       http://www.lmd.univ-lyon1.fr/home/nthiery/
 Niels Kr. Bech Jensen  nkbj@image.dk
-Olivier Tharan         tharan@galaxie.int-evry.fr
+                       http://www.image.dk/~nkbj/
+Olivier Tharan         olive@laria.u-picardie.fr
+                       http://www.laria.u-picardie.fr/~olive/
+Pawel Krawczyk         kravietz@ceti.pl
+                       http://ceti.pl/~kravietz/
 Per Andersson          perand@stacken.kth.se
-Per Steinar Iversen    PerSteinar.Iversen@fi.uib.no
+Per Starback           starback@ling.uu.se
+                       http://stp.ling.uu.se/~starback/me.html
+Per Steinar Iversen
+Peter Turcan           peter.turcan@minerva-is.sk
 Phyllis Frankl         phyllis@morph.poly.edu
+                       http://ebbets.poly.edu/~pfrankl
 Pierre Gaumond         gaumondp@ere.umontreal.ca
 Pierre Girard          pierreg@crt.umontreal.ca
 Pierre Mathieu         mathieu@geod.emr.ca
 Povl H. Pedersen       pope@netguide.dk
-Primo\e.B\8e¾ Peterlin            peterlin@biofiz.mf.uni-lj.si
-Rejean Payette         rpayette@edupac.qc.ca
+Primo\e.B\8e¾ Peterlin            primoz.peterlin@biofiz.mf.uni-lj.si
+                       http://sizif.mf.uni-lj.si/~peterlin/
+Rejean Payette         rejean.payette@rtsq.qc.ca
 Ricard Torres          torres@upf.es
 Richard Plasun         plasun@iue.tuwien.ac.at
 Richard Stallman       rms@gnu.org
 Robert Joop            rj@rainbow.in-berlin.de
 Roman Czyborra         czyborra@cs.tu-berlin.de
 Ronald C.F. Antony     rcfa@cubiculum.com
+                       http://www.cubiculum.com/~rcfa
 Santiago Vila Doncel   sanvila@unex.es
 Saverio Pangoli                saverio@mystere.sci.sns.it
-Sebastian Huebner      cyco@lili.uni-bielefeld.de
+Sebastian Huebner      cyco@baud.de
+                       http://www.baud.de/cyco/
+Scott Schwartz         schwartz@bio.cse.psu.edu
 Slaven Rezic           eserte@cs.tu-berlin.de
+                       http://user.cs.tu-berlin.de/~eserte
 Stefan Albertz         Stefan.Albertz@rus.uni-stuttgart.de
-Stefan Haubenthal      wwwsth@sx1.hrz.uni-dortmund.de
+Stefan Haubenthal      haubi@geocities.com
+                       http://home.pages.de/~haubi
 Steinar Bang           sb@metis.no
 Stephane Berube                berube@iro.umontreal.ca
 Sumit Bose             bose@physik.tu-berlin.de
 Thomas Gebhardt                gebhardt@hrz.uni-marburg.de
-Thomas M. Ott          Labalutsch@aol.com
-Thomas Seeling         Thomas.Seeling@math.uni-giessen.de
+                       http://www.uni-marburg.de/hrz/mitarbeiter/gebhardt.html
+Thomas M. Ott
+Thomas Seeling
+Tom Hageman            tom@basil.icce.rug.nl
 Tom Tromey             tromey@cygnus.com
+                       http://cafe.colorado.edu/~tromey/
 Ulrich Drepper         drepper@gnu.org
 Ulrich Windl           Ulrich.Windl@rz.uni-regensburg.de
+                       http://www.uni-regensburg.de/Einrichtungen/Rechenzentrum/Orientierung/Mitarbeiter/windl.html
 Vern Paxson            vern@ee.lbl.gov
-Vitor Duarte           vad@fct.unl.pt
+Vitor Duarte           vad@di.fct.unl.pt
 Walter M\e.A\8eüller              walt@pi4.informatik.uni-mannheim.de
-Wiel Seuskens          wseuskens@siteways.nl
+Wiel Seuskens          wiel@xs4all.nl
+                       http://www.xs4all.nl/~wiel/
 Wilhelm Zadrapa                wfz@aon.at
 William Bader          wbader@scarecrow.csee.lehigh.edu
 Wolfgang Boerner       Wolfgang.Boerner@rz.uni-regensburg.de
 Wolfgang Wander                wwc@hermes.desy.de
-Yves Arrouye           Yves.Arrouye@imag.fr
+Yves Arrouye
diff --git a/TODO b/TODO
index 821c7723c8d009e47b03b02d4ca9d4df00cfef5b..654bccdb0a0060ef8b0e5b762b5bd86358f5b210 100644 (file)
--- a/TODO
+++ b/TODO
@@ -5,10 +5,16 @@ of these ideas, listed more or less in decreasing order of priority.
 Some TODO items are implicit from received email.  See file BACKLOG.
 Significant contributions require written assignments and disclaimers.
 
-.* Notes particulières
+.* Before next official release
 
-. + Nouvelles tables RFC 1345
-. + Révision ORA
+. + Remove TeX edition warnings, rephrase whatever required.
+. + Complete inter-node and menu references, as necessary.
+
+.* Particular notes
+
+. + Autoconf and DOSWIN
+. + New RFC 1345 tables, still many diagnostics
+. + Check notes from ORA
 . @ ~/libit/rmail/m4
 . @ ~/libit/rmail/gettext
 
@@ -45,11 +51,11 @@ Significant contributions require written assignments and disclaimers.
 . + Take note that ->RFC1345 recodings are non reversible.
 
 .* Notes about MSDOS port
-. + Un touch stamp-h a été nécessaire.
-. + @PRODUCT@ et @VERSION@ n'ont pas été substitués.
-. + Remplacer PRODUCT par PACKAGE dans config_h.*.
-. + On doit avoir -DHAVE_CONFIG_H=1 (le =1 est requis).
+. + I had to `touch stamp-h'.
+. + @PRODUCT@ and @VERSION@ were not substituted.
+. + Replace PRODUCT by PACKAGE within config_h.*.
+. + One should have -DHAVE_CONFIG_H=1 (the `=1' is required).
 . + charset.c:637: Maybe incorrect assignment in init_table_for_rfc1345().
-. + LIBINTL.OBJ et LOCALE.OBJ n'étaient pas compilés.
-. + La règle pour compiler LIBINTL.OBJ était absente.
-. + readme.tcc doit devenir README.DOS en cours de route.
+. + LIBINTL.OBJ and LOCALE.OBJ were not compiled.
+. + Rule to compile LIBINTL.OBJ was missing.
+. + readme.tcc should become README.DOS as things go.
index 3d75bdcd9e1b8b4b9ace0dcb73c1b01d58e4422e..7789d3851fe60607f5ee83f7a85945f14f0fc3d2 100644 (file)
@@ -1,5 +1,5 @@
 /* Special definitions for GNU recode, processed by autoheader.
-   Copyright © 1993, 1998 Free Software Foundation, Inc.
+   Copyright © 1993, 1998, 1999 Free Software Foundation, Inc.
    François Pinard <pinard@iro.umontreal.ca>, 1993.
 */
 
@@ -22,8 +22,8 @@
 /* Define to 1 if NLS is requested.  */
 #undef ENABLE_NLS
 
-/* Define as 1 if you have catgets and don't want to use GNU gettext.  */
-#undef HAVE_CATGETS
+/* Define as 1 if you have dcgettext.  */
+#undef HAVE_DCGETTEXT
 
 /* Define as 1 if you have gettext and don't want to use GNU gettext.  */
 #undef HAVE_GETTEXT
@@ -34,6 +34,9 @@
 /* Define to 1 if stpcpy function is available.  */
 #undef HAVE_STPCPY
 
+/* Define to the installation directory for locales.  */
+#undef LOCALEDIR
+
 /* Define to rpl_malloc if the replacement function should be used.  */
 #undef malloc
 
diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..47abe43
--- /dev/null
@@ -0,0 +1,430 @@
+## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
+## Copyright (C) 1996-1999 Free Software Foundation, Inc.
+## Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program 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
+## General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+##
+## As a special exception to the GNU General Public License, if you
+## distribute this file as part of a program that contains a
+## configuration script generated by Autoconf, you may include it under
+## the same distribution terms that you use for the rest of that program.
+
+# serial 40 AC_PROG_LIBTOOL
+AC_DEFUN(AC_PROG_LIBTOOL,
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+
+# Save cache, so that ltconfig can load it
+AC_CACHE_SAVE
+
+# Actually configure libtool.  ac_aux_dir is where install-sh is found.
+CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
+LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
+DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
+$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
+|| AC_MSG_ERROR([libtool configure failed])
+
+# Reload cache, that may have been modified by ltconfig
+AC_CACHE_LOAD
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
+])
+
+AC_DEFUN(AC_LIBTOOL_SETUP,
+[AC_PREREQ(2.13)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_RANLIB])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+dnl
+
+case "$target" in
+NONE) lt_target="$host" ;;
+*) lt_target="$target" ;;
+esac
+
+# Check for any special flags to pass to ltconfig.
+libtool_flags="--cache-file=$cache_file"
+test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
+test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
+test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
+test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
+test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
+[libtool_flags="$libtool_flags --enable-dlopen"])
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[libtool_flags="$libtool_flags --enable-win32-dll"])
+AC_ARG_ENABLE(libtool-lock,
+  [  --disable-libtool-lock  avoid locking (might break parallel builds)])
+test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case "$lt_target" in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+])
+esac
+])
+
+# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
+AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+
+# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
+AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+
+# AC_ENABLE_SHARED - implement the --enable-shared flag
+# Usage: AC_ENABLE_SHARED[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN(AC_ENABLE_SHARED, [dnl
+define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(shared,
+changequote(<<, >>)dnl
+<<  --enable-shared[=PKGS]  build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
+])
+
+# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
+AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)])
+
+# AC_ENABLE_STATIC - implement the --enable-static flag
+# Usage: AC_ENABLE_STATIC[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN(AC_ENABLE_STATIC, [dnl
+define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(static,
+changequote(<<, >>)dnl
+<<  --enable-static[=PKGS]  build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
+])
+
+# AC_DISABLE_STATIC - set the default static flag to --disable-static
+AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)])
+
+
+# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
+# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
+define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(fast-install,
+changequote(<<, >>)dnl
+<<  --enable-fast-install[=PKGS]  optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case "$enableval" in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
+])
+
+# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
+AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)])
+
+# AC_PROG_LD - find the path to the GNU or non-GNU linker
+AC_DEFUN(AC_PROG_LD,
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$ac_cv_prog_gcc" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  ac_prog=`($CC -print-prog-name=ld) 2>&5`
+  case "$ac_prog" in
+    # Accept absolute paths.
+changequote(,)dnl
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+changequote([,])dnl
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(ac_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      ac_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+       test "$with_gnu_ld" != no && break
+      else
+       test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  ac_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$ac_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])
+
+AC_DEFUN(AC_PROG_LD_GNU,
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  ac_cv_prog_gnu_ld=yes
+else
+  ac_cv_prog_gnu_ld=no
+fi])
+])
+
+# AC_PROG_NM - find the path to a BSD-compatible name lister
+AC_DEFUN(AC_PROG_NM,
+[AC_MSG_CHECKING([for BSD-compatible nm])
+AC_CACHE_VAL(ac_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  ac_cv_path_NM="$NM"
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       ac_cv_path_NM="$ac_dir/nm -B"
+       break
+      elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       ac_cv_path_NM="$ac_dir/nm -p"
+       break
+      else
+       ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+       continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
+fi])
+NM="$ac_cv_path_NM"
+AC_MSG_RESULT([$NM])
+])
+
+# AC_CHECK_LIBM - check for math library
+AC_DEFUN(AC_CHECK_LIBM,
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case "$lt_target" in
+*-*-beos* | *-*-cygwin*)
+  # These system don't have libm
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, main, LIBM="-lm")
+  ;;
+esac
+])
+
+# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl convenience library, adds --enable-ltdl-convenience to
+# the configure arguments.  Note that LIBLTDL is not AC_SUBSTed, nor
+# is AC_CONFIG_SUBDIRS called.  If DIR is not provided, it is assumed
+# to be `${top_builddir}/libltdl'.  Make sure you start DIR with
+# '${top_builddir}/' (note the single quotes!) if your package is not
+# flat, and, if you're not using automake, define top_builddir as
+# appropriate in the Makefiles.
+AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case "$enable_ltdl_convenience" in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
+  INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
+])
+
+# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl installable library, and adds --enable-ltdl-install to
+# the configure arguments.  Note that LIBLTDL is not AC_SUBSTed, nor
+# is AC_CONFIG_SUBDIRS called.  If DIR is not provided, it is assumed
+# to be `${top_builddir}/libltdl'.  Make sure you start DIR with
+# '${top_builddir}/' (note the single quotes!) if your package is not
+# flat, and, if you're not using automake, define top_builddir as
+# appropriate in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, main,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
+    INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    INCLTDL=
+  fi
+])
+
+dnl old names
+AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
+AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
+AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
+AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
+AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
+AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
+AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
+
+dnl This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])dnl
index a812e8ccd2f13740fdc8fa179ea97a76454a6d44..48513300cb5cf8d22dac66cd54e8675fbb8acdcd 100644 (file)
@@ -10,158 +10,6 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
 dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 dnl PARTICULAR PURPOSE.
 
-# Like AC_CONFIG_HEADER, but automatically create stamp file.
-
-AC_DEFUN(AM_CONFIG_HEADER,
-[AC_PREREQ([2.12])
-AC_CONFIG_HEADER([$1])
-dnl When config.status generates a header, we must update the stamp-h file.
-dnl This file resides in the same directory as the config header
-dnl that is generated.  We must strip everything past the first ":",
-dnl and everything past the last "/".
-AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
-ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
-<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
-<<am_indx=1
-for am_file in <<$1>>; do
-  case " <<$>>CONFIG_HEADERS " in
-  *" <<$>>am_file "*<<)>>
-    echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
-    ;;
-  esac
-  am_indx=`expr "<<$>>am_indx" + 1`
-done<<>>dnl>>)
-changequote([,]))])
-
-# Do all the work for Automake.  This macro actually does too much --
-# some checks are only needed if your package does certain things.
-# But this isn't really a big deal.
-
-# serial 1
-
-dnl Usage:
-dnl AM_INIT_AUTOMAKE(package,version, [no-define])
-
-AC_DEFUN(AM_INIT_AUTOMAKE,
-[AC_REQUIRE([AC_PROG_INSTALL])
-PACKAGE=[$1]
-AC_SUBST(PACKAGE)
-VERSION=[$2]
-AC_SUBST(VERSION)
-dnl test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
-  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-fi
-ifelse([$3],,
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
-AC_REQUIRE([AM_SANITY_CHECK])
-AC_REQUIRE([AC_ARG_PROGRAM])
-dnl FIXME This is truly gross.
-missing_dir=`cd $ac_aux_dir && pwd`
-AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
-AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
-AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
-AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
-AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
-AC_REQUIRE([AC_PROG_MAKE_SET])])
-
-#
-# Check to make sure that the build environment is sane.
-#
-
-AC_DEFUN(AM_SANITY_CHECK,
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftestfile
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments.  Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
-   set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
-   if test "[$]*" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftestfile`
-   fi
-   if test "[$]*" != "X $srcdir/configure conftestfile" \
-      && test "[$]*" != "X conftestfile $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
-   test "[$]2" = conftestfile
-   )
-then
-   # Ok.
-   :
-else
-   AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-rm -f conftest*
-AC_MSG_RESULT(yes)])
-
-dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
-dnl The program must properly implement --version.
-AC_DEFUN(AM_MISSING_PROG,
-[AC_MSG_CHECKING(for working $2)
-# Run test in a subshell; some versions of sh will print an error if
-# an executable is not found, even if stderr is redirected.
-# Redirect stdin to placate older versions of autoconf.  Sigh.
-if ($2 --version) < /dev/null > /dev/null 2>&1; then
-   $1=$2
-   AC_MSG_RESULT(found)
-else
-   $1="$3/missing $2"
-   AC_MSG_RESULT(missing)
-fi
-AC_SUBST($1)])
-
-
-# Single argument says where are built sources to test, relative to the
-# built test directory.  Maybe omitted if the same (flat distribution).
-
-AC_DEFUN(AT_CONFIG,
-[AT_TESTPATH=ifelse($1, , ., $1)
-AC_SUBST(AT_TESTPATH)
-fp_PROG_ECHO
-])
-
-
-# Once this macro is called, you may output with no echo in a Makefile or
-# script using:  echo @ECHO_N@ "STRING_TO_OUTPUT@ECHO_C@".
-
-AC_DEFUN(fp_PROG_ECHO,
-[AC_CACHE_CHECK(how to suppress newlines using echo, fp_cv_prog_echo_nonl,
-[if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    fp_cv_prog_echo_nonl=no
-  else
-    fp_cv_prog_echo_nonl=option
-  fi
-else
-  fp_cv_prog_echo_nonl=escape
-fi
-])
-test $fp_cv_prog_echo_nonl = no \
-  && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'"
-case $fp_cv_prog_echo_nonl in
-  no) ECHO_N= ECHO_C= ;;
-  option) ECHO_N=-n ECHO_C= ;;
-  escape) ECHO_N= ECHO_C='\c' ;;
-esac
-AC_SUBST(ECHO_N)dnl
-AC_SUBST(ECHO_C)dnl
-])
-
 
 # serial 40 AC_PROG_LIBTOOL
 AC_DEFUN(AC_PROG_LIBTOOL,
@@ -176,7 +24,7 @@ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
 LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
 DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
+$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
 || AC_MSG_ERROR([libtool configure failed])
 
 # Reload cache, that may have been modified by ltconfig
@@ -208,6 +56,11 @@ AC_REQUIRE([AC_PROG_NM])dnl
 AC_REQUIRE([AC_PROG_LN_S])dnl
 dnl
 
+case "$target" in
+NONE) lt_target="$host" ;;
+*) lt_target="$target" ;;
+esac
+
 # Check for any special flags to pass to ltconfig.
 libtool_flags="--cache-file=$cache_file"
 test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
@@ -226,7 +79,7 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
 
 # Some flags need to be propagated to the compiler or linker for good
 # libtool support.
-case "$host" in
+case "$lt_target" in
 *-*-irix6*)
   # Find out which ABI we are using.
   echo '[#]line __oline__ "configure"' > conftest.$ac_ext
@@ -442,7 +295,6 @@ else
   AC_MSG_RESULT(no)
 fi
 test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_SUBST(LD)
 AC_PROG_LD_GNU
 ])
 
@@ -488,14 +340,13 @@ else
 fi])
 NM="$ac_cv_path_NM"
 AC_MSG_RESULT([$NM])
-AC_SUBST(NM)
 ])
 
 # AC_CHECK_LIBM - check for math library
 AC_DEFUN(AC_CHECK_LIBM,
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
-case "$host" in
+case "$lt_target" in
 *-*-beos* | *-*-cygwin*)
   # These system don't have libm
   ;;
@@ -568,6 +419,158 @@ AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
 dnl This is just to silence aclocal about the macro not being used
 ifelse([AC_DISABLE_FAST_INSTALL])dnl
 
+# Like AC_CONFIG_HEADER, but automatically create stamp file.
+
+AC_DEFUN(AM_CONFIG_HEADER,
+[AC_PREREQ([2.12])
+AC_CONFIG_HEADER([$1])
+dnl When config.status generates a header, we must update the stamp-h file.
+dnl This file resides in the same directory as the config header
+dnl that is generated.  We must strip everything past the first ":",
+dnl and everything past the last "/".
+AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
+ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
+<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
+<<am_indx=1
+for am_file in <<$1>>; do
+  case " <<$>>CONFIG_HEADERS " in
+  *" <<$>>am_file "*<<)>>
+    echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
+    ;;
+  esac
+  am_indx=`expr "<<$>>am_indx" + 1`
+done<<>>dnl>>)
+changequote([,]))])
+
+# Do all the work for Automake.  This macro actually does too much --
+# some checks are only needed if your package does certain things.
+# But this isn't really a big deal.
+
+# serial 1
+
+dnl Usage:
+dnl AM_INIT_AUTOMAKE(package,version, [no-define])
+
+AC_DEFUN(AM_INIT_AUTOMAKE,
+[AC_REQUIRE([AC_PROG_INSTALL])
+PACKAGE=[$1]
+AC_SUBST(PACKAGE)
+VERSION=[$2]
+AC_SUBST(VERSION)
+dnl test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+ifelse([$3],,
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
+AC_REQUIRE([AM_SANITY_CHECK])
+AC_REQUIRE([AC_ARG_PROGRAM])
+dnl FIXME This is truly gross.
+missing_dir=`cd $ac_aux_dir && pwd`
+AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
+AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
+AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
+AC_REQUIRE([AC_PROG_MAKE_SET])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+AC_DEFUN(AM_SANITY_CHECK,
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftestfile
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
+   if test "[$]*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftestfile`
+   fi
+   if test "[$]*" != "X $srcdir/configure conftestfile" \
+      && test "[$]*" != "X conftestfile $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "[$]2" = conftestfile
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+rm -f conftest*
+AC_MSG_RESULT(yes)])
+
+dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
+dnl The program must properly implement --version.
+AC_DEFUN(AM_MISSING_PROG,
+[AC_MSG_CHECKING(for working $2)
+# Run test in a subshell; some versions of sh will print an error if
+# an executable is not found, even if stderr is redirected.
+# Redirect stdin to placate older versions of autoconf.  Sigh.
+if ($2 --version) < /dev/null > /dev/null 2>&1; then
+   $1=$2
+   AC_MSG_RESULT(found)
+else
+   $1="$3/missing $2"
+   AC_MSG_RESULT(missing)
+fi
+AC_SUBST($1)])
+
+
+# Single argument says where are built sources to test, relative to the
+# built test directory.  Maybe omitted if the same (flat distribution).
+
+AC_DEFUN(AT_CONFIG,
+[AT_TESTPATH=ifelse($1, , ., $1)
+AC_SUBST(AT_TESTPATH)
+fp_PROG_ECHO
+])
+
+
+# Once this macro is called, you may output with no echo in a Makefile or
+# script using:  echo @ECHO_N@ "STRING_TO_OUTPUT@ECHO_C@".
+
+AC_DEFUN(fp_PROG_ECHO,
+[AC_CACHE_CHECK(how to suppress newlines using echo, fp_cv_prog_echo_nonl,
+[if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    fp_cv_prog_echo_nonl=no
+  else
+    fp_cv_prog_echo_nonl=option
+  fi
+else
+  fp_cv_prog_echo_nonl=escape
+fi
+])
+test $fp_cv_prog_echo_nonl = no \
+  && echo 2>&1 "WARNING: \`echo' not powerful enough for \`make check'"
+case $fp_cv_prog_echo_nonl in
+  no) ECHO_N= ECHO_C= ;;
+  option) ECHO_N=-n ECHO_C= ;;
+  escape) ECHO_N= ECHO_C='\c' ;;
+esac
+AC_SUBST(ECHO_N)dnl
+AC_SUBST(ECHO_C)dnl
+])
+
 
 # serial 1
 
@@ -687,20 +690,6 @@ AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex")
 AC_PROG_LEX
 AC_DECL_YYTEXT])
 
-
-AC_DEFUN(fp_OS_MICROSOFT,
-[AC_CACHE_CHECK([for MSDOS, Win95 or WinNT], fp_cv_os_microsoft,
-[if test -n "$COMSPEC"; then
-  # MSDOS or Win95
-   fp_cv_os_microsoft=yes
-elif test -n "$ComSpec"; then
-  # WinNT
-  fp_cv_os_microsoft=yes
-else
-  fp_cv_os_microsoft=no
-fi
-])])
-
 #serial 1
 
 dnl From Jim Meyering.
@@ -792,6 +781,20 @@ AC_DEFUN(jm_FUNC_REALLOC,
 ])
 
 
+AC_DEFUN(fp_OS_MICROSOFT,
+[AC_CACHE_CHECK([for MSDOS, Win95 or WinNT], fp_cv_os_microsoft,
+[if test -n "$COMSPEC"; then
+  # MSDOS or Win95
+   fp_cv_os_microsoft=yes
+elif test -n "$ComSpec"; then
+  # WinNT
+  fp_cv_os_microsoft=yes
+else
+  fp_cv_os_microsoft=no
+fi
+])])
+
+
 # serial 1
 
 AC_DEFUN(AM_WITH_DMALLOC,
@@ -810,6 +813,138 @@ else
 fi], [AC_MSG_RESULT(no)])
 ])
 
+# Select gettext and choose translations to install.   -*- shell-script -*-
+# François Pinard <pinard@iro.umontreal.ca>, 1998.
+
+# Here is a check list about how one could use this macro.
+# - In the build directory, execute `make distclean'.
+# - Rename `po/' to `i18n/'.
+# - Recursively delete directory `intl/'.
+# - Add the following files:
+#    . `i18n/Makefile.am'
+#    . `m4/gettext.m4'
+#    . `lib/gettext.c'
+#    . `lib/gettext.h'.
+# - In top level `configure.in':
+#    . use `fp_WITH_GETTEXT'.
+#    . delete `AM_GNU_GETTEXT' and any `AC_LINK_FILES' for $nls variables.
+#    . add `i18n/Makefile' to `AC_OUTPUT'.
+#    . delete `intl/Makefile' and `po/Makefile.in' from `AC_OUTPUT'.
+# - In top level `Makefile.am':
+#    . add `i18n' in SUBDIRS, and remove `intl' and `po'.
+#    . define `POTFILES' (peek at previous `i18n/POTFILES.in).
+#    . add `$(srcdir)/stamp-pot' to `all-local'.
+#    . add rule for `$(srcdir)/stamp-pot'.
+# - In top level `acconfig.h':
+#    . document `HAVE_DCGETTEXT' and `LOCALEDIR'.
+#    . delete documentation for `HAVE_CATGETS'.
+# - In `lib/Makefile.am':
+#    . add `gettext.c' to `EXTRA_DIST'.
+#    . add `gettext.h' to `noinstl_HEADERS'.
+#    . add definitions for `localdir' and `aliaspath'.
+#    . add special rules for `gettext.o' and `gettext._o'.
+# - In `m4/Makefile.am':
+#    . add `gettext.m4' to `EXTRA_DIST'.
+# - In `src/Makefile.am':
+#    . delete `-I/..intl' from `INCLUDES'.
+#    . delete `@INTLLIBS@' from `LDADD'.
+#    . delete `localedir' and its references.
+# - Clean up directory `i18n/':
+#    . delete `Makefile.in.in' and `POTFILES.in'.
+#    . delete all `*.gmo' files, `cat-id-tbl.c' and `stamp-cat-id'.
+# - In the top level distribution directory:
+#    . run `aclocal -I m4'.
+#    . run `autoreconf'.
+# - In the build directory:
+#    . run `$top_srcdir/configure'.
+#    . run `make check'.
+
+AC_DEFUN(fp_WITH_GETTEXT, [
+
+  AC_MSG_CHECKING(whether NLS is wanted)
+  AC_ARG_ENABLE(nls,
+    [  --disable-nls           disallow Native Language Support],
+    enable_nls=$enableval, enable_nls=yes)
+  AC_MSG_RESULT($enable_nls)
+  use_nls=$enable_nls
+  AM_CONDITIONAL(USE_NLS, test $use_nls = yes)
+
+  if test $enable_nls = yes; then
+    AC_DEFINE(ENABLE_NLS)
+
+    AC_ARG_WITH(catgets,
+      [  --with-catgets          say that catgets is not supported],
+      [AC_MSG_WARN([catgets not supported, --with-catgets ignored])])
+
+    AC_CHECK_FUNCS(gettext)
+    AC_CHECK_LIB(intl, gettext, :)
+    if test $ac_cv_lib_intl_gettext$ac_cv_func_gettext != nono; then
+      AC_MSG_CHECKING(whether the included gettext is preferred)
+      AC_ARG_WITH(included-gettext,
+       [  --without-included-gettext avoid our provided version of gettext],
+       with_included_gettext=$withval, with_included_gettext=yes)
+      AC_MSG_RESULT($with_included_gettext)
+      if test $with_included_gettext$ac_cv_func_gettext = nono; then
+        LIBS="$LIBS -lintl"
+      fi
+    else
+      with_included_gettext=yes
+    fi
+    if test $with_included_gettext = yes; then
+      LIBOBJS="$LIBOBJS gettext.o"
+      AC_DEFINE(HAVE_GETTEXT)
+      AC_DEFINE(HAVE_DCGETTEXT)
+    else
+      AC_CHECK_HEADERS(libintl.h)
+      AC_CHECK_FUNCS(dcgettext gettext)
+    fi
+
+    AC_CHECK_HEADERS(locale.h)
+    AC_CHECK_FUNCS(getcwd setlocale stpcpy)
+    AM_LC_MESSAGES
+
+    if test -z "$ALL_LINGUAS"; then
+      AC_MSG_WARN(This package does not install translations yet.)
+    else
+      ac_items="$ALL_LINGUAS"
+      for ac_item in $ac_items; do
+       ALL_POFILES="$ALL_POFILES $ac_item.po"
+       ALL_MOFILES="$ALL_MOFILES $ac_item.mo"
+      done
+    fi
+    AC_SUBST(ALL_LINGUAS)
+    AC_SUBST(ALL_POFILES)
+    AC_SUBST(ALL_MOFILES)
+
+    AC_MSG_CHECKING(which translations to install)
+    if test -z "$LINGUAS"; then
+      ac_print="$ALL_LINGUAS"
+      MOFILES="$ALL_MOFILES"
+    else
+      ac_items="$LINGUAS"
+      for ac_item in $ac_items; do
+       case "$ALL_LINGUAS" in
+         *$ac_item*)
+           ac_print="$ac_print $ac_item"
+           MOFILES="$MOFILES $ac_item.mo"
+           ;;
+       esac
+      done
+    fi
+    AC_SUBST(MOFILES)
+    if test -z "$ac_print"; then
+      AC_MSG_RESULT(none)
+    else
+      AC_MSG_RESULT($ac_print)
+    fi
+
+    if test "x$prefix" = xNONE; then
+      AC_DEFINE_UNQUOTED(LOCALEDIR, "$ac_default_prefix/share/locale")
+    else
+      AC_DEFINE_UNQUOTED(LOCALEDIR, "$prefix/share/locale")
+    fi
+  fi])
+
 # Macro to add for using GNU gettext.
 # Ulrich Drepper <drepper@cygnus.com>, 1995.
 #
@@ -1194,3 +1329,16 @@ AC_DEFUN(AM_LC_MESSAGES,
     fi
   fi])
 
+# Define a conditional.
+
+AC_DEFUN(AM_CONDITIONAL,
+[AC_SUBST($1_TRUE)
+AC_SUBST($1_FALSE)
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi])
+
index 6cb567b8ae6c0afe306ac67603e16d01e7309157..e1b5871708010cf0962a293681cd941b915125e3 100755 (executable)
@@ -24,7 +24,7 @@
 
 # Written by Per Bothner <bothner@cygnus.com>.
 # The master version of this file is at the FSF in /home/gd/gnu/lib.
-# Please send patches to the Autoconf mailing list <autoconf@gnu.org>.
+# Please send patches to <autoconf-patches@gnu.org>.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
@@ -156,6 +156,9 @@ EOF
     wgrisc:OpenBSD:*:*)
        echo mipsel-unknown-openbsd${UNAME_RELEASE}
        exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit 0;;
@@ -328,15 +331,18 @@ EOF
     AViiON:dgux:*:*)
         # DG/UX returns AViiON for all architectures
         UNAME_PROCESSOR=`/usr/bin/uname -p`
-        if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
-       if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-            -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
                echo m88k-dg-dgux${UNAME_RELEASE}
-       else
+           else
                echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
        fi
-        else echo i586-dg-dgux${UNAME_RELEASE}
-        fi
        exit 0 ;;
     M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
        echo m88k-dolphin-sysv3
@@ -453,7 +459,7 @@ EOF
                   exit (0);
               }
 EOF
-       ($CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+       (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
        rm -f $dummy.c $dummy
        esac
        HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
@@ -550,7 +556,7 @@ EOF
        echo t90-cray-unicos${UNAME_RELEASE}
        exit 0 ;;
     CRAY*T3E:*:*:*)
-       echo t3e-cray-unicosmk${UNAME_RELEASE}
+       echo alpha-cray-unicosmk${UNAME_RELEASE}
        exit 0 ;;
     CRAY-2:*:*:*)
        echo cray2-cray-unicos
@@ -588,7 +594,7 @@ EOF
        echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit 0 ;;
     *:NetBSD:*:*)
-       echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'`
        exit 0 ;;
     *:OpenBSD:*:*)
        echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
@@ -618,12 +624,6 @@ EOF
        echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit 0 ;;
     *:Linux:*:*)
-       # uname on the ARM produces all sorts of strangeness, and we need to
-       # filter it out.
-       case "$UNAME_MACHINE" in
-         armv*)                      UNAME_MACHINE=$UNAME_MACHINE ;;
-         arm* | sa110*)              UNAME_MACHINE="arm" ;;
-       esac
 
        # The BFD linker knows what the default object file format is, so
        # first see if it will tell us. cd to the root directory to prevent
@@ -636,11 +636,38 @@ EOF
                                    s/ .*//
                                    p'`
         case "$ld_supported_emulations" in
-         i?86linux)  echo "${UNAME_MACHINE}-pc-linux-gnuaout"      ; exit 0 ;;
-         i?86coff)   echo "${UNAME_MACHINE}-pc-linux-gnucoff"      ; exit 0 ;;
-         sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-         armlinux)   echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
-         m68klinux)  echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
+         *ia64)
+               echo "${UNAME_MACHINE}-unknown-linux"
+               exit 0
+               ;;
+         i?86linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0
+               ;;
+         i?86coff)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit 0
+               ;;
+         sparclinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
+         armlinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
+         elf32arm*)
+               echo "${UNAME_MACHINE}-unknown-linux-gnu"
+               exit 0
+               ;;
+         armelf_linux*)
+               echo "${UNAME_MACHINE}-unknown-linux-gnu"
+               exit 0
+               ;;
+         m68klinux)
+               echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+               exit 0
+               ;;
          elf32ppc)
                # Determine Lib Version
                cat >$dummy.c <<EOF
@@ -670,7 +697,9 @@ EOF
                        fi
                fi      
                rm -f $dummy.c $dummy
-               echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;;
+               echo powerpc-unknown-linux-gnu${LIBC}
+               exit 0
+               ;;
        esac
 
        if test "${UNAME_MACHINE}" = "alpha" ; then
@@ -797,19 +826,21 @@ EOF
        echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
        exit 0 ;;
     i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
        if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-               echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
        else
-               echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
        fi
        exit 0 ;;
     i?86:*:5:7*)
-       UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
-       (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
-       (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) && UNAME_MACHINE=i586
-       (/bin/uname -X|egrep '^Machine.*Pent.*II' >/dev/null) && UNAME_MACHINE=i686
-       (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) && UNAME_MACHINE=i585
-       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}${UNAME_VERSION}-sysv${UNAME_RELEASE}
+        # Fixed at (any) Pentium or better
+        UNAME_MACHINE=i586
+        if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+           echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
+       else
+           echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+       fi
        exit 0 ;;
     i?86:*:3.2:*)
        if test -f /usr/options/cb.name; then
@@ -943,6 +974,9 @@ EOF
     *:Rhapsody:*:*)
        echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
        exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-qnx-qnx${UNAME_VERSION}
+       exit 0 ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
index bab60f0871b6f14dcd3ed1afdc72c751c6f194ab..750951d649533ca91fcbc8ff13606a4875a158fd 100644 (file)
@@ -26,9 +26,6 @@
 /* Define if you don't have vprintf but do have _doprnt.  */
 #undef HAVE_DOPRNT
 
-/* Define if you have a working `mmap' system call.  */
-#undef HAVE_MMAP
-
 /* Define if you have the vprintf function.  */
 #undef HAVE_VPRINTF
 
@@ -38,9 +35,6 @@
 /* Define if on MINIX.  */
 #undef _MINIX
 
-/* Define to `long' if <sys/types.h> doesn't define.  */
-#undef off_t
-
 /* Define if the system does not provide POSIX.1 features except
    with this defined.  */
 #undef _POSIX_1_SOURCE
@@ -51,9 +45,6 @@
 /* Define as the return type of signal handlers (int or void).  */
 #undef RETSIGTYPE
 
-/* Define to `unsigned' if <sys/types.h> doesn't define.  */
-#undef size_t
-
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
@@ -79,8 +70,8 @@
 /* Define to 1 if NLS is requested.  */
 #undef ENABLE_NLS
 
-/* Define as 1 if you have catgets and don't want to use GNU gettext.  */
-#undef HAVE_CATGETS
+/* Define as 1 if you have dcgettext.  */
+#undef HAVE_DCGETTEXT
 
 /* Define as 1 if you have gettext and don't want to use GNU gettext.  */
 #undef HAVE_GETTEXT
@@ -88,8 +79,8 @@
 /* Define if your locale.h file contains LC_MESSAGES.  */
 #undef HAVE_LC_MESSAGES
 
-/* Define to 1 if stpcpy function is available.  */
-#undef HAVE_STPCPY
+/* Define to the installation directory for locales.  */
+#undef LOCALEDIR
 
 /* Define to rpl_malloc if the replacement function should be used.  */
 #undef malloc
 /* Define if you have the DONE_WORKING_REALLOC_CHECK function.  */
 #undef HAVE_DONE_WORKING_REALLOC_CHECK
 
-/* Define if you have the __argz_count function.  */
-#undef HAVE___ARGZ_COUNT
-
-/* Define if you have the __argz_next function.  */
-#undef HAVE___ARGZ_NEXT
-
-/* Define if you have the __argz_stringify function.  */
-#undef HAVE___ARGZ_STRINGIFY
-
 /* Define if you have the dcgettext function.  */
 #undef HAVE_DCGETTEXT
 
 /* Define if you have the getcwd function.  */
 #undef HAVE_GETCWD
 
-/* Define if you have the getpagesize function.  */
-#undef HAVE_GETPAGESIZE
-
-/* Define if you have the munmap function.  */
-#undef HAVE_MUNMAP
-
-/* Define if you have the putenv function.  */
-#undef HAVE_PUTENV
+/* Define if you have the gettext function.  */
+#undef HAVE_GETTEXT
 
 /* Define if you have the rename function.  */
 #undef HAVE_RENAME
 
-/* Define if you have the setenv function.  */
-#undef HAVE_SETENV
-
 /* Define if you have the setlocale function.  */
 #undef HAVE_SETLOCALE
 
 /* Define if you have the stpcpy function.  */
 #undef HAVE_STPCPY
 
-/* Define if you have the strcasecmp function.  */
-#undef HAVE_STRCASECMP
-
-/* Define if you have the strchr function.  */
-#undef HAVE_STRCHR
-
-/* Define if you have the strdup function.  */
-#undef HAVE_STRDUP
-
 /* Define if you have the strerror function.  */
 #undef HAVE_STRERROR
 
-/* Define if you have the <argz.h> header file.  */
-#undef HAVE_ARGZ_H
+/* Define if you have the strtol function.  */
+#undef HAVE_STRTOL
+
+/* Define if you have the strtoul function.  */
+#undef HAVE_STRTOUL
+
+/* Define if you have the <libintl.h> header file.  */
+#undef HAVE_LIBINTL_H
 
 /* Define if you have the <limits.h> header file.  */
 #undef HAVE_LIMITS_H
 /* Define if you have the <locale.h> header file.  */
 #undef HAVE_LOCALE_H
 
-/* Define if you have the <malloc.h> header file.  */
-#undef HAVE_MALLOC_H
-
-/* Define if you have the <nl_types.h> header file.  */
-#undef HAVE_NL_TYPES_H
-
 /* Define if you have the <stdbool.h> header file.  */
 #undef HAVE_STDBOOL_H
 
 /* Define if you have the <string.h> header file.  */
 #undef HAVE_STRING_H
 
-/* Define if you have the <sys/param.h> header file.  */
-#undef HAVE_SYS_PARAM_H
-
 /* Define if you have the <unistd.h> header file.  */
 #undef HAVE_UNISTD_H
 
 /* Define if you have the <utime.h> header file.  */
 #undef HAVE_UTIME_H
 
-/* Define if you have the i library (-li).  */
-#undef HAVE_LIBI
-
 /* Name of package */
 #undef PACKAGE
 
index 2436b45347a981164f777470398d5642517ea64e..28426bb8fa0abac1f35de4b4b587faeff310a936 100755 (executable)
@@ -105,7 +105,7 @@ case $os in
        -scout)
                ;;
        -wrs)
-               os=vxworks
+               os=-vxworks
                basic_machine=$1
                ;;
        -hiux*)
@@ -156,13 +156,17 @@ case $os in
        -psos*)
                os=-psos
                ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
 esac
 
 # Decode aliases for certain CPU-COMPANY combinations.
 case $basic_machine in
        # Recognize the basic CPU types without company name.
        # Some are omitted here because they have special meanings below.
-       tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+       tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
                | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
                | 580 | i960 | h8300 \
                | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
@@ -171,12 +175,12 @@ case $basic_machine in
                | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
                | mips64orion | mips64orionel | mipstx39 | mipstx39el \
                | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
-               | mips64vr5000 | miprs64vr5000el \
+               | mips64vr5000 | miprs64vr5000el | mcore \
                | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
-               | thumb | d10v)
+               | thumb | d10v | fr30)
                basic_machine=$basic_machine-unknown
                ;;
-       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65)
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
                ;;
 
        # We use `pc' rather than `unknown'
@@ -191,7 +195,8 @@ case $basic_machine in
                exit 1
                ;;
        # Recognize the basic CPU types with company name.
-       vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+       # FIXME: clean up the formatting here.
+       vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
              | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
              | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
              | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
@@ -204,10 +209,10 @@ case $basic_machine in
              | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
              | mips64el-* | mips64orion-* | mips64orionel-* \
              | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
-             | mipstx39-* | mipstx39el-* \
+             | mipstx39-* | mipstx39el-* | mcore-* \
              | f301-* | armv*-* | t3e-* \
              | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
-             | thumb-* | v850-* | d30v-* | tic30-* | c30-* )
+             | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* )
                ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
@@ -425,7 +430,6 @@ case $basic_machine in
                ;;
        i370-ibm* | ibm*)
                basic_machine=i370-ibm
-               os=-mvs
                ;;
 # I'm not sure what "Sysv32" means.  Should this be sysv3.2?
        i[34567]86v32)
@@ -460,6 +464,9 @@ case $basic_machine in
                basic_machine=i386-unknown
                os=-mingw32
                ;;
+       i386-qnx | qnx)
+               basic_machine=i386-qnx
+               ;;
        iris | iris4d)
                basic_machine=mips-sgi
                case $os in
@@ -488,7 +495,7 @@ case $basic_machine in
        miniframe)
                basic_machine=m68000-convergent
                ;;
-       *mint | *MiNT)
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
                basic_machine=m68k-atari
                os=-mint
                ;;
@@ -514,6 +521,10 @@ case $basic_machine in
                basic_machine=i386-unknown
                os=-msdos
                ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
        ncr3000)
                basic_machine=i486-ncr
                os=-sysv4
@@ -523,7 +534,7 @@ case $basic_machine in
                os=-netbsd
                ;;
        netwinder)
-               basic_machine=armv4l-corel
+               basic_machine=armv4l-rebel
                os=-linux
                ;;
        news | news700 | news800 | news900)
@@ -907,7 +918,7 @@ case $os in
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
-             | -interix* | -uwin* | -rhapsody* | -openstep* | -oskit*)
+             | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
@@ -926,6 +937,9 @@ case $os in
        -sunos6*)
                os=`echo $os | sed -e 's|sunos6|solaris3|'`
                ;;
+       -opened*)
+               os=-openedition
+               ;;
        -osfrose*)
                os=-osfrose
                ;;
@@ -963,6 +977,9 @@ case $os in
        -oss*)
                os=-sysv3
                ;;
+        -qnx)
+               os=-qnx4
+               ;;
        -svr4)
                os=-sysv4
                ;;
@@ -1012,7 +1029,7 @@ case $basic_machine in
        *-acorn)
                os=-riscix1.2
                ;;
-       arm*-corel)
+       arm*-rebel)
                os=-linux
                ;;
        arm*-semi)
@@ -1186,7 +1203,7 @@ case $basic_machine in
                        -genix*)
                                vendor=ns
                                ;;
-                       -mvs*)
+                       -mvs* | -opened*)
                                vendor=ibm
                                ;;
                        -ptx*)
index 3ed9ecd106201fa6b9026c4930a8cbe3f1a4ed7b..88f61a94e106ed2045938d9220b5c782ca7ed5d4 100755 (executable)
--- a/configure
+++ b/configure
@@ -25,11 +25,11 @@ ac_help="$ac_help
   --with-dmalloc          use dmalloc, as in
                           ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz"
 ac_help="$ac_help
-  --disable-nls           do not use Native Language Support"
+  --disable-nls           disallow Native Language Support"
 ac_help="$ac_help
-  --with-included-gettext use the GNU gettext library included here"
+  --with-catgets          say that catgets is not supported"
 ac_help="$ac_help
-  --with-catgets          use catgets functions if available"
+  --without-included-gettext avoid our provided version of gettext"
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -714,7 +714,7 @@ fi
 
 PACKAGE=recode
 
-VERSION=3.5
+VERSION=3.5a
 
 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
   { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
@@ -825,46 +825,12 @@ case $fp_cv_prog_echo_nonl in
 esac
 
 
-ALL_LINGUAS="da de es fr nl pl pt sl sv"
-
-for ac_prog in mawk gawk nawk awk
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:836: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_AWK="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-AWK="$ac_cv_prog_AWK"
-if test -n "$AWK"; then
-  echo "$ac_t""$AWK" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AWK" && break
-done
+ALL_LINGUAS="da de el es fr it nl pl pt sl sv"
 
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:868: checking for $ac_word" >&5
+echo "configure:834: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -894,7 +860,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:898: checking for $ac_word" >&5
+echo "configure:864: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -945,7 +911,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:949: checking for $ac_word" >&5
+echo "configure:915: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -977,7 +943,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:981: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:947: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -988,12 +954,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 992 "configure"
+#line 958 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1019,12 +985,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1023: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:989: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1028: checking whether we are using GNU C" >&5
+echo "configure:994: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1033,7 +999,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1003: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1052,7 +1018,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1056: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1022: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1084,7 +1050,7 @@ else
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1088: checking how to run the C preprocessor" >&5
+echo "configure:1054: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1099,13 +1065,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1103 "configure"
+#line 1069 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1116,13 +1082,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1120 "configure"
+#line 1086 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1133,13 +1099,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 1137 "configure"
+#line 1103 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1109: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -1164,9 +1130,9 @@ fi
 echo "$ac_t""$CPP" 1>&6
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:1168: checking for AIX" >&5
+echo "configure:1134: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 1170 "configure"
+#line 1136 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -1189,17 +1155,17 @@ rm -f conftest*
 
 ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
-echo "configure:1193: checking for minix/config.h" >&5
+echo "configure:1159: checking for minix/config.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1198 "configure"
+#line 1164 "configure"
 #include "confdefs.h"
 #include <minix/config.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1203: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1312,7 +1278,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1316: checking host system type" >&5
+echo "configure:1282: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -1333,7 +1299,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 echo "$ac_t""$host" 1>&6
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1337: checking build system type" >&5
+echo "configure:1303: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1353,7 +1319,7 @@ echo "$ac_t""$build" 1>&6
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1357: checking for $ac_word" >&5
+echo "configure:1323: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1392,7 +1358,7 @@ ac_prog=ld
 if test "$ac_cv_prog_gcc" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1396: checking for ld used by GCC" >&5
+echo "configure:1362: checking for ld used by GCC" >&5
   ac_prog=`($CC -print-prog-name=ld) 2>&5`
   case "$ac_prog" in
     # Accept absolute paths.
@@ -1416,10 +1382,10 @@ echo "configure:1396: checking for ld used by GCC" >&5
   esac
 elif test "$with_gnu_ld" = yes; then
   echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1420: checking for GNU ld" >&5
+echo "configure:1386: checking for GNU ld" >&5
 else
   echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1423: checking for non-GNU ld" >&5
+echo "configure:1389: checking for non-GNU ld" >&5
 fi
 if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1453,9 +1419,8 @@ else
   echo "$ac_t""no" 1>&6
 fi
 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
-
 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1459: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1424: checking if the linker ($LD) is GNU ld" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1471,7 +1436,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
 
 
 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1475: checking for BSD-compatible nm" >&5
+echo "configure:1440: checking for BSD-compatible nm" >&5
 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1506,9 +1471,8 @@ fi
 NM="$ac_cv_path_NM"
 echo "$ac_t""$NM" 1>&6
 
-
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1512: checking whether ln -s works" >&5
+echo "configure:1476: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1529,6 +1493,11 @@ else
 fi
 
 
+case "$target" in
+NONE) lt_target="$host" ;;
+*) lt_target="$target" ;;
+esac
+
 # Check for any special flags to pass to ltconfig.
 libtool_flags="--cache-file=$cache_file"
 test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
@@ -1549,11 +1518,11 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
 
 # Some flags need to be propagated to the compiler or linker for good
 # libtool support.
-case "$host" in
+case "$lt_target" in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 1556 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:1557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  echo '#line 1525 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:1526: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     case "`/usr/bin/file conftest.o`" in
     *32-bit*)
       LD="${LD-ld} -32"
@@ -1574,19 +1543,19 @@ case "$host" in
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
   echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1578: checking whether the C compiler needs -belf" >&5
+echo "configure:1547: checking whether the C compiler needs -belf" >&5
 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1583 "configure"
+#line 1552 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_cc_needs_belf=yes
 else
@@ -1664,7 +1633,7 @@ LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
 LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
 DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
 ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
+$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
 || { echo "configure: error: libtool configure failed" 1>&2; exit 1; }
 
 # Reload cache, that may have been modified by ltconfig
@@ -1689,7 +1658,7 @@ exec 5>>./config.log
 
 
 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1693: checking for POSIXized ISC" >&5
+echo "configure:1662: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -1713,7 +1682,7 @@ fi
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:1717: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:1686: checking for ${CC-cc} option to accept ANSI C" >&5
 if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1729,7 +1698,7 @@ for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__
 do
   CC="$ac_save_CC $ac_arg"
   cat > conftest.$ac_ext <<EOF
-#line 1733 "configure"
+#line 1702 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -1766,7 +1735,7 @@ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
 
 ; return 0; }
 EOF
-if { (eval echo configure:1770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_prog_cc_stdc="$ac_arg"; break
 else
@@ -1792,7 +1761,7 @@ esac
 
 
 echo $ac_n "checking for function prototypes""... $ac_c" 1>&6
-echo "configure:1796: checking for function prototypes" >&5
+echo "configure:1765: checking for function prototypes" >&5
 if test "$am_cv_prog_cc_stdc" != no; then
   echo "$ac_t""yes" 1>&6
   cat >> confdefs.h <<\EOF
@@ -1805,12 +1774,12 @@ else
   U=_ ANSI2KNR=./ansi2knr
   # Ensure some checks needed by ansi2knr itself.
   echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1809: checking for ANSI C header files" >&5
+echo "configure:1778: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1814 "configure"
+#line 1783 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1818,7 +1787,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1822: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1835,7 +1804,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1839 "configure"
+#line 1808 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1853,7 +1822,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1857 "configure"
+#line 1826 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1874,7 +1843,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1878 "configure"
+#line 1847 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1885,7 +1854,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1912,17 +1881,17 @@ fi
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1916: checking for $ac_hdr" >&5
+echo "configure:1885: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1921 "configure"
+#line 1890 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1926: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1951,12 +1920,12 @@ done
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1955: checking for working const" >&5
+echo "configure:1924: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1960 "configure"
+#line 1929 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2005,7 +1974,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:2009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -2026,21 +1995,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:2030: checking for inline" >&5
+echo "configure:1999: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 2037 "configure"
+#line 2006 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:2044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -2071,7 +2040,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2075: checking for $ac_word" >&5
+echo "configure:2044: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2104,7 +2073,7 @@ test -n "$LEX" || LEX=""$missing_dir/missing flex""
 # Extract the first word of "flex", so it can be a program name with args.
 set dummy flex; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2108: checking for $ac_word" >&5
+echo "configure:2077: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2138,7 +2107,7 @@ then
   *) ac_lib=l ;;
   esac
   echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:2142: checking for yywrap in -l$ac_lib" >&5
+echo "configure:2111: checking for yywrap in -l$ac_lib" >&5
 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2146,7 +2115,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$ac_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2150 "configure"
+#line 2119 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2157,7 +2126,7 @@ int main() {
 yywrap()
 ; return 0; }
 EOF
-if { (eval echo configure:2161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2180,7 +2149,7 @@ fi
 fi
 
 echo $ac_n "checking lex output file root""... $ac_c" 1>&6
-echo "configure:2184: checking lex output file root" >&5
+echo "configure:2153: checking lex output file root" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2201,7 +2170,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6
 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
 
 echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6
-echo "configure:2205: checking whether yytext is a pointer" >&5
+echo "configure:2174: checking whether yytext is a pointer" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2213,14 +2182,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
 ac_save_LIBS="$LIBS"
 LIBS="$LIBS $LEXLIB"
 cat > conftest.$ac_ext <<EOF
-#line 2217 "configure"
+#line 2186 "configure"
 #include "confdefs.h"
 `cat $LEX_OUTPUT_ROOT.c`
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_prog_lex_yytext_pointer=yes
 else
@@ -2244,12 +2213,12 @@ fi
 test "$LEX" = flex || echo "configure: warning: flex not found, so do not modify .l files" 1>&2
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2248: checking for ANSI C header files" >&5
+echo "configure:2217: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2253 "configure"
+#line 2222 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -2257,7 +2226,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2274,7 +2243,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 2278 "configure"
+#line 2247 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -2292,7 +2261,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 2296 "configure"
+#line 2265 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -2313,7 +2282,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 2317 "configure"
+#line 2286 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2324,7 +2293,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:2328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -2351,17 +2320,17 @@ for ac_hdr in limits.h string.h stdbool.h unistd.h utime.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2355: checking for $ac_hdr" >&5
+echo "configure:2324: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2360 "configure"
+#line 2329 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2365: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2388,12 +2357,12 @@ fi
 done
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2392: checking return type of signal handlers" >&5
+echo "configure:2361: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2397 "configure"
+#line 2366 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2410,7 +2379,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:2414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2383: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -2432,12 +2401,12 @@ EOF
 for ac_func in dup2 rename strerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2436: checking for $ac_func" >&5
+echo "configure:2405: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2441 "configure"
+#line 2410 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2460,7 +2429,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2484,163 +2453,200 @@ else
 fi
 done
 
-echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2489: checking for vprintf" >&5
-if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
+for ac_func in strtol strtoul
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2460: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2494 "configure"
+#line 2465 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char vprintf(); below.  */
+    which can conflict with char $ac_func(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
-char vprintf();
+char $ac_func();
 
 int main() {
 
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_vprintf) || defined (__stub___vprintf)
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-vprintf();
+$ac_func();
 #endif
 
 ; return 0; }
 EOF
-if { (eval echo configure:2517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_vprintf=yes"
+  eval "ac_cv_func_$ac_func=yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func_vprintf=no"
+  eval "ac_cv_func_$ac_func=no"
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_VPRINTF 1
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
 EOF
-
 else
   echo "$ac_t""no" 1>&6
+LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"
 fi
+done
 
-if test "$ac_cv_func_vprintf" != yes; then
-echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2541: checking for _doprnt" >&5
-if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
+echo "configure:2517: checking for working alloca.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2546 "configure"
+#line 2522 "configure"
 #include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char _doprnt();
-
+#include <alloca.h>
 int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-_doprnt();
-#endif
-
+char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:2569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func__doprnt=yes"
+  ac_cv_header_alloca_h=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func__doprnt=no"
+  ac_cv_header_alloca_h=no
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
+echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
+if test $ac_cv_header_alloca_h = yes; then
   cat >> confdefs.h <<\EOF
-#define HAVE_DOPRNT 1
+#define HAVE_ALLOCA_H 1
 EOF
 
-else
-  echo "$ac_t""no" 1>&6
-fi
-
 fi
 
-
-echo $ac_n "checking for MSDOS, Win95 or WinNT""... $ac_c" 1>&6
-echo "configure:2595: checking for MSDOS, Win95 or WinNT" >&5
-if eval "test \"`echo '$''{'fp_cv_os_microsoft'+set}'`\" = set"; then
+echo $ac_n "checking for alloca""... $ac_c" 1>&6
+echo "configure:2550: checking for alloca" >&5
+if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test -n "$COMSPEC"; then
-  # MSDOS or Win95
-   fp_cv_os_microsoft=yes
-elif test -n "$ComSpec"; then
-  # WinNT
-  fp_cv_os_microsoft=yes
+  cat > conftest.$ac_ext <<EOF
+#line 2555 "configure"
+#include "confdefs.h"
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  if HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int main() {
+char *p = (char *) alloca(1);
+; return 0; }
+EOF
+if { (eval echo configure:2583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_func_alloca_works=yes
 else
-  fp_cv_os_microsoft=no
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_func_alloca_works=no
 fi
-
+rm -f conftest*
 fi
 
-echo "$ac_t""$fp_cv_os_microsoft" 1>&6
-echo $ac_n "checking the default charset""... $ac_c" 1>&6
-echo "configure:2613: checking the default charset" >&5
-if test -n "${DEFAULT_CHARSET+set}"; then
-  echo "$ac_t""$DEFAULT_CHARSET" 1>&6
-  cat >> confdefs.h <<EOF
-#define DEFAULT_CHARSET "$DEFAULT_CHARSET"
+echo "$ac_t""$ac_cv_func_alloca_works" 1>&6
+if test $ac_cv_func_alloca_works = yes; then
+  cat >> confdefs.h <<\EOF
+#define HAVE_ALLOCA 1
 EOF
 
-elif test "$fp_cv_os_microsoft" = no; then
-  echo "$ac_t""Latin-1" 1>&6
+fi
+
+if test $ac_cv_func_alloca_works = no; then
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+  # that cause trouble.  Some versions do not even contain alloca or
+  # contain a buggy version.  If you still want to use their alloca,
+  # use ar to extract alloca.o from them instead of compiling alloca.c.
+  ALLOCA=alloca.${ac_objext}
   cat >> confdefs.h <<\EOF
-#define DEFAULT_CHARSET "Latin-1"
+#define C_ALLOCA 1
 EOF
 
+
+echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
+echo "configure:2615: checking whether alloca needs Cray hooks" >&5
+if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
 else
-  echo "$ac_t""IBM-PC" 1>&6
-  cat >> confdefs.h <<\EOF
-#define DEFAULT_CHARSET "IBM-PC"
-EOF
+  cat > conftest.$ac_ext <<EOF
+#line 2620 "configure"
+#include "confdefs.h"
+#if defined(CRAY) && ! defined(CRAY2)
+webecray
+#else
+wenotbecray
+#endif
 
+EOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  egrep "webecray" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_os_cray=yes
+else
+  rm -rf conftest*
+  ac_cv_os_cray=no
 fi
+rm -f conftest*
 
+fi
 
- if test x = y; then
-            for ac_func in DONE_WORKING_MALLOC_CHECK
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2639: checking for $ac_func" >&5
+echo "$ac_t""$ac_cv_os_cray" 1>&6
+if test $ac_cv_os_cray = yes; then
+for ac_func in _getb67 GETB67 getb67; do
+  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2645: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2644 "configure"
+#line 2650 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2663,7 +2669,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 
 if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
   cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
+#define CRAY_STACKSEG_END $ac_func
 EOF
+
+  break
 else
   echo "$ac_t""no" 1>&6
 fi
-done
-
- fi
-   ac_kludge=HAVE_DONE_WORKING_MALLOC_CHECK
- cat >> confdefs.h <<EOF
-#define $ac_kludge 1
-EOF
 
+done
+fi
 
- echo $ac_n "checking for working malloc""... $ac_c" 1>&6
-echo "configure:2699: checking for working malloc" >&5
-if eval "test \"`echo '$''{'jm_cv_func_working_malloc'+set}'`\" = set"; then
+echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
+echo "configure:2700: checking stack direction for C alloca" >&5
+if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test "$cross_compiling" = yes; then
-        jm_cv_func_working_malloc=no
+  ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 2707 "configure"
+#line 2708 "configure"
 #include "confdefs.h"
-
-    char *malloc ();
-    int
-    main ()
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
     {
-      exit (malloc (0) ? 0 : 1);
+      addr = &dummy;
+      return find_stack_direction ();
     }
-         
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+main ()
+{
+  exit (find_stack_direction() < 0);
+}
 EOF
-if { (eval echo configure:2718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
-  jm_cv_func_working_malloc=yes
+  ac_cv_c_stack_direction=1
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -fr conftest*
-  jm_cv_func_working_malloc=no
-fi
-rm -fr conftest*
-fi
-
-  
-fi
-
-echo "$ac_t""$jm_cv_func_working_malloc" 1>&6
-  if test $jm_cv_func_working_malloc = no; then
-    LIBOBJS="$LIBOBJS malloc.o"
-    cat >> confdefs.h <<EOF
-#define malloc rpl_malloc
-EOF
-
-  fi
-
-
- if test x = y; then
-            for ac_func in DONE_WORKING_REALLOC_CHECK
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2747: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2752 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
- fi
-   ac_kludge=HAVE_DONE_WORKING_REALLOC_CHECK
- cat >> confdefs.h <<EOF
-#define $ac_kludge 1
-EOF
-
-
- echo $ac_n "checking for working realloc""... $ac_c" 1>&6
-echo "configure:2807: checking for working realloc" >&5
-if eval "test \"`echo '$''{'jm_cv_func_working_realloc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-        jm_cv_func_working_realloc=no
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2815 "configure"
-#include "confdefs.h"
-
-    char *realloc ();
-    int
-    main ()
-    {
-      exit (realloc (0, 0) ? 0 : 1);
-    }
-         
-EOF
-if { (eval echo configure:2826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  jm_cv_func_working_realloc=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  jm_cv_func_working_realloc=no
-fi
-rm -fr conftest*
-fi
-
-  
-fi
-
-echo "$ac_t""$jm_cv_func_working_realloc" 1>&6
-  if test $jm_cv_func_working_realloc = no; then
-    LIBOBJS="$LIBOBJS realloc.o"
-    cat >> confdefs.h <<EOF
-#define realloc rpl_realloc
-EOF
-
-  fi
-
-echo $ac_n "checking if malloc debugging is wanted""... $ac_c" 1>&6
-echo "configure:2851: checking if malloc debugging is wanted" >&5
-# Check whether --with-dmalloc or --without-dmalloc was given.
-if test "${with_dmalloc+set}" = set; then
-  withval="$with_dmalloc"
-  if test "$withval" = yes; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define WITH_DMALLOC 1
-EOF
-
-  LIBS="$LIBS -ldmalloc"
-  LDFLAGS="$LDFLAGS -g"
-else
-  echo "$ac_t""no" 1>&6
-fi
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-
-echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:2873: checking for off_t" >&5
-if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2878 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_off_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_off_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_off_t" 1>&6
-if test $ac_cv_type_off_t = no; then
-  cat >> confdefs.h <<\EOF
-#define off_t long
-EOF
-
-fi
-
-echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:2906: checking for size_t" >&5
-if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2911 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_size_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_size_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_size_t" 1>&6
-if test $ac_cv_type_size_t = no; then
-  cat >> confdefs.h <<\EOF
-#define size_t unsigned
-EOF
-
-fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:2941: checking for working alloca.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2946 "configure"
-#include "confdefs.h"
-#include <alloca.h>
-int main() {
-char *p = alloca(2 * sizeof(int));
-; return 0; }
-EOF
-if { (eval echo configure:2953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_header_alloca_h=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_alloca_h=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_alloca_h" 1>&6
-if test $ac_cv_header_alloca_h = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_ALLOCA_H 1
-EOF
-
-fi
-
-echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:2974: checking for alloca" >&5
-if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2979 "configure"
-#include "confdefs.h"
-
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  if HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
-int main() {
-char *p = (char *) alloca(1);
-; return 0; }
-EOF
-if { (eval echo configure:3007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  ac_cv_func_alloca_works=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_func_alloca_works=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_func_alloca_works" 1>&6
-if test $ac_cv_func_alloca_works = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_ALLOCA 1
-EOF
-
-fi
-
-if test $ac_cv_func_alloca_works = no; then
-  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-  # that cause trouble.  Some versions do not even contain alloca or
-  # contain a buggy version.  If you still want to use their alloca,
-  # use ar to extract alloca.o from them instead of compiling alloca.c.
-  ALLOCA=alloca.${ac_objext}
-  cat >> confdefs.h <<\EOF
-#define C_ALLOCA 1
-EOF
-
-
-echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:3039: checking whether alloca needs Cray hooks" >&5
-if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3044 "configure"
-#include "confdefs.h"
-#if defined(CRAY) && ! defined(CRAY2)
-webecray
-#else
-wenotbecray
-#endif
-
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "webecray" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_os_cray=yes
-else
-  rm -rf conftest*
-  ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_os_cray" 1>&6
-if test $ac_cv_os_cray = yes; then
-for ac_func in _getb67 GETB67 getb67; do
-  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3069: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3074 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<EOF
-#define CRAY_STACKSEG_END $ac_func
-EOF
-
-  break
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-done
-fi
-
-echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:3124: checking stack direction for C alloca" >&5
-if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_c_stack_direction=0
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3132 "configure"
-#include "confdefs.h"
-find_stack_direction ()
-{
-  static char *addr = 0;
-  auto char dummy;
-  if (addr == 0)
-    {
-      addr = &dummy;
-      return find_stack_direction ();
-    }
-  else
-    return (&dummy > addr) ? 1 : -1;
-}
-main ()
-{
-  exit (find_stack_direction() < 0);
-}
-EOF
-if { (eval echo configure:3151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  ac_cv_c_stack_direction=1
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_c_stack_direction=-1
+  ac_cv_c_stack_direction=-1
 fi
 rm -fr conftest*
 fi
@@ -3168,324 +2744,123 @@ EOF
 
 fi
 
-for ac_hdr in unistd.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3176: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3181 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_func in getpagesize
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3215: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+echo $ac_n "checking for vprintf""... $ac_c" 1>&6
+echo "configure:2749: checking for vprintf" >&5
+if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3220 "configure"
+#line 2754 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
+    which can conflict with char vprintf(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
-char $ac_func();
+char vprintf();
 
 int main() {
 
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#if defined (__stub_vprintf) || defined (__stub___vprintf)
 choke me
 #else
-$ac_func();
+vprintf();
 #endif
 
 ; return 0; }
 EOF
-if { (eval echo configure:3243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
+  eval "ac_cv_func_vprintf=yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
+  eval "ac_cv_func_vprintf=no"
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
+if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
+  cat >> confdefs.h <<\EOF
+#define HAVE_VPRINTF 1
 EOF
+
 else
   echo "$ac_t""no" 1>&6
 fi
-done
 
-echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:3268: checking for working mmap" >&5
-if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
+if test "$ac_cv_func_vprintf" != yes; then
+echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
+echo "configure:2801: checking for _doprnt" >&5
+if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_mmap_fixed_mapped=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 3276 "configure"
+#line 2806 "configure"
 #include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char _doprnt(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char _doprnt();
 
-/* Thanks to Mike Haertel and Jim Avera for this test.
-   Here is a matrix of mmap possibilities:
-       mmap private not fixed
-       mmap private fixed at somewhere currently unmapped
-       mmap private fixed at somewhere already mapped
-       mmap shared not fixed
-       mmap shared fixed at somewhere currently unmapped
-       mmap shared fixed at somewhere already mapped
-   For private mappings, we should verify that changes cannot be read()
-   back from the file, nor mmap's back from the file at a different
-   address.  (There have been systems where private was not correctly
-   implemented like the infamous i386 svr4.0, and systems where the
-   VM page cache was not coherent with the filesystem buffer cache
-   like early versions of FreeBSD and possibly contemporary NetBSD.)
-   For shared mappings, we should conversely verify that changes get
-   propogated back to all the places they're supposed to be.
-
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-
-/* This mess was copied from the GNU getpagesize.h.  */
-#ifndef HAVE_GETPAGESIZE
-# ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-# endif
-
-/* Assume that all systems that can run configure have sys/param.h.  */
-# ifndef HAVE_SYS_PARAM_H
-#  define HAVE_SYS_PARAM_H 1
-# endif
-
-# ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-#  ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#   ifdef EXEC_PAGESIZE
-#    define getpagesize() EXEC_PAGESIZE
-#   else /* no EXEC_PAGESIZE */
-#    ifdef NBPG
-#     define getpagesize() NBPG * CLSIZE
-#     ifndef CLSIZE
-#      define CLSIZE 1
-#     endif /* no CLSIZE */
-#    else /* no NBPG */
-#     ifdef NBPC
-#      define getpagesize() NBPC
-#     else /* no NBPC */
-#      ifdef PAGESIZE
-#       define getpagesize() PAGESIZE
-#      endif /* PAGESIZE */
-#     endif /* no NBPC */
-#    endif /* no NBPG */
-#   endif /* no EXEC_PAGESIZE */
-#  else /* no HAVE_SYS_PARAM_H */
-#   define getpagesize() 8192  /* punt totally */
-#  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
+int main() {
 
-#ifdef __cplusplus
-extern "C" { void *malloc(unsigned); }
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
 #else
-char *malloc();
+_doprnt();
 #endif
 
-int
-main()
-{
-       char *data, *data2, *data3;
-       int i, pagesize;
-       int fd;
-
-       pagesize = getpagesize();
-
-       /*
-        * First, make a file with some known garbage in it.
-        */
-       data = malloc(pagesize);
-       if (!data)
-               exit(1);
-       for (i = 0; i < pagesize; ++i)
-               *(data + i) = rand();
-       umask(0);
-       fd = creat("conftestmmap", 0600);
-       if (fd < 0)
-               exit(1);
-       if (write(fd, data, pagesize) != pagesize)
-               exit(1);
-       close(fd);
-
-       /*
-        * Next, try to mmap the file at a fixed address which
-        * already has something else allocated at it.  If we can,
-        * also make sure that we see the same garbage.
-        */
-       fd = open("conftestmmap", O_RDWR);
-       if (fd < 0)
-               exit(1);
-       data2 = malloc(2 * pagesize);
-       if (!data2)
-               exit(1);
-       data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
-       if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE,
-           MAP_PRIVATE | MAP_FIXED, fd, 0L))
-               exit(1);
-       for (i = 0; i < pagesize; ++i)
-               if (*(data + i) != *(data2 + i))
-                       exit(1);
-
-       /*
-        * Finally, make sure that changes to the mapped area
-        * do not percolate back to the file as seen by read().
-        * (This is a bug on some variants of i386 svr4.0.)
-        */
-       for (i = 0; i < pagesize; ++i)
-               *(data2 + i) = *(data2 + i) + 1;
-       data3 = malloc(pagesize);
-       if (!data3)
-               exit(1);
-       if (read(fd, data3, pagesize) != pagesize)
-               exit(1);
-       for (i = 0; i < pagesize; ++i)
-               if (*(data + i) != *(data3 + i))
-                       exit(1);
-       close(fd);
-       unlink("conftestmmap");
-       exit(0);
-}
-
-EOF
-if { (eval echo configure:3416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  ac_cv_func_mmap_fixed_mapped=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-  cat >> confdefs.h <<\EOF
-#define HAVE_MMAP 1
-EOF
-
-fi
-
-                              
-   for ac_hdr in argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h sys/param.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3444: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3449 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
+; return 0; }
 EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+if { (eval echo configure:2829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
+  eval "ac_cv_func__doprnt=yes"
 else
-  echo "$ac_err" >&5
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
+  eval "ac_cv_func__doprnt=no"
 fi
 rm -f conftest*
 fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+
+if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+  cat >> confdefs.h <<\EOF
+#define HAVE_DOPRNT 1
 EOF
+
 else
   echo "$ac_t""no" 1>&6
 fi
-done
 
-   for ac_func in getcwd munmap putenv setenv setlocale strchr strcasecmp \
-strdup __argz_count __argz_stringify __argz_next
+fi
+
+
+
+ if test x = y; then
+            for ac_func in DONE_WORKING_MALLOC_CHECK
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3484: checking for $ac_func" >&5
+echo "configure:2859: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3489 "configure"
+#line 2864 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3508,7 +2883,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3532,17 +2907,68 @@ else
 fi
 done
 
+ fi
+   ac_kludge=HAVE_DONE_WORKING_MALLOC_CHECK
+ cat >> confdefs.h <<EOF
+#define $ac_kludge 1
+EOF
+
+
+ echo $ac_n "checking for working malloc""... $ac_c" 1>&6
+echo "configure:2919: checking for working malloc" >&5
+if eval "test \"`echo '$''{'jm_cv_func_working_malloc'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+        jm_cv_func_working_malloc=no
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2927 "configure"
+#include "confdefs.h"
+
+    char *malloc ();
+    int
+    main ()
+    {
+      exit (malloc (0) ? 0 : 1);
+    }
+         
+EOF
+if { (eval echo configure:2938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  jm_cv_func_working_malloc=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  jm_cv_func_working_malloc=no
+fi
+rm -fr conftest*
+fi
+
+  
+fi
+
+echo "$ac_t""$jm_cv_func_working_malloc" 1>&6
+  if test $jm_cv_func_working_malloc = no; then
+    LIBOBJS="$LIBOBJS malloc.o"
+    cat >> confdefs.h <<EOF
+#define malloc rpl_malloc
+EOF
+
+  fi
+
 
  if test "${ac_cv_func_stpcpy+set}" != "set"; then
-     for ac_func in stpcpy
if test x = y; then
+            for ac_func in DONE_WORKING_REALLOC_CHECK
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3541: checking for $ac_func" >&5
+echo "configure:2967: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3546 "configure"
+#line 2972 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3565,7 +2991,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3569: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3589,184 +3015,214 @@ else
 fi
 done
 
  fi
-   if test "${ac_cv_func_stpcpy}" = "yes"; then
    cat >> confdefs.h <<\EOF
-#define HAVE_STPCPY 1
+ fi
+   ac_kludge=HAVE_DONE_WORKING_REALLOC_CHECK
cat >> confdefs.h <<EOF
+#define $ac_kludge 1
 EOF
 
-   fi
 
-   if test $ac_cv_header_locale_h = yes; then
-    echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3603: checking for LC_MESSAGES" >&5
-if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
+ echo $ac_n "checking for working realloc""... $ac_c" 1>&6
+echo "configure:3027: checking for working realloc" >&5
+if eval "test \"`echo '$''{'jm_cv_func_working_realloc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+        jm_cv_func_working_realloc=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 3608 "configure"
+#line 3035 "configure"
 #include "confdefs.h"
-#include <locale.h>
-int main() {
-return LC_MESSAGES
-; return 0; }
+
+    char *realloc ();
+    int
+    main ()
+    {
+      exit (realloc (0, 0) ? 0 : 1);
+    }
+         
 EOF
-if { (eval echo configure:3615: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  am_cv_val_LC_MESSAGES=yes
+if { (eval echo configure:3046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+  jm_cv_func_working_realloc=yes
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  am_cv_val_LC_MESSAGES=no
+  rm -fr conftest*
+  jm_cv_func_working_realloc=no
 fi
-rm -f conftest*
+rm -fr conftest*
 fi
 
-echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6
-    if test $am_cv_val_LC_MESSAGES = yes; then
-      cat >> confdefs.h <<\EOF
-#define HAVE_LC_MESSAGES 1
+  
+fi
+
+echo "$ac_t""$jm_cv_func_working_realloc" 1>&6
+  if test $jm_cv_func_working_realloc = no; then
+    LIBOBJS="$LIBOBJS realloc.o"
+    cat >> confdefs.h <<EOF
+#define realloc rpl_realloc
+EOF
+
+  fi
+
+
+
+echo $ac_n "checking for MSDOS, Win95 or WinNT""... $ac_c" 1>&6
+echo "configure:3073: checking for MSDOS, Win95 or WinNT" >&5
+if eval "test \"`echo '$''{'fp_cv_os_microsoft'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test -n "$COMSPEC"; then
+  # MSDOS or Win95
+   fp_cv_os_microsoft=yes
+elif test -n "$ComSpec"; then
+  # WinNT
+  fp_cv_os_microsoft=yes
+else
+  fp_cv_os_microsoft=no
+fi
+
+fi
+
+echo "$ac_t""$fp_cv_os_microsoft" 1>&6
+echo $ac_n "checking the default charset""... $ac_c" 1>&6
+echo "configure:3091: checking the default charset" >&5
+if test -n "${DEFAULT_CHARSET+set}"; then
+  echo "$ac_t""$DEFAULT_CHARSET" 1>&6
+  cat >> confdefs.h <<EOF
+#define DEFAULT_CHARSET "$DEFAULT_CHARSET"
+EOF
+
+elif test "$fp_cv_os_microsoft" = no; then
+  echo "$ac_t""Latin-1" 1>&6
+  cat >> confdefs.h <<\EOF
+#define DEFAULT_CHARSET "Latin-1"
+EOF
+
+else
+  echo "$ac_t""IBM-PC" 1>&6
+  cat >> confdefs.h <<\EOF
+#define DEFAULT_CHARSET "IBM-PC"
+EOF
+
+fi
+
+echo $ac_n "checking if malloc debugging is wanted""... $ac_c" 1>&6
+echo "configure:3113: checking if malloc debugging is wanted" >&5
+# Check whether --with-dmalloc or --without-dmalloc was given.
+if test "${with_dmalloc+set}" = set; then
+  withval="$with_dmalloc"
+  if test "$withval" = yes; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define WITH_DMALLOC 1
 EOF
 
-    fi
-  fi
-   echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3636: checking whether NLS is requested" >&5
-        # Check whether --enable-nls or --disable-nls was given.
-if test "${enable_nls+set}" = set; then
-  enableval="$enable_nls"
-  USE_NLS=$enableval
+  LIBS="$LIBS -ldmalloc"
+  LDFLAGS="$LDFLAGS -g"
 else
-  USE_NLS=yes
+  echo "$ac_t""no" 1>&6
+fi
+else
+  echo "$ac_t""no" 1>&6
 fi
 
-    echo "$ac_t""$USE_NLS" 1>&6
-    
 
-    USE_INCLUDED_LIBINTL=no
 
-        if test "$USE_NLS" = "yes"; then
-      cat >> confdefs.h <<\EOF
-#define ENABLE_NLS 1
-EOF
 
-      echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3656: checking whether included gettext is requested" >&5
-      # Check whether --with-included-gettext or --without-included-gettext was given.
-if test "${with_included_gettext+set}" = set; then
-  withval="$with_included_gettext"
-  nls_cv_force_use_gnu_gettext=$withval
+  echo $ac_n "checking whether NLS is wanted""... $ac_c" 1>&6
+echo "configure:3136: checking whether NLS is wanted" >&5
+  # Check whether --enable-nls or --disable-nls was given.
+if test "${enable_nls+set}" = set; then
+  enableval="$enable_nls"
+  enable_nls=$enableval
 else
-  nls_cv_force_use_gnu_gettext=no
+  enable_nls=yes
 fi
 
-      echo "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6
-
-      nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
-      if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-                                       nls_cv_header_intl=
-       nls_cv_header_libgt=
-       CATOBJEXT=NONE
+  echo "$ac_t""$enable_nls" 1>&6
+  use_nls=$enable_nls
+  
 
-       ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3675: checking for libintl.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3680 "configure"
-#include "confdefs.h"
-#include <libintl.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
+if test $use_nls = yes; then
+  USE_NLS_TRUE=
+  USE_NLS_FALSE='#'
 else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
+  USE_NLS_TRUE='#'
+  USE_NLS_FALSE=
 fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:3702: checking for gettext in libc" >&5
-if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3707 "configure"
-#include "confdefs.h"
-#include <libintl.h>
-int main() {
-return (int) gettext ("")
-; return 0; }
+
+  if test $enable_nls = yes; then
+    cat >> confdefs.h <<\EOF
+#define ENABLE_NLS 1
 EOF
-if { (eval echo configure:3714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  gt_cv_func_gettext_libc=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  gt_cv_func_gettext_libc=no
-fi
-rm -f conftest*
+
+
+    # Check whether --with-catgets or --without-catgets was given.
+if test "${with_catgets+set}" = set; then
+  withval="$with_catgets"
+  echo "configure: warning: catgets not supported, --with-catgets ignored" 1>&2
 fi
 
-echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
 
-          if test "$gt_cv_func_gettext_libc" != "yes"; then
-            echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:3730: checking for bindtextdomain in -lintl" >&5
-ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    for ac_func in gettext
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3173: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-lintl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3738 "configure"
+  cat > conftest.$ac_ext <<EOF
+#line 3178 "configure"
 #include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
-char bindtextdomain();
+char $ac_func();
 
 int main() {
-bindtextdomain()
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+$ac_func();
+#endif
+
 ; return 0; }
 EOF
-if { (eval echo configure:3749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+  eval "ac_cv_func_$ac_func=yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  eval "ac_cv_func_$ac_func=no"
 fi
 rm -f conftest*
-LIBS="$ac_save_LIBS"
-
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:3765: checking for gettext in libintl" >&5
-if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
+EOF
 else
-  echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:3770: checking for gettext in -lintl" >&5
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+    echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
+echo "configure:3226: checking for gettext in -lintl" >&5
 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3774,7 +3230,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3778 "configure"
+#line 3234 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3785,7 +3241,7 @@ int main() {
 gettext()
 ; return 0; }
 EOF
-if { (eval echo configure:3789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3800,70 +3256,89 @@ LIBS="$ac_save_LIBS"
 fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  gt_cv_func_gettext_libintl=yes
+  :
 else
   echo "$ac_t""no" 1>&6
-gt_cv_func_gettext_libintl=no
 fi
 
-fi
-
-echo "$ac_t""$gt_cv_func_gettext_libintl" 1>&6
+    if test $ac_cv_lib_intl_gettext$ac_cv_func_gettext != nono; then
+      echo $ac_n "checking whether the included gettext is preferred""... $ac_c" 1>&6
+echo "configure:3267: checking whether the included gettext is preferred" >&5
+      # Check whether --with-included-gettext or --without-included-gettext was given.
+if test "${with_included_gettext+set}" = set; then
+  withval="$with_included_gettext"
+  with_included_gettext=$withval
 else
-  echo "$ac_t""no" 1>&6
+  with_included_gettext=yes
 fi
 
-          fi
-
-          if test "$gt_cv_func_gettext_libc" = "yes" \
-             || test "$gt_cv_func_gettext_libintl" = "yes"; then
-             cat >> confdefs.h <<\EOF
+      echo "$ac_t""$with_included_gettext" 1>&6
+      if test $with_included_gettext$ac_cv_func_gettext = nono; then
+        LIBS="$LIBS -lintl"
+      fi
+    else
+      with_included_gettext=yes
+    fi
+    if test $with_included_gettext = yes; then
+      LIBOBJS="$LIBOBJS gettext.o"
+      cat >> confdefs.h <<\EOF
 #define HAVE_GETTEXT 1
 EOF
 
-             # Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3828: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_DCGETTEXT 1
+EOF
+
+    else
+      for ac_hdr in libintl.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:3298: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  case "$MSGFMT" in
-  /*)
-  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
-       ac_cv_path_MSGFMT="$ac_dir/$ac_word"
-       break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
-  ;;
-esac
+  cat > conftest.$ac_ext <<EOF
+#line 3303 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:3308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
 fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test -n "$MSGFMT"; then
-  echo "$ac_t""$MSGFMT" 1>&6
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
 else
   echo "$ac_t""no" 1>&6
 fi
-             if test "$MSGFMT" != "no"; then
-               for ac_func in dcgettext
+done
+
+      for ac_func in dcgettext gettext
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3862: checking for $ac_func" >&5
+echo "configure:3337: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3867 "configure"
+#line 3342 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -3886,7 +3361,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -3910,649 +3385,194 @@ else
 fi
 done
 
-               # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3917: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$GMSGFMT" in
-  /*)
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
-  ;;
-esac
-fi
-GMSGFMT="$ac_cv_path_GMSGFMT"
-if test -n "$GMSGFMT"; then
-  echo "$ac_t""$GMSGFMT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-               # Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3953: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$XGETTEXT" in
-  /*)
-  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
-       ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
-       break
-      fi
     fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
-  ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test -n "$XGETTEXT"; then
-  echo "$ac_t""$XGETTEXT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-               cat > conftest.$ac_ext <<EOF
-#line 3985 "configure"
-#include "confdefs.h"
-
-int main() {
-extern int _nl_msg_cat_cntr;
-                              return _nl_msg_cat_cntr
-; return 0; }
-EOF
-if { (eval echo configure:3993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  CATOBJEXT=.gmo
-                  DATADIRNAME=share
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CATOBJEXT=.mo
-                  DATADIRNAME=lib
-fi
-rm -f conftest*
-               INSTOBJEXT=.mo
-             fi
-           fi
-       
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-        if test "$CATOBJEXT" = "NONE"; then
-         echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
-echo "configure:4016: checking whether catgets can be used" >&5
-         # Check whether --with-catgets or --without-catgets was given.
-if test "${with_catgets+set}" = set; then
-  withval="$with_catgets"
-  nls_cv_use_catgets=$withval
-else
-  nls_cv_use_catgets=no
-fi
-
-         echo "$ac_t""$nls_cv_use_catgets" 1>&6
 
-         if test "$nls_cv_use_catgets" = "yes"; then
-                   echo $ac_n "checking for main in -li""... $ac_c" 1>&6
-echo "configure:4029: checking for main in -li" >&5
-ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+    for ac_hdr in locale.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:3395: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  ac_save_LIBS="$LIBS"
-LIBS="-li  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4037 "configure"
+  cat > conftest.$ac_ext <<EOF
+#line 3400 "configure"
 #include "confdefs.h"
-
-int main() {
-main()
-; return 0; }
+#include <$ac_hdr>
 EOF
-if { (eval echo configure:4044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:3405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
+  eval "ac_cv_header_$ac_safe=yes"
 else
+  echo "$ac_err" >&5
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
+  eval "ac_cv_header_$ac_safe=no"
 fi
 rm -f conftest*
-LIBS="$ac_save_LIBS"
-
 fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo i | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
   cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
+#define $ac_tr_hdr 1
 EOF
-
-  LIBS="-li $LIBS"
-
 else
   echo "$ac_t""no" 1>&6
 fi
+done
 
-           echo $ac_n "checking for catgets""... $ac_c" 1>&6
-echo "configure:4072: checking for catgets" >&5
-if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
+    for ac_func in getcwd setlocale stpcpy
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:3434: checking for $ac_func" >&5
+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4077 "configure"
+#line 3439 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char catgets(); below.  */
+    which can conflict with char $ac_func(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
-char catgets();
+char $ac_func();
 
 int main() {
 
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
-#if defined (__stub_catgets) || defined (__stub___catgets)
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
 choke me
 #else
-catgets();
+$ac_func();
 #endif
 
 ; return 0; }
 EOF
-if { (eval echo configure:4100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  eval "ac_cv_func_catgets=yes"
+  eval "ac_cv_func_$ac_func=yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  eval "ac_cv_func_catgets=no"
+  eval "ac_cv_func_$ac_func=no"
 fi
 rm -f conftest*
 fi
 
-if eval "test \"`echo '$ac_cv_func_'catgets`\" = yes"; then
+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_CATGETS 1
+    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_func 1
 EOF
-
-              INTLOBJS="\$(CATOBJS)"
-              # Extract the first word of "gencat", so it can be a program name with args.
-set dummy gencat; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4122: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$GENCAT" in
-  /*)
-  ac_cv_path_GENCAT="$GENCAT" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_GENCAT="$GENCAT" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_GENCAT="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_GENCAT" && ac_cv_path_GENCAT="no"
-  ;;
-esac
-fi
-GENCAT="$ac_cv_path_GENCAT"
-if test -n "$GENCAT"; then
-  echo "$ac_t""$GENCAT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-              if test "$GENCAT" != "no"; then
-                # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4158: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$GMSGFMT" in
-  /*)
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="no"
-  ;;
-esac
-fi
-GMSGFMT="$ac_cv_path_GMSGFMT"
-if test -n "$GMSGFMT"; then
-  echo "$ac_t""$GMSGFMT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-                if test "$GMSGFMT" = "no"; then
-                  # Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4195: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$GMSGFMT" in
-  /*)
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
-       ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
-       break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="no"
-  ;;
-esac
-fi
-GMSGFMT="$ac_cv_path_GMSGFMT"
-if test -n "$GMSGFMT"; then
-  echo "$ac_t""$GMSGFMT" 1>&6
 else
   echo "$ac_t""no" 1>&6
 fi
+done
 
-                fi
-                # Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4230: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
+    if test $ac_cv_header_locale_h = yes; then
+    echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
+echo "configure:3488: checking for LC_MESSAGES" >&5
+if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  case "$XGETTEXT" in
-  /*)
-  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
-       ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
-       break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
-  ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test -n "$XGETTEXT"; then
-  echo "$ac_t""$XGETTEXT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-                USE_INCLUDED_LIBINTL=yes
-                CATOBJEXT=.cat
-                INSTOBJEXT=.cat
-                DATADIRNAME=lib
-                INTLDEPS='$(top_builddir)/intl/libintl.a'
-                INTLLIBS=$INTLDEPS
-                LIBS=`echo $LIBS | sed -e 's/-lintl//'`
-                nls_cv_header_intl=intl/libintl.h
-                nls_cv_header_libgt=intl/libgettext.h
-              fi
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-         fi
-        fi
-
-        if test "$CATOBJEXT" = "NONE"; then
-                         nls_cv_use_gnu_gettext=yes
-        fi
-      fi
-
-      if test "$nls_cv_use_gnu_gettext" = "yes"; then
-                INTLOBJS="\$(GETTOBJS)"
-        # Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4288: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
+  cat > conftest.$ac_ext <<EOF
+#line 3493 "configure"
+#include "confdefs.h"
+#include <locale.h>
+int main() {
+return LC_MESSAGES
+; return 0; }
+EOF
+if { (eval echo configure:3500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  am_cv_val_LC_MESSAGES=yes
 else
-  case "$MSGFMT" in
-  /*)
-  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
-       ac_cv_path_MSGFMT="$ac_dir/$ac_word"
-       break
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="msgfmt"
-  ;;
-esac
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  am_cv_val_LC_MESSAGES=no
 fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test -n "$MSGFMT"; then
-  echo "$ac_t""$MSGFMT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
+rm -f conftest*
 fi
 
-        # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4322: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$GMSGFMT" in
-  /*)
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
-  ;;
-  ?:/*)                         
-  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do 
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_GMSGFMT="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
-  ;;
-esac
-fi
-GMSGFMT="$ac_cv_path_GMSGFMT"
-if test -n "$GMSGFMT"; then
-  echo "$ac_t""$GMSGFMT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
+echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      cat >> confdefs.h <<\EOF
+#define HAVE_LC_MESSAGES 1
+EOF
 
-        # Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4358: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$XGETTEXT" in
-  /*)
-  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
-       ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
-       break
-      fi
     fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
-  ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test -n "$XGETTEXT"; then
-  echo "$ac_t""$XGETTEXT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-        
-       USE_INCLUDED_LIBINTL=yes
-        CATOBJEXT=.gmo
-        INSTOBJEXT=.mo
-        DATADIRNAME=share
-       INTLDEPS='$(top_builddir)/intl/libintl.a'
-       INTLLIBS=$INTLDEPS
-       LIBS=`echo $LIBS | sed -e 's/-lintl//'`
-        nls_cv_header_intl=intl/libintl.h
-        nls_cv_header_libgt=intl/libgettext.h
-      fi
-
-            if test "$XGETTEXT" != ":"; then
-                       if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
-         : ;
-       else
-         echo "$ac_t""found xgettext program is not GNU xgettext; ignore it" 1>&6
-         XGETTEXT=":"
-       fi
-      fi
+  fi
 
-      # We need to process the po/ directory.
-      POSUB=po
+    if test -z "$ALL_LINGUAS"; then
+      echo "configure: warning: This package does not install translations yet." 1>&2
     else
-      DATADIRNAME=share
-      nls_cv_header_intl=intl/libintl.h
-      nls_cv_header_libgt=intl/libgettext.h
+      ac_items="$ALL_LINGUAS"
+      for ac_item in $ac_items; do
+       ALL_POFILES="$ALL_POFILES $ac_item.po"
+       ALL_MOFILES="$ALL_MOFILES $ac_item.mo"
+      done
     fi
     
     
+    
 
-
-    # If this is used in GNU gettext we have to set USE_NLS to `yes'
-    # because some of the sources are only built for this goal.
-    if test "$PACKAGE" = gettext; then
-      USE_NLS=yes
-      USE_INCLUDED_LIBINTL=yes
+    echo $ac_n "checking which translations to install""... $ac_c" 1>&6
+echo "configure:3535: checking which translations to install" >&5
+    if test -z "$LINGUAS"; then
+      ac_print="$ALL_LINGUAS"
+      MOFILES="$ALL_MOFILES"
+    else
+      ac_items="$LINGUAS"
+      for ac_item in $ac_items; do
+       case "$ALL_LINGUAS" in
+         *$ac_item*)
+           ac_print="$ac_print $ac_item"
+           MOFILES="$MOFILES $ac_item.mo"
+           ;;
+       esac
+      done
     fi
-
-                for lang in $ALL_LINGUAS; do
-      GMOFILES="$GMOFILES $lang.gmo"
-      POFILES="$POFILES $lang.po"
-    done
-
-        
-    
-    
-    
-    
-    
-    
     
-    
-    
-    
-  
-
-   if test "x$CATOBJEXT" != "x"; then
-     if test "x$ALL_LINGUAS" = "x"; then
-       LINGUAS=
-     else
-       echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:4451: checking for catalogs to be installed" >&5
-       NEW_LINGUAS=
-       for lang in ${LINGUAS=$ALL_LINGUAS}; do
-         case "$ALL_LINGUAS" in
-          *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
-         esac
-       done
-       LINGUAS=$NEW_LINGUAS
-       echo "$ac_t""$LINGUAS" 1>&6
-     fi
-
-          if test -n "$LINGUAS"; then
-       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
-     fi
-   fi
-
-            if test $ac_cv_header_locale_h = yes; then
-     INCLUDE_LOCALE_H="#include <locale.h>"
-   else
-     INCLUDE_LOCALE_H="\
-/* The system does not provide the header <locale.h>.  Take care yourself.  */"
-   fi
-   
+    if test -z "$ac_print"; then
+      echo "$ac_t""none" 1>&6
+    else
+      echo "$ac_t""$ac_print" 1>&6
+    fi
 
-            test -d intl || mkdir intl
-   if test "$CATOBJEXT" = ".cat"; then
-     ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:4479: checking for linux/version.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 4484 "configure"
-#include "confdefs.h"
-#include <linux/version.h>
+    if test "x$prefix" = xNONE; then
+      cat >> confdefs.h <<EOF
+#define LOCALEDIR "$ac_default_prefix/share/locale"
 EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4489: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  msgformat=linux
-else
-  echo "$ac_t""no" 1>&6
-msgformat=xopen
-fi
 
+    else
+      cat >> confdefs.h <<EOF
+#define LOCALEDIR "$prefix/share/locale"
+EOF
 
-               sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
-   fi
-      sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
-     $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
-
-            if test "$PACKAGE" = "gettext"; then
-     GT_NO="#NO#"
-     GT_YES=
-   else
-     GT_NO=
-     GT_YES="#YES#"
-   fi
-   
-   
+    fi
+  fi
 
-            MKINSTALLDIRS=
-   if test -n "$ac_aux_dir"; then
-     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
-   fi
-   if test -z "$MKINSTALLDIRS"; then
-     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
-   fi
-   
-
-      l=
-   
-
-         test -d po || mkdir po
-   if test "x$srcdir" != "x."; then
-     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
-       posrcprefix="$srcdir/"
-     else
-       posrcprefix="../$srcdir/"
-     fi
-   else
-     posrcprefix="../"
-   fi
-   rm -f po/POTFILES
-   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,        $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
-       < $srcdir/po/POTFILES.in > po/POTFILES
-  
+# This is necessary so that .o files in LIBOBJS are also built via
+# the ANSI2KNR-filtering rules.
+LIBOBJS=`echo $LIBOBJS | sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
 
-LTALLOCA=`echo "$ALLOCA" | sed 's/\.o/.lo/g'`
+LTALLOCA=`echo $ALLOCA | sed 's/\.o/.lo/g'`
 
-LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'`
+LTLIBOBJS=`echo $LIBOBJS | sed 's/\.o /.lo /g;s/\.o$/.lo/'`
 
 
 trap '' 1 2 15
@@ -4656,8 +3676,8 @@ done
 ac_given_srcdir=$srcdir
 ac_given_INSTALL="$INSTALL"
 
-trap 'rm -fr `echo "Makefile contrib/Makefile doc/Makefile intl/Makefile lib/Makefile
-m4/Makefile po/Makefile.in src/Makefile tests/Makefile tests/atconfig config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "Makefile contrib/Makefile doc/Makefile i18n/Makefile lib/Makefile
+m4/Makefile src/Makefile tests/Makefile tests/atconfig config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
@@ -4703,7 +3723,6 @@ s%@SET_MAKE@%$SET_MAKE%g
 s%@AT_TESTPATH@%$AT_TESTPATH%g
 s%@ECHO_N@%$ECHO_N%g
 s%@ECHO_C@%$ECHO_C%g
-s%@AWK@%$AWK%g
 s%@CC@%$CC%g
 s%@CPP@%$CPP%g
 s%@host@%$host%g
@@ -4717,8 +3736,6 @@ s%@build_cpu@%$build_cpu%g
 s%@build_vendor@%$build_vendor%g
 s%@build_os@%$build_os%g
 s%@RANLIB@%$RANLIB%g
-s%@LD@%$LD%g
-s%@NM@%$NM%g
 s%@LN_S@%$LN_S%g
 s%@LIBTOOL@%$LIBTOOL%g
 s%@U@%$U%g
@@ -4726,28 +3743,14 @@ s%@ANSI2KNR@%$ANSI2KNR%g
 s%@LEX@%$LEX%g
 s%@LEXLIB@%$LEXLIB%g
 s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g
+s%@LIBOBJS@%$LIBOBJS%g
 s%@ALLOCA@%$ALLOCA%g
-s%@USE_NLS@%$USE_NLS%g
-s%@MSGFMT@%$MSGFMT%g
-s%@GMSGFMT@%$GMSGFMT%g
-s%@XGETTEXT@%$XGETTEXT%g
-s%@GENCAT@%$GENCAT%g
-s%@USE_INCLUDED_LIBINTL@%$USE_INCLUDED_LIBINTL%g
-s%@CATALOGS@%$CATALOGS%g
-s%@CATOBJEXT@%$CATOBJEXT%g
-s%@DATADIRNAME@%$DATADIRNAME%g
-s%@GMOFILES@%$GMOFILES%g
-s%@INSTOBJEXT@%$INSTOBJEXT%g
-s%@INTLDEPS@%$INTLDEPS%g
-s%@INTLLIBS@%$INTLLIBS%g
-s%@INTLOBJS@%$INTLOBJS%g
-s%@POFILES@%$POFILES%g
-s%@POSUB@%$POSUB%g
-s%@INCLUDE_LOCALE_H@%$INCLUDE_LOCALE_H%g
-s%@GT_NO@%$GT_NO%g
-s%@GT_YES@%$GT_YES%g
-s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g
-s%@l@%$l%g
+s%@USE_NLS_TRUE@%$USE_NLS_TRUE%g
+s%@USE_NLS_FALSE@%$USE_NLS_FALSE%g
+s%@ALL_LINGUAS@%$ALL_LINGUAS%g
+s%@ALL_POFILES@%$ALL_POFILES%g
+s%@ALL_MOFILES@%$ALL_MOFILES%g
+s%@MOFILES@%$MOFILES%g
 s%@LTALLOCA@%$LTALLOCA%g
 s%@LTLIBOBJS@%$LTLIBOBJS%g
 
@@ -4791,8 +3794,8 @@ EOF
 
 cat >> $CONFIG_STATUS <<EOF
 
-CONFIG_FILES=\${CONFIG_FILES-"Makefile contrib/Makefile doc/Makefile intl/Makefile lib/Makefile
-m4/Makefile po/Makefile.in src/Makefile tests/Makefile tests/atconfig"}
+CONFIG_FILES=\${CONFIG_FILES-"Makefile contrib/Makefile doc/Makefile i18n/Makefile lib/Makefile
+m4/Makefile src/Makefile tests/Makefile tests/atconfig"}
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
@@ -4958,62 +3961,13 @@ cat >> $CONFIG_STATUS <<\EOF
   fi
 fi; done
 
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-ac_sources="$nls_cv_header_libgt"
-ac_dests="$nls_cv_header_intl"
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-srcdir=$ac_given_srcdir
-while test -n "$ac_sources"; do
-  set $ac_dests; ac_dest=$1; shift; ac_dests=$*
-  set $ac_sources; ac_source=$1; shift; ac_sources=$*
-
-  echo "linking $srcdir/$ac_source to $ac_dest"
-
-  if test ! -r $srcdir/$ac_source; then
-    { echo "configure: error: $srcdir/$ac_source: File not found" 1>&2; exit 1; }
-  fi
-  rm -f $ac_dest
-
-  # Make relative symlinks.
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dest_dir=`echo $ac_dest|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then
-    # The dest file is in a subdirectory.
-    test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir"
-    ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dest_dir_suffix.
-    ac_dots=`echo $ac_dest_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dest_dir_suffix= ac_dots=
-  fi
-
-  case "$srcdir" in
-  [/$]*) ac_rel_source="$srcdir/$ac_source" ;;
-  *) ac_rel_source="$ac_dots$srcdir/$ac_source" ;;
-  esac
-
-  # Make a symlink if possible; otherwise try a hard link.
-  if ln -s $ac_rel_source $ac_dest 2>/dev/null ||
-    ln $srcdir/$ac_source $ac_dest; then :
-  else
-    { echo "configure: error: can not link $ac_dest to $srcdir/$ac_source" 1>&2; exit 1; }
-  fi
-done
 EOF
 cat >> $CONFIG_STATUS <<EOF
 
 
-
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-case "$CONFIG_FILES" in *po/Makefile.in*)
-        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
-      esac
 
 exit 0
 EOF
index 46699c268a94ded598a42f9a23c610a4d5089c87..aaf1ca3e04587894b63f6b0c3ce71983638438ed 100644 (file)
@@ -5,11 +5,10 @@
 AC_INIT(src/recode.c)
 AC_PREREQ(2.12)
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(recode, 3.5)
+AM_INIT_AUTOMAKE(recode, 3.5a)
 AT_CONFIG(../src)
-ALL_LINGUAS="da de es fr nl pl pt sl sv"
+ALL_LINGUAS="da de el es fr it nl pl pt sl sv"
 
-AC_PROG_AWK
 AC_PROG_CC
 AC_AIX
 AC_MINIX
@@ -27,8 +26,14 @@ AC_CHECK_HEADERS(limits.h string.h stdbool.h unistd.h utime.h)
 AC_TYPE_SIGNAL
 
 AC_CHECK_FUNCS(dup2 rename strerror)
+AC_REPLACE_FUNCS(strtol strtoul)
+AC_FUNC_ALLOCA
 AC_FUNC_VPRINTF
 
+jm_FUNC_MALLOC
+jm_FUNC_REALLOC
+AC_SUBST(LIBOBJS)
+
 fp_OS_MICROSOFT
 AC_MSG_CHECKING(the default charset)
 if test -n "${DEFAULT_CHARSET+set}"; then
@@ -42,16 +47,17 @@ else
   AC_DEFINE(DEFAULT_CHARSET, "IBM-PC")
 fi
 
-jm_FUNC_MALLOC
-jm_FUNC_REALLOC
 AM_WITH_DMALLOC
+fp_WITH_GETTEXT
 
-AM_GNU_GETTEXT
+# This is necessary so that .o files in LIBOBJS are also built via
+# the ANSI2KNR-filtering rules.
+LIBOBJS=`echo $LIBOBJS | sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
 
-LTALLOCA=`echo "$ALLOCA" | sed 's/\.o/.lo/g'`
+LTALLOCA=`echo $ALLOCA | sed 's/\.o/.lo/g'`
 AC_SUBST(LTALLOCA)
-LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'`
+LTLIBOBJS=`echo $LIBOBJS | sed 's/\.o /.lo /g;s/\.o$/.lo/'`
 AC_SUBST(LTLIBOBJS)
 
-AC_OUTPUT(Makefile contrib/Makefile doc/Makefile intl/Makefile lib/Makefile
-m4/Makefile po/Makefile.in src/Makefile tests/Makefile tests/atconfig)
+AC_OUTPUT(Makefile contrib/Makefile doc/Makefile i18n/Makefile lib/Makefile
+m4/Makefile src/Makefile tests/Makefile tests/atconfig)
index 4ec81dfa0393ddb5fc7fe9314016374c01691ff1..984cd3050c2c19b9c5c31c51708c3f783abe5ad2 100644 (file)
@@ -77,9 +77,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
-AWK = @AWK@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -98,16 +100,16 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
 LEX = @LEX@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
index 0e31507b7753dfe165e6b7685a7d6c7cfc5c4c39..77c1894ceb17ed72263c234124c021ac6e412bf6 100644 (file)
       ftp://nic.ddn.mil/rfc/rfc2044.txt
       François Yergeau <yergeau@alis.com>, 1997-10.
 
+.  - Various references
+
+.   : Unicode charset mappings
+      ftp://ftp.unicode.org:/Public/MAPPINGS/
+
+      The Unicode consortium makes available plenty of charset mappings
+      for converting "legacy" charsets to Unicode.
+
 .  - Normalisation et internationalisation: Inventaire et prospectives des
      normes clefs pour le traitement informatique du français.  (392p.)
 
index c9b577a9f42d86cf821119dae4edf9bfba8c2ec8..b9002fb3b81fcb279564b56848b6d7a787413d7b 100644 (file)
@@ -1,3 +1,38 @@
+1999-12-19  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * recode.texi: Add index references and print indices for
+       concepts, options, library features, and charsets and surfaces.
+       Many stylistic changes, both for English and for Texinfo.  Various
+       factual errors corrected, including output from some examples.
+       * tables.py (produce_texinfo): Generate index references.
+
+1999-12-12  François Pinard  <pinard@iro.umontreal.ca>
+
+       * recode.texi: Show program_name in the examples for the library
+       usage, and document its purpose.
+       Reported by Kristian Köhntopp and Pawel Krawczyk.
+
+1999-11-27  François Pinard  <pinard@iro.umontreal.ca>
+
+       * recode.texi (MIME contents encoding, UTF-7): Adjust RFC numbers
+       and correct historical note.
+       Reported by Neal McBurnett.
+
+1999-09-27  François Pinard  <pinard@iro.umontreal.ca>
+
+       * tables.py: Python version of tables.pl.
+       * tables.pl: Deleted.
+       * Makefile.am, Makemore: Adjusted.
+
+1999-06-22  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am (man_MANS, recode.1): Deleted.  The man page will
+       now be built in src/ rather than here.
+
+1999-06-17  François Pinard  <pinard@iro.umontreal.ca>
+
+       * recode.texi (Top): Use @ifnottex instead of @ifinfo.
+\f
 1999-04-27  François Pinard  <pinard@iro.umontreal.ca>
 
        * recode.texi: Do not use od in examples, recode can do it itself.
index 6263b6bd08ddefe16ea7f423d2f00d99c0f60ed6..1b91ce098aafdac4d5f96078dcf71fb2b98519a5 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile for `recode' documentation.
-# Copyright © 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright © 1994, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
 # François Pinard <pinard@iro.umontreal.ca>
 
 # This program is free software; you can redistribute it and/or modify
 
 AUTOMAKE_OPTIONS = gnits
 info_TEXINFOS = recode.texi
-man_MANS = recode.1
 
-EXTRA_DIST = charset.texi File-Latin1 help2man $(MANS) Makemore        \
-tables.pl
-
-PERL = perl
+EXTRA_DIST = charset.texi File-Latin1 help2man Makemore        tables.py
 
 recode.info: charset.texi
 recode.dvi: charset.texi
-
-recode.1: help2man $(top_srcdir)/src/main.c
-       @if test -f ../src/recode; then \
-         echo "Updating the \`man' page for \`recode'"; \
-         LANGUAGE=C $(PERL) $(srcdir)/help2man ../src/recode > recode.1-tmp; \
-         mv recode.1-tmp $(srcdir)/recode.1; \
-       else \
-         echo "WARNING: The \`man' page for \`recode' cannot be updated yet."; \
-         echo "         Retry once the program executable will be ready."; \
-       fi
index 1c00a3df358b70415de7056de5dc9d0299fe08d2..f8c0099f47b44f97c6022e6937ac957d37d0f6c3 100644 (file)
@@ -11,7 +11,7 @@
 # PARTICULAR PURPOSE.
 
 # Makefile for `recode' documentation.
-# Copyright © 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright © 1994, 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
 # François Pinard <pinard@iro.umontreal.ca>
 
 # This program is free software; you can redistribute it and/or modify
@@ -77,9 +77,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
-AWK = @AWK@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -98,16 +100,16 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
 LEX = @LEX@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
@@ -121,12 +123,8 @@ l = @l@
 
 AUTOMAKE_OPTIONS = gnits
 info_TEXINFOS = recode.texi
-man_MANS = recode.1
 
-EXTRA_DIST = charset.texi File-Latin1 help2man $(MANS) Makemore        tables.pl
-
-
-PERL = perl
+EXTRA_DIST = charset.texi File-Latin1 help2man Makemore        tables.py
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
 CONFIG_CLEAN_FILES = 
@@ -134,10 +132,6 @@ TEXI2DVI = texi2dvi
 INFO_DEPS = recode.info
 DVIS = recode.dvi
 TEXINFOS = recode.texi
-man1dir = $(mandir)/man1
-MANS = $(man_MANS)
-
-NROFF = nroff
 DIST_COMMON =  ChangeLog Makefile.am Makefile.in mdate-sh stamp-vti \
 texinfo.tex version.texi
 
@@ -296,45 +290,6 @@ maintainer-clean-aminfo:
            rm -f $$i-[0-9]*; \
          fi; \
        done
-
-install-man1:
-       $(mkinstalldirs) $(DESTDIR)$(man1dir)
-       @list='$(man1_MANS)'; \
-       l2='$(man_MANS)'; for i in $$l2; do \
-         case "$$i" in \
-           *.1*) list="$$list $$i" ;; \
-         esac; \
-       done; \
-       for i in $$list; do \
-         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-         else file=$$i; fi; \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
-         $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
-       done
-
-uninstall-man1:
-       @list='$(man1_MANS)'; \
-       l2='$(man_MANS)'; for i in $$l2; do \
-         case "$$i" in \
-           *.1*) list="$$list $$i" ;; \
-         esac; \
-       done; \
-       for i in $$list; do \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
-         rm -f $(DESTDIR)$(man1dir)/$$inst; \
-       done
-install-man: $(MANS)
-       @$(NORMAL_INSTALL)
-       $(MAKE) $(AM_MAKEFLAGS) install-man1
-uninstall-man:
-       @$(NORMAL_UNINSTALL)
-       $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
 tags: TAGS
 TAGS:
 
@@ -366,20 +321,20 @@ installcheck: installcheck-am
 install-exec-am:
 install-exec: install-exec-am
 
-install-data-am: install-info-am install-man
+install-data-am: install-info-am
 install-data: install-data-am
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 install: install-am
-uninstall-am: uninstall-info uninstall-man
+uninstall-am: uninstall-info
 uninstall: uninstall-am
-all-am: Makefile $(INFO_DEPS) $(MANS)
+all-am: Makefile $(INFO_DEPS)
 all-redirect: all-am
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
 installdirs:
-       $(mkinstalldirs)  $(DESTDIR)$(infodir) $(DESTDIR)$(mandir)/man1
+       $(mkinstalldirs)  $(DESTDIR)$(infodir)
 
 
 mostlyclean-generic:
@@ -413,28 +368,17 @@ maintainer-clean: maintainer-clean-am
 
 .PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \
 install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \
-clean-aminfo maintainer-clean-aminfo install-man1 uninstall-man1 \
-install-man uninstall-man tags distdir info-am info dvi-am dvi check \
-check-am installcheck-am installcheck install-exec-am install-exec \
-install-data-am install-data install-am install uninstall-am uninstall \
-all-redirect all-am all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
+clean-aminfo maintainer-clean-aminfo tags distdir info-am info dvi-am \
+dvi check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-am install-data install-am install \
+uninstall-am uninstall all-redirect all-am all installdirs \
+mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
 recode.info: charset.texi
 recode.dvi: charset.texi
 
-recode.1: help2man $(top_srcdir)/src/main.c
-       @if test -f ../src/recode; then \
-         echo "Updating the \`man' page for \`recode'"; \
-         LANGUAGE=C $(PERL) $(srcdir)/help2man ../src/recode > recode.1-tmp; \
-         mv recode.1-tmp $(srcdir)/recode.1; \
-       else \
-         echo "WARNING: The \`man' page for \`recode' cannot be updated yet."; \
-         echo "         Retry once the program executable will be ready."; \
-       fi
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 75282522a5621440517e7b637dc11792a9ae0033..b41a473ead80ea50631d2f795916b1d84220c66e 100644 (file)
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 # 02111-1307, USA.
 
-#essai:
-#      $(PERL) $(srcdir)/tables.pl -n \
-#        $(srcdir)/$(MNEMONICS_DS) $(srcdir)/$(ISO10646_DEF)
-
 include Makefile
 
 ## Some files in the `recode' distribution are mechanically derived
@@ -34,7 +30,7 @@ include Makefile
 
 ## For activating the included recipes, it suffices to link this
 ## `Makemore' file as `GNUmakefile' in the `doc/' directory of your
-## *build* hierarchy.  You need GNU make, GNU wget, Perl and Internet
+## *build* hierarchy.  You need GNU make, GNU wget, Python and Internet
 ## connectivity for all this to work.  However, be warned that if
 ## external files changed, you may be hit.  I am interested in hearing
 ## about such problems (maybe at `recode-bugs@iro.umontreal.ca'), but
@@ -50,8 +46,9 @@ CHARSETS_DEF = keld-email/charsets.def
 NOMS_CARACS = noms_juc_19981216.txt
 
 MAPURL = ftp://ftp.unicode.org/MAPPINGS
-PERL = perl -w
+PYTHON = python
 SURF = netscape
+WGET = wget
 
 # Merely add our things to standard `all' goal.
 all: $(srcdir)/charset.texi $(srcdir)/fr-charset.texi \
@@ -63,28 +60,28 @@ $(top_srcdir)/src/rfc1345.h
 # may launch many parallel occurrences of the action.  This is bad.
 # Any idea, someone?  For now, just list one of them.
 
-$(srcdir)/charset.texi: tables.pl $(MNEMONICS_DS) $(CHARSETS_DEF)
-       $(PERL) $(srcdir)/tables.pl -p -t \
+$(srcdir)/charset.texi: tables.py $(MNEMONICS_DS) $(CHARSETS_DEF)
+       $(PYTHON) $(srcdir)/tables.py -pt \
          $(srcdir)/$(MNEMONICS_DS) $(srcdir)/$(CHARSETS_DEF)
        test $(srcdir) = . || mv charset.texi $@
        mv strip-pool.c $(top_srcdir)/src/strip-pool.c
        mv strip-data.c $(top_srcdir)/src/strip-data.c
 
-$(top_srcdir)/src/charname.h: tables.pl $(MNEMONICS_DS) rfc1345.txt
-       $(PERL) $(srcdir)/tables.pl -n \
+$(top_srcdir)/src/charname.h: tables.py $(MNEMONICS_DS) rfc1345.txt
+       $(PYTHON) $(srcdir)/tables.py -n \
          $(srcdir)/$(MNEMONICS_DS) $(srcdir)/rfc1345.txt
        mv charname.h $@
 
-$(top_srcdir)/src/rfc1345.h: tables.pl $(MNEMONICS_DS)
-       $(PERL) $(srcdir)/tables.pl -m $(srcdir)/$(MNEMONICS_DS)
+$(top_srcdir)/src/rfc1345.h: tables.py $(MNEMONICS_DS)
+       $(PYTHON) $(srcdir)/tables.py -m $(srcdir)/$(MNEMONICS_DS)
        mv rfc1345.h $@
 
-$(srcdir)/fr-charset.texi: tables.pl $(CHARSETS_DEF)
-       $(PERL) $(srcdir)/tables.pl -F -t $(srcdir)/$(CHARSETS_DEF)
+$(srcdir)/fr-charset.texi: tables.py $(CHARSETS_DEF)
+       $(PYTHON) $(srcdir)/tables.py -Ft $(srcdir)/$(CHARSETS_DEF)
        test $(srcdir) = . || mv fr-charset.texi $@
 
-$(top_srcdir)/src/fr-charname.h: tables.pl $(NOMS_CARACS)
-       $(PERL) $(srcdir)/tables.pl -F -n $(srcdir)/$(NOMS_CARACS)
+$(top_srcdir)/src/fr-charname.h: tables.py $(NOMS_CARACS)
+       $(PYTHON) $(srcdir)/tables.py -Fn $(srcdir)/$(NOMS_CARACS)
        mv fr-charname.h $@
 
 # -----------------------------------#
@@ -92,21 +89,21 @@ $(top_srcdir)/src/fr-charname.h: tables.pl $(NOMS_CARACS)
 # -----------------------------------#
 
 $(srcdir)/rfc1345.txt:
-       wget ftp://nic.ddn.mil/rfc/rfc1345.txt
+       $(WGET) ftp://nic.ddn.mil/rfc/rfc1345.txt
        test $(srcdir) = . || mv rfc1345.txt $@
 
 $(srcdir)/$(CHSET)/charsets.def: $(srcdir)/$(CHSET)
 
 $(srcdir)/$(CHSET):
        mkdir $@-tmp
-       wget ftp://dkuug.dk/pub/$(CHSET).tar
+       $(WGET) ftp://dkuug.dk/pub/$(CHSET).tar
        tar xfC $(CHSET).tar $@-tmp
        rm $(CHSET).tar
        mv $@-tmp $@
 
 # Also look in `ftp://dkuug.dk/i18n/WG15-collection/charmaps/iso10646'.
 $(srcdir)/mnemonic,ds:
-       wget ftp://dkuug.dk/i18n/WG15-collection/repertoiremaps/mnemonic,ds
+       $(WGET) ftp://dkuug.dk/i18n/WG15-collection/repertoiremaps/mnemonic,ds
        test $(srcdir) = . || mv mnemonic,ds $@
 
 # -------------------------------------------------#
@@ -114,26 +111,26 @@ $(srcdir)/mnemonic,ds:
 # -------------------------------------------------#
 
 $(srcdir)/cp1250.txt:
-       wget $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1250.TXT
+       $(WGET) $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1250.TXT
        mv CP1250.TXT $@
 
 $(srcdir)/cp1251.txt:
-       wget $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1251.TXT
+       $(WGET) $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1251.TXT
        mv CP1251.TXT $@
 
 $(srcdir)/cp1252.txt:
-       wget $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1252.TXT
+       $(WGET) $(MAPURL)/VENDORS/MICSFT/WINDOWS/CP1252.TXT
        mv CP1252.TXT $@
 
 # Index at `http://www.dkuug.dk/jtc1/sc22/wg20/docs/projects.html.en'.
 i18n.txt:
-       wget http://www.dkuug.dk/jtc1/sc22/wg20/docs/i18n.txt
+       $(WGET) http://www.dkuug.dk/jtc1/sc22/wg20/docs/i18n.txt
 i18nrep.txt:
-       wget http://www.dkuug.dk/jtc1/sc22/wg20/docs/i18nrep.txt
+       $(WGET) http://www.dkuug.dk/jtc1/sc22/wg20/docs/i18nrep.txt
 
 # Various files.
 iso2375reg.txt:
-       wget ftp://dkuug.dk/i18n/iso2375reg.txt
+       $(WGET) ftp://dkuug.dk/i18n/iso2375reg.txt
 
 # Online documentation.
 # Index at `http://osiris.dkuug.dk/jtc1/sc2/wg3'.
index fcd7c18e6c6646f3fdbb23ebb1969d94a221860b..ae9ad6d97b859ee80dd2a2eb7ce0bc0d826aceed 100644 (file)
 
 @item ANSI_X3.4-1968
+@tindex ANSI_X3.4-1968@r{, aliases and source}
+@tindex 367
+@tindex ANSI_X3.4-1986
+@tindex ASCII
+@tindex CP367
+@tindex IBM367
+@tindex ISO646-US
+@tindex ISO_646.irv:1991
+@tindex US-ASCII
+@tindex iso-ir-6
+@tindex us
 @code{367}, @code{ANSI_X3.4-1986}, @code{ASCII}, @code{CP367}, @code{IBM367}, @code{ISO646-US}, @code{ISO_646.irv:1991}, @code{US-ASCII}, @code{iso-ir-6} and @code{us} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ASMO_449
+@tindex ASMO_449@r{, aliases and source}
+@tindex ISO_9036
+@tindex arabic7
+@tindex iso-ir-89
 @code{ISO_9036}, @code{arabic7} and @code{iso-ir-89} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item BS_4730
+@tindex BS_4730@r{, aliases and source}
+@tindex ISO646-GB
+@tindex gb
+@tindex iso-ir-4
+@tindex uk
 @code{ISO646-GB}, @code{gb}, @code{iso-ir-4} and @code{uk} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item BS_viewdata
+@tindex BS_viewdata@r{, aliases and source}
+@tindex iso-ir-47
 @code{iso-ir-47} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item CP1250
+@tindex CP1250@r{, aliases and source}
+@tindex 1250
+@tindex ms-ee
+@tindex windows-1250
 @code{1250}, @code{ms-ee} and @code{windows-1250} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1251
+@tindex CP1251@r{, aliases and source}
+@tindex 1251
+@tindex ms-cyrl
+@tindex windows-1251
 @code{1251}, @code{ms-cyrl} and @code{windows-1251} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1252
+@tindex CP1252@r{, aliases and source}
+@tindex 1252
+@tindex ms-ansi
+@tindex windows-1252
 @code{1252}, @code{ms-ansi} and @code{windows-1252} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1253
+@tindex CP1253@r{, aliases and source}
+@tindex 1253
+@tindex ms-greek
+@tindex windows-1253
 @code{1253}, @code{ms-greek} and @code{windows-1253} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1254
+@tindex CP1254@r{, aliases and source}
+@tindex 1254
+@tindex ms-turk
+@tindex windows-1254
 @code{1254}, @code{ms-turk} and @code{windows-1254} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1255
+@tindex CP1255@r{, aliases and source}
+@tindex 1255
+@tindex ms-hebr
+@tindex windows-1255
 @code{1255}, @code{ms-hebr} and @code{windows-1255} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1256
+@tindex CP1256@r{, aliases and source}
+@tindex 1256
+@tindex ms-arab
+@tindex windows-1256
 @code{1256}, @code{ms-arab} and @code{windows-1256} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item CP1257
+@tindex CP1257@r{, aliases and source}
+@tindex 1257
+@tindex WinBaltRim
+@tindex windows-1257
 @code{1257}, @code{WinBaltRim} and @code{windows-1257} are aliases for this charset.
 Source: CEN/TC304 N283.
 
 @item CSA_Z243.4-1985-1
+@tindex CSA_Z243.4-1985-1@r{, aliases and source}
+@tindex ISO646-CA
+@tindex ca
+@tindex csa7-1
+@tindex iso-ir-121
 @code{ISO646-CA}, @code{ca}, @code{csa7-1} and @code{iso-ir-121} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item CSA_Z243.4-1985-2
+@tindex CSA_Z243.4-1985-2@r{, aliases and source}
+@tindex ISO646-CA2
+@tindex csa7-2
+@tindex iso-ir-122
 @code{ISO646-CA2}, @code{csa7-2} and @code{iso-ir-122} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item CSA_Z243.4-1985-gr
+@tindex CSA_Z243.4-1985-gr@r{, aliases and source}
+@tindex iso-ir-123
 @code{iso-ir-123} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item CSN_369103
+@tindex CSN_369103@r{, aliases and source}
+@tindex KOI-8_L2
+@tindex iso-ir-139
+@tindex koi8l2
 @code{KOI-8_L2}, @code{iso-ir-139} and @code{koi8l2} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item CWI
+@tindex CWI@r{, aliases and source}
+@tindex CWI-2
+@tindex cp-hu
 @code{CWI-2} and @code{cp-hu} are aliases for this charset.
 Source: Computerworld Sza'mita'stechnika vol 3 issue 13 1988-06-29.
 
 @item DEC-MCS
+@tindex DEC-MCS@r{, aliases and source}
+@tindex dec
 @code{dec} is an alias for this charset.
 VAX/VMS User's Manual, Order Number: AI-Y517A-TE, April 1986.
 
 @item DIN_66003
+@tindex DIN_66003@r{, aliases and source}
+@tindex ISO646-DE
+@tindex de
+@tindex iso-ir-21
 @code{ISO646-DE}, @code{de} and @code{iso-ir-21} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item DS_2089
+@tindex DS_2089@r{, aliases and source}
+@tindex DS2089
+@tindex ISO646-DK
+@tindex dk
 @code{DS2089}, @code{ISO646-DK} and @code{dk} are aliases for this charset.
 Source: Danish Standard, DS 2089, February 1974.
 
 @item EBCDIC-AT-DE
+@tindex EBCDIC-AT-DE@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-AT-DE-A
+@tindex EBCDIC-AT-DE-A@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-CA-FR
+@tindex EBCDIC-CA-FR@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-DK-NO
+@tindex EBCDIC-DK-NO@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-DK-NO-A
+@tindex EBCDIC-DK-NO-A@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-ES
+@tindex EBCDIC-ES@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-ES-A
+@tindex EBCDIC-ES-A@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-ES-S
+@tindex EBCDIC-ES-S@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-FI-SE
+@tindex EBCDIC-FI-SE@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-FI-SE-A
+@tindex EBCDIC-FI-SE-A@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-FR
+@tindex EBCDIC-FR@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-IS-FRISS
+@tindex EBCDIC-IS-FRISS@r{, aliases and source}
+@tindex friss
 @code{friss} is an alias for this charset.
 Source: Skyrsuvelar Rikisins og Reykjavikurborgar, feb 1982.
 
 @item EBCDIC-IT
+@tindex EBCDIC-IT@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-PT
+@tindex EBCDIC-PT@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-UK
+@tindex EBCDIC-UK@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item EBCDIC-US
+@tindex EBCDIC-US@r{, aliases and source}
 Source: IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987.
 
 @item ECMA-cyrillic
+@tindex ECMA-cyrillic@r{, aliases and source}
+@tindex ECMA-113
+@tindex ECMA-113:1986
+@tindex iso-ir-111
 @code{ECMA-113}, @code{ECMA-113:1986} and @code{iso-ir-111} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ES
+@tindex ES@r{, aliases and source}
+@tindex ISO646-ES
+@tindex iso-ir-17
 @code{ISO646-ES} and @code{iso-ir-17} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ES2
+@tindex ES2@r{, aliases and source}
+@tindex ISO646-ES2
+@tindex iso-ir-85
 @code{ISO646-ES2} and @code{iso-ir-85} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item GB_1988-80
+@tindex GB_1988-80@r{, aliases and source}
+@tindex ISO646-CN
+@tindex cn
+@tindex iso-ir-57
 @code{ISO646-CN}, @code{cn} and @code{iso-ir-57} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item GOST_19768-87
+@tindex GOST_19768-87@r{, aliases and source}
+@tindex ST_SEV_358-88
+@tindex iso-ir-153
 @code{ST_SEV_358-88} and @code{iso-ir-153} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item IBM037
+@tindex IBM037@r{, aliases and source}
+@tindex 037
+@tindex CP037
+@tindex ebcdic-cp-ca
+@tindex ebcdic-cp-nl
+@tindex ebcdic-cp-us
+@tindex ebcdic-cp-wt
 @code{037}, @code{CP037}, @code{ebcdic-cp-ca}, @code{ebcdic-cp-nl}, @code{ebcdic-cp-us} and @code{ebcdic-cp-wt} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM038
+@tindex IBM038@r{, aliases and source}
+@tindex 038
+@tindex CP038
+@tindex EBCDIC-INT
 @code{038}, @code{CP038} and @code{EBCDIC-INT} are aliases for this charset.
 Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990.
 
 @item IBM1004
+@tindex IBM1004@r{, aliases and source}
+@tindex 1004
+@tindex CP1004
+@tindex os2latin1
 @code{1004}, @code{CP1004} and @code{os2latin1} are aliases for this charset.
 Source: CEN/TC304 N283, 1994-02-04.
 
 @item IBM1026
+@tindex IBM1026@r{, aliases and source}
+@tindex 1026
+@tindex CP1026
 @code{1026} and @code{CP1026} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM1047
+@tindex IBM1047@r{, aliases and source}
+@tindex 1047
+@tindex CP1047
 @code{1047} and @code{CP1047} are aliases for this charset.
 Source: IBM Character Data Representation Architecture.
 Registry SC09-1391-00 p 150.
 
 @item IBM256
+@tindex IBM256@r{, aliases and source}
+@tindex 256
+@tindex CP256
+@tindex EBCDIC-INT1
 @code{256}, @code{CP256} and @code{EBCDIC-INT1} are aliases for this charset.
 Source: IBM Registry C-H 3-3220-050.
 
 @item IBM273
+@tindex IBM273@r{, aliases and source}
+@tindex 273
+@tindex CP273
 @code{273} and @code{CP273} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM274
+@tindex IBM274@r{, aliases and source}
+@tindex 274
+@tindex CP274
+@tindex EBCDIC-BE
 @code{274}, @code{CP274} and @code{EBCDIC-BE} are aliases for this charset.
 Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990.
 
 @item IBM275
+@tindex IBM275@r{, aliases and source}
+@tindex 275
+@tindex CP275
+@tindex EBCDIC-BR
 @code{275}, @code{CP275} and @code{EBCDIC-BR} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM277
+@tindex IBM277@r{, aliases and source}
+@tindex EBCDIC-CP-DK
+@tindex EBCDIC-CP-NO
 @code{EBCDIC-CP-DK} and @code{EBCDIC-CP-NO} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM278
+@tindex IBM278@r{, aliases and source}
+@tindex 278
+@tindex CP278
+@tindex ebcdic-cp-fi
+@tindex ebcdic-cp-se
 @code{278}, @code{CP278}, @code{ebcdic-cp-fi} and @code{ebcdic-cp-se} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM280
+@tindex IBM280@r{, aliases and source}
+@tindex 280
+@tindex CP280
+@tindex ebcdic-cp-it
 @code{280}, @code{CP280} and @code{ebcdic-cp-it} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM281
+@tindex IBM281@r{, aliases and source}
+@tindex 281
+@tindex CP281
+@tindex EBCDIC-JP-E
 @code{281}, @code{CP281} and @code{EBCDIC-JP-E} are aliases for this charset.
 Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990.
 
 @item IBM284
+@tindex IBM284@r{, aliases and source}
+@tindex 284
+@tindex CP284
+@tindex ebcdic-cp-es
 @code{284}, @code{CP284} and @code{ebcdic-cp-es} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM285
+@tindex IBM285@r{, aliases and source}
+@tindex 285
+@tindex CP285
+@tindex ebcdic-cp-gb
 @code{285}, @code{CP285} and @code{ebcdic-cp-gb} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM290
+@tindex IBM290@r{, aliases and source}
+@tindex 290
+@tindex CP290
+@tindex EBCDIC-JP-kana
 @code{290}, @code{CP290} and @code{EBCDIC-JP-kana} are aliases for this charset.
 Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990.
 
 @item IBM297
+@tindex IBM297@r{, aliases and source}
+@tindex 297
+@tindex CP297
+@tindex ebcdic-cp-fr
 @code{297}, @code{CP297} and @code{ebcdic-cp-fr} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM420
+@tindex IBM420@r{, aliases and source}
+@tindex 420
+@tindex CP420
+@tindex ebcdic-cp-ar1
 @code{420}, @code{CP420} and @code{ebcdic-cp-ar1} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 IBM NLS RM p 11-11.
 
 @item IBM423
+@tindex IBM423@r{, aliases and source}
+@tindex 423
+@tindex CP423
+@tindex ebcdic-cp-gr
 @code{423}, @code{CP423} and @code{ebcdic-cp-gr} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM424
+@tindex IBM424@r{, aliases and source}
+@tindex 424
+@tindex CP424
+@tindex ebcdic-cp-he
 @code{424}, @code{CP424} and @code{ebcdic-cp-he} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM437
+@tindex IBM437@r{, aliases and source}
+@tindex 437
+@tindex CP437
 @code{437} and @code{CP437} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM500
+@tindex IBM500@r{, aliases and source}
+@tindex 500
+@tindex 500V1
+@tindex CP500
+@tindex ebcdic-cp-be
+@tindex ebcdic-cp-ch
 @code{500}, @code{500V1}, @code{CP500}, @code{ebcdic-cp-be} and @code{ebcdic-cp-ch} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM850
+@tindex IBM850@r{, aliases and source}
+@tindex 850
+@tindex CP850
 @code{850} and @code{CP850} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 Source: UNICODE 1.0.
 
 @item IBM851
+@tindex IBM851@r{, aliases and source}
+@tindex 851
+@tindex CP851
 @code{851} and @code{CP851} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM852
+@tindex IBM852@r{, aliases and source}
+@tindex 852
+@tindex CP852
+@tindex pcl2
+@tindex pclatin2
 @code{852}, @code{CP852}, @code{pcl2} and @code{pclatin2} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM855
+@tindex IBM855@r{, aliases and source}
+@tindex 855
+@tindex CP855
 @code{855} and @code{CP855} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM857
+@tindex IBM857@r{, aliases and source}
+@tindex 857
+@tindex CP857
 @code{857} and @code{CP857} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM860
+@tindex IBM860@r{, aliases and source}
+@tindex 860
+@tindex CP860
 @code{860} and @code{CP860} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM861
+@tindex IBM861@r{, aliases and source}
+@tindex 861
+@tindex CP861
+@tindex cp-is
 @code{861}, @code{CP861} and @code{cp-is} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM862
+@tindex IBM862@r{, aliases and source}
+@tindex 862
+@tindex CP862
 @code{862} and @code{CP862} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM863
+@tindex IBM863@r{, aliases and source}
+@tindex 863
+@tindex CP863
 @code{863} and @code{CP863} are aliases for this charset.
 Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991.
 
 @item IBM864
+@tindex IBM864@r{, aliases and source}
+@tindex 864
+@tindex CP864
 @code{864} and @code{CP864} are aliases for this charset.
 Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991.
 
 @item IBM865
+@tindex IBM865@r{, aliases and source}
+@tindex 865
+@tindex CP865
 @code{865} and @code{CP865} are aliases for this charset.
 Source: IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987).
 
 @item IBM868
+@tindex IBM868@r{, aliases and source}
+@tindex 868
+@tindex CP868
+@tindex cp-ar
 @code{868}, @code{CP868} and @code{cp-ar} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM869
+@tindex IBM869@r{, aliases and source}
+@tindex 869
+@tindex CP869
+@tindex cp-gr
 @code{869}, @code{CP869} and @code{cp-gr} are aliases for this charset.
 Source: IBM Keyboard layouts and code pages, PN 07G4586 June 1991.
 
 @item IBM870
+@tindex IBM870@r{, aliases and source}
+@tindex 870
+@tindex CP870
+@tindex ebcdic-cp-roece
+@tindex ebcdic-cp-yu
 @code{870}, @code{CP870}, @code{ebcdic-cp-roece} and @code{ebcdic-cp-yu} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM871
+@tindex IBM871@r{, aliases and source}
+@tindex 871
+@tindex CP871
+@tindex ebcdic-cp-is
 @code{871}, @code{CP871} and @code{ebcdic-cp-is} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM875
+@tindex IBM875@r{, aliases and source}
+@tindex 875
+@tindex CP875
+@tindex EBCDIC-Greek
 @code{875}, @code{CP875} and @code{EBCDIC-Greek} are aliases for this charset.
 Source: UNICODE 1.0.
 
 @item IBM880
+@tindex IBM880@r{, aliases and source}
+@tindex 880
+@tindex CP880
+@tindex EBCDIC-Cyrillic
 @code{880}, @code{CP880} and @code{EBCDIC-Cyrillic} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM891
+@tindex IBM891@r{, aliases and source}
+@tindex 891
+@tindex CP891
 @code{891} and @code{CP891} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM903
+@tindex IBM903@r{, aliases and source}
+@tindex 903
+@tindex CP903
 @code{903} and @code{CP903} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM904
+@tindex IBM904@r{, aliases and source}
+@tindex 904
+@tindex CP904
 @code{904} and @code{CP904} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IBM905
+@tindex IBM905@r{, aliases and source}
+@tindex 905
+@tindex CP905
+@tindex ebcdic-cp-tr
 @code{905}, @code{CP905} and @code{ebcdic-cp-tr} are aliases for this charset.
 Source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990.
 
 @item IBM918
+@tindex IBM918@r{, aliases and source}
+@tindex 918
+@tindex CP918
+@tindex ebcdic-cp-ar2
 @code{918}, @code{CP918} and @code{ebcdic-cp-ar2} are aliases for this charset.
 Source: IBM NLS RM Vol2 SE09-8002-01, March 1990.
 
 @item IEC_P27-1
+@tindex IEC_P27-1@r{, aliases and source}
+@tindex iso-ir-143
 @code{iso-ir-143} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item INIS
+@tindex INIS@r{, aliases and source}
+@tindex iso-ir-49
 @code{iso-ir-49} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item INIS-8
+@tindex INIS-8@r{, aliases and source}
+@tindex iso-ir-50
 @code{iso-ir-50} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item INIS-cyrillic
+@tindex INIS-cyrillic@r{, aliases and source}
+@tindex iso-ir-51
 @code{iso-ir-51} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item INVARIANT
+@tindex INVARIANT@r{, aliases and source}
+@tindex iso-ir-170
 @code{iso-ir-170} is an alias for this charset.
 
 @item ISO-8859-1
+@tindex ISO-8859-1@r{, aliases and source}
+@tindex 819
+@tindex CP819
+@tindex IBM819
+@tindex ISO_8859-1
+@tindex ISO_8859-1:1987
+@tindex iso-ir-100
+@tindex l1
+@tindex latin1
 @code{819}, @code{CP819}, @code{IBM819}, @code{ISO_8859-1}, @code{ISO_8859-1:1987}, @code{iso-ir-100}, @code{l1} and @code{latin1} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-10
+@tindex ISO-8859-10@r{, aliases and source}
+@tindex ISO_8859-10
+@tindex ISO_8859-10:1993
+@tindex iso-ir-157
+@tindex l6
+@tindex latin6
 @code{ISO_8859-10}, @code{ISO_8859-10:1993}, @code{iso-ir-157}, @code{l6} and @code{latin6} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-13
+@tindex ISO-8859-13@r{, aliases and source}
+@tindex ISO_8859-13
+@tindex ISO_8859-13:1998
+@tindex iso-baltic
+@tindex iso-ir-179a
+@tindex l7
+@tindex latin7
 @code{ISO_8859-13}, @code{ISO_8859-13:1998}, @code{iso-baltic}, @code{iso-ir-179a}, @code{l7} and @code{latin7} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-14
+@tindex ISO-8859-14@r{, aliases and source}
+@tindex ISO_8859-14
+@tindex ISO_8859-14:1998
+@tindex iso-celtic
+@tindex iso-ir-199
+@tindex l8
+@tindex latin8
 @code{ISO_8859-14}, @code{ISO_8859-14:1998}, @code{iso-celtic}, @code{iso-ir-199}, @code{l8} and @code{latin8} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-15
+@tindex ISO-8859-15@r{, aliases and source}
+@tindex ISO_8859-15
+@tindex ISO_8859-15:1998
+@tindex iso-ir-203
+@tindex l9
+@tindex latin9
 @code{ISO_8859-15}, @code{ISO_8859-15:1998}, @code{iso-ir-203}, @code{l9} and @code{latin9} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-2
+@tindex ISO-8859-2@r{, aliases and source}
+@tindex 912
+@tindex CP912
+@tindex IBM912
+@tindex ISO_8859-2
+@tindex ISO_8859-2:1987
+@tindex iso-ir-101
+@tindex l2
+@tindex latin2
 @code{912}, @code{CP912}, @code{IBM912}, @code{ISO_8859-2}, @code{ISO_8859-2:1987}, @code{iso-ir-101}, @code{l2} and @code{latin2} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-3
+@tindex ISO-8859-3@r{, aliases and source}
+@tindex ISO_8859-3
+@tindex ISO_8859-3:1988
+@tindex iso-ir-109
+@tindex l3
+@tindex latin3
 @code{ISO_8859-3}, @code{ISO_8859-3:1988}, @code{iso-ir-109}, @code{l3} and @code{latin3} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-4
+@tindex ISO-8859-4@r{, aliases and source}
+@tindex ISO_8859-4
+@tindex ISO_8859-4:1988
+@tindex iso-ir-110
+@tindex l4
+@tindex latin4
 @code{ISO_8859-4}, @code{ISO_8859-4:1988}, @code{iso-ir-110}, @code{l4} and @code{latin4} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-5
+@tindex ISO-8859-5@r{, aliases and source}
+@tindex ISO_8859-5
+@tindex ISO_8859-5:1988
+@tindex cyrillic
+@tindex iso-ir-144
 @code{ISO_8859-5}, @code{ISO_8859-5:1988}, @code{cyrillic} and @code{iso-ir-144} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-6
+@tindex ISO-8859-6@r{, aliases and source}
+@tindex ASMO-708
+@tindex ECMA-114
+@tindex ISO_8859-6
+@tindex ISO_8859-6:1987
+@tindex arabic
+@tindex iso-ir-127
 @code{ASMO-708}, @code{ECMA-114}, @code{ISO_8859-6}, @code{ISO_8859-6:1987}, @code{arabic} and @code{iso-ir-127} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-7
+@tindex ISO-8859-7@r{, aliases and source}
+@tindex ECMA-118
+@tindex ELOT_928
+@tindex ISO_8859-7
+@tindex ISO_8859-7:1987
+@tindex greek
+@tindex greek8
+@tindex iso-ir-126
 @code{ECMA-118}, @code{ELOT_928}, @code{ISO_8859-7}, @code{ISO_8859-7:1987}, @code{greek}, @code{greek8} and @code{iso-ir-126} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-8
+@tindex ISO-8859-8@r{, aliases and source}
+@tindex ISO_8859-8
+@tindex ISO_8859-8:1988
+@tindex hebrew
+@tindex iso-ir-138
 @code{ISO_8859-8}, @code{ISO_8859-8:1988}, @code{hebrew} and @code{iso-ir-138} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO-8859-9
+@tindex ISO-8859-9@r{, aliases and source}
+@tindex ISO_8859-9
+@tindex ISO_8859-9:1989
+@tindex iso-ir-148
+@tindex l5
+@tindex latin5
 @code{ISO_8859-9}, @code{ISO_8859-9:1989}, @code{iso-ir-148}, @code{l5} and @code{latin5} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_10367-box
+@tindex ISO_10367-box@r{, aliases and source}
+@tindex iso-ir-155
 @code{iso-ir-155} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_2033-1983
+@tindex ISO_2033-1983@r{, aliases and source}
+@tindex e13b
+@tindex iso-ir-98
 @code{e13b} and @code{iso-ir-98} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_5427
+@tindex ISO_5427@r{, aliases and source}
+@tindex iso-ir-37
 @code{iso-ir-37} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_5427-ext
+@tindex ISO_5427-ext@r{, aliases and source}
+@tindex ISO_5427:1981
+@tindex iso-ir-54
 @code{ISO_5427:1981} and @code{iso-ir-54} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_5428
+@tindex ISO_5428@r{, aliases and source}
+@tindex ISO_5428:1980
+@tindex iso-ir-55
 @code{ISO_5428:1980} and @code{iso-ir-55} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_646.basic
+@tindex ISO_646.basic@r{, aliases and source}
+@tindex ISO_646.basic:1983
+@tindex ref
 @code{ISO_646.basic:1983} and @code{ref} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_646.irv
+@tindex ISO_646.irv@r{, aliases and source}
+@tindex ISO_646.irv:1983
+@tindex irv
+@tindex iso-ir-2
 @code{ISO_646.irv:1983}, @code{irv} and @code{iso-ir-2} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_6937-2-25
+@tindex ISO_6937-2-25@r{, aliases and source}
+@tindex iso-ir-152
 @code{iso-ir-152} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item ISO_8859-supp
+@tindex ISO_8859-supp@r{, aliases and source}
+@tindex iso-ir-154
+@tindex latin1-2-5
 @code{iso-ir-154} and @code{latin1-2-5} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item IT
+@tindex IT@r{, aliases and source}
+@tindex ISO646-IT
+@tindex iso-ir-15
 @code{ISO646-IT} and @code{iso-ir-15} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6220-1969-jp
+@tindex JIS_C6220-1969-jp@r{, aliases and source}
+@tindex JIS_C6220-1969
+@tindex iso-ir-13
+@tindex katakana
+@tindex x0201-7
 @code{JIS_C6220-1969}, @code{iso-ir-13}, @code{katakana} and @code{x0201-7} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6220-1969-ro
+@tindex JIS_C6220-1969-ro@r{, aliases and source}
+@tindex ISO646-JP
+@tindex iso-ir-14
+@tindex jp
 @code{ISO646-JP}, @code{iso-ir-14} and @code{jp} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6229-1984-a
+@tindex JIS_C6229-1984-a@r{, aliases and source}
+@tindex jp-ocr-a
 @code{jp-ocr-a} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6229-1984-b
+@tindex JIS_C6229-1984-b@r{, aliases and source}
+@tindex ISO646-JP-OCR-B
+@tindex jp-ocr-b
 @code{ISO646-JP-OCR-B} and @code{jp-ocr-b} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6229-1984-b-add
+@tindex JIS_C6229-1984-b-add@r{, aliases and source}
+@tindex iso-ir-93
+@tindex jp-ocr-b-add
 @code{iso-ir-93} and @code{jp-ocr-b-add} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6229-1984-hand
+@tindex JIS_C6229-1984-hand@r{, aliases and source}
+@tindex iso-ir-94
+@tindex jp-ocr-hand
 @code{iso-ir-94} and @code{jp-ocr-hand} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6229-1984-hand-add
+@tindex JIS_C6229-1984-hand-add@r{, aliases and source}
+@tindex iso-ir-95
+@tindex jp-ocr-hand-add
 @code{iso-ir-95} and @code{jp-ocr-hand-add} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_C6229-1984-kana
+@tindex JIS_C6229-1984-kana@r{, aliases and source}
+@tindex iso-ir-96
 @code{iso-ir-96} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item JIS_X0201
+@tindex JIS_X0201@r{, aliases and source}
+@tindex X0201
 @code{X0201} is an alias for this charset.
 
 @item JUS_I.B1.002
+@tindex JUS_I.B1.002@r{, aliases and source}
+@tindex ISO646-YU
+@tindex iso-ir-141
+@tindex js
+@tindex yu
 @code{ISO646-YU}, @code{iso-ir-141}, @code{js} and @code{yu} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JUS_I.B1.003-mac
+@tindex JUS_I.B1.003-mac@r{, aliases and source}
+@tindex iso-ir-147
+@tindex macedonian
 @code{iso-ir-147} and @code{macedonian} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item JUS_I.B1.003-serb
+@tindex JUS_I.B1.003-serb@r{, aliases and source}
+@tindex iso-ir-146
+@tindex serbian
 @code{iso-ir-146} and @code{serbian} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item KOI-7
+@tindex KOI-7@r{, aliases and source}
 Source: Andrey A. Chernov <ache@@nagual.pp.ru>.
 
 @item KOI-8
+@tindex KOI-8@r{, aliases and source}
+@tindex GOST_19768-74
 @code{GOST_19768-74} is an alias for this charset.
 Source: Andrey A. Chernov <ache@@nagual.pp.ru>.
 
 @item KOI8-R
+@tindex KOI8-R@r{, aliases and source}
 Source: RFC1489 via Gabor Kiss <kissg@@sztaki.hu>.
 And Andrey A. Chernov <ache@@nagual.pp.ru>.
 
 @item KOI8-RU
+@tindex KOI8-RU@r{, aliases and source}
 Source: http://cad.ntu-kpi.kiev.ua/multiling/koi8-ru/.
 
 @item KOI8-U
+@tindex KOI8-U@r{, aliases and source}
 Source: RFC 2319.
 Mibenum: 2088.
 Source: http://www.net.ua/KOI8-U/.
 
 @item KSC5636
+@tindex KSC5636@r{, aliases and source}
+@tindex ISO646-KR
 @code{ISO646-KR} is an alias for this charset.
 
 @item Latin-greek-1
+@tindex Latin-greek-1@r{, aliases and source}
+@tindex iso-ir-27
 @code{iso-ir-27} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item MSZ_7795.3
+@tindex MSZ_7795.3@r{, aliases and source}
+@tindex ISO646-HU
+@tindex hu
+@tindex iso-ir-86
 @code{ISO646-HU}, @code{hu} and @code{iso-ir-86} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item NATS-DANO
+@tindex NATS-DANO@r{, aliases and source}
+@tindex iso-ir-9-1
 @code{iso-ir-9-1} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item NATS-DANO-ADD
+@tindex NATS-DANO-ADD@r{, aliases and source}
+@tindex iso-ir-9-2
 @code{iso-ir-9-2} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item NATS-SEFI
+@tindex NATS-SEFI@r{, aliases and source}
+@tindex iso-ir-8-1
 @code{iso-ir-8-1} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item NATS-SEFI-ADD
+@tindex NATS-SEFI-ADD@r{, aliases and source}
+@tindex iso-ir-8-2
 @code{iso-ir-8-2} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item NC_NC00-10
+@tindex NC_NC00-10@r{, aliases and source}
+@tindex ISO646-CU
+@tindex NC_NC00-10:81
+@tindex cuba
+@tindex iso-ir-151
 @code{ISO646-CU}, @code{NC_NC00-10:81}, @code{cuba} and @code{iso-ir-151} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item NF_Z_62-010
+@tindex NF_Z_62-010@r{, aliases and source}
+@tindex ISO646-FR
+@tindex fr
+@tindex iso-ir-69
 @code{ISO646-FR}, @code{fr} and @code{iso-ir-69} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item NF_Z_62-010_(1973)
+@tindex NF_Z_62-010_(1973)@r{, aliases and source}
+@tindex ISO646-FR1
+@tindex iso-ir-25
 @code{ISO646-FR1} and @code{iso-ir-25} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item NS_4551-1
+@tindex NS_4551-1@r{, aliases and source}
+@tindex ISO646-NO
+@tindex iso-ir-60
+@tindex no
 @code{ISO646-NO}, @code{iso-ir-60} and @code{no} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item NS_4551-2
+@tindex NS_4551-2@r{, aliases and source}
+@tindex ISO646-NO2
+@tindex iso-ir-61
+@tindex no2
 @code{ISO646-NO2}, @code{iso-ir-61} and @code{no2} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item NeXTSTEP
+@tindex NeXTSTEP@r{, aliases and source}
+@tindex next
 @code{next} is an alias for this charset.
 Source: Peter Svanberg - psv@@nada.kth.se.
 
 @item PT
+@tindex PT@r{, aliases and source}
+@tindex ISO646-PT
+@tindex iso-ir-16
 @code{ISO646-PT} and @code{iso-ir-16} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item PT2
+@tindex PT2@r{, aliases and source}
+@tindex ISO646-PT2
+@tindex iso-ir-84
 @code{ISO646-PT2} and @code{iso-ir-84} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item SEN_850200_B
+@tindex SEN_850200_B@r{, aliases and source}
+@tindex FI
+@tindex ISO646-FI
+@tindex ISO646-SE
+@tindex SS636127
+@tindex iso-ir-10
+@tindex se
 @code{FI}, @code{ISO646-FI}, @code{ISO646-SE}, @code{SS636127}, @code{iso-ir-10} and @code{se} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item SEN_850200_C
+@tindex SEN_850200_C@r{, aliases and source}
+@tindex ISO646-SE2
+@tindex iso-ir-11
+@tindex se2
 @code{ISO646-SE2}, @code{iso-ir-11} and @code{se2} are aliases for this charset.
 Source: ISO 2375 registry.
 
 @item T.61-7bit
+@tindex T.61-7bit@r{, aliases and source}
+@tindex iso-ir-102
 @code{iso-ir-102} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item baltic
+@tindex baltic@r{, aliases and source}
+@tindex iso-ir-179
 @code{iso-ir-179} is an alias for this charset.
 Source: ISO 2375 registry.
 &g1esc x2d56 &g2esc x2e56 &g3esc x2f56.
 
 @item greek-ccitt
+@tindex greek-ccitt@r{, aliases and source}
+@tindex iso-ir-150
 @code{iso-ir-150} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item greek7
+@tindex greek7@r{, aliases and source}
+@tindex iso-ir-88
 @code{iso-ir-88} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item greek7-old
+@tindex greek7-old@r{, aliases and source}
+@tindex iso-ir-18
 @code{iso-ir-18} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item hp-roman8
+@tindex hp-roman8@r{, aliases and source}
+@tindex r8
+@tindex roman8
 @code{r8} and @code{roman8} are aliases for this charset.
 Source: LaserJet IIP Printer User's Manual,.
 HP part no 33471-90901, Hewlet-Packard, June 1989.
 
 @item latin-greek
+@tindex latin-greek@r{, aliases and source}
+@tindex iso-ir-19
 @code{iso-ir-19} is an alias for this charset.
 Source: ISO 2375 registry.
 
 @item mac-is
+@tindex mac-is@r{, aliases and source}
 
 @item macintosh
+@tindex macintosh@r{, aliases and source}
+@tindex mac
 @code{mac} is an alias for this charset.
 Source: The Unicode Standard ver 1.0, ISBN 0-201-56788-1, Oct 1991.
 
 @item macintosh_ce
+@tindex macintosh_ce@r{, aliases and source}
+@tindex macce
 @code{macce} is an alias for this charset.
 Source: Macintosh CE fonts.
 
 @item sami
+@tindex sami@r{, aliases and source}
+@tindex iso-ir-158
+@tindex lap
+@tindex latin-lap
 @code{iso-ir-158}, @code{lap} and @code{latin-lap} are aliases for this charset.
 Source: ISO 2375 registry.
index a736b5d25171358bcc2b717195c2d0af118a6346..fb5f16ab3a7e618d8732d01e3b128b9dd0eda181 100755 (executable)
 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # Written by Brendan O'Dea <bod@compusol.com.au>
+# Available from ftp://ftp.gnu.org/gnu/help2man/
 
 use 5.004;
 use strict;
 use Getopt::Long;
+use Text::Tabs qw(expand);
 use POSIX qw(strftime setlocale LC_TIME);
 
 my $this_program = 'help2man';
-my $this_version = '1.010';
+my $this_version = '1.019';
 my $version_info = <<EOT;
 $this_program $this_version
 
@@ -41,95 +43,126 @@ my $help_info = <<EOT;
 
 Usage: $this_program [OPTION]... EXECUTABLE
 
-  --name=STRING       use `STRING' as the description for the NAME paragraph
-  --include=FILE      include material from `FILE'
-  --opt-include=FILE  include material from `FILE' if it exists
-  --output=FILE       send output to `FILE'
-  --no-info           suppress pointer to Texinfo manual
-  --help              print this help, then exit
-  --version           print $this_program program version number, then exit
+ -n, --name=STRING       use `STRING' as the description for the NAME paragraph
+ -s, --section=SECTION   use `SECTION' as the section for the man page
+ -i, --include=FILE      include material from `FILE'
+ -I, --opt-include=FILE  include material from `FILE' if it exists
+ -o, --output=FILE       send output to `FILE'
+ -N, --no-info           suppress pointer to Texinfo manual
+     --help              print this help, then exit
+     --version           print version number, then exit
 
-EXECUTABLE should accept `--help' and `version' options.
+EXECUTABLE should accept `--help' and `--version' options.
 EOT
 
-my ($include, $opt_name, $opt_include, $opt_output, $opt_no_info);
+my $section = 1;
+my ($opt_name, @opt_include, $opt_output, $opt_no_info);
 
 # Parse options.
+Getopt::Long::config('bundling');
 GetOptions (
-    'name=s'       => \$opt_name,
-    'include=s'            => \$include,
-    'opt-include=s' => \$opt_include,
-    'output=s'     => \$opt_output,
-    'no-info'      => \$opt_no_info,
-    help           => sub { print $help_info; exit },
-    version        => sub { print $version_info; exit },
+    'n|name=s'         => \$opt_name,
+    's|section=s'      => \$section,
+    'i|include=s'      => sub { push @opt_include, [ pop, 1 ] },
+    'I|opt-include=s'  => sub { push @opt_include, [ pop, 0 ] },
+    'o|output=s'       => \$opt_output,
+    'N|no-info'                => \$opt_no_info,
+    help               => sub { print $help_info; exit },
+    version            => sub { print $version_info; exit },
 ) or die $help_info;
 
 die $help_info unless @ARGV == 1;
 
 my %include = ();
-my @include = (); # to retain order
+my %append = ();
+my @include = (); # retain order given in include file
+
+# Provide replacement `quote-regex' operator for pre-5.005.
+BEGIN { eval q(sub qr { '' =~ $_[0]; $_[0] }) if $] < 5.005 }
 
 # Process include file (if given).  Format is:
 #
-# [section name]
-# verbatim text
+#   [section name]
+#   verbatim text
+#
+# or
+#
+#   /pattern/
+#   verbatim text
+#
 
-if ($include or $opt_include)
+for (@opt_include)
 {
-    if (open INC, $include || $opt_include)
+    my ($inc, $required) = @$_;
+
+    next unless -f $inc or $required;
+    die "$this_program: can't open `$inc' ($!)\n"
+       unless open INC, $inc;
+
+    my $key;
+    my $hash = \%include;
+
+    while (<INC>)
     {
-       my $sect;
+       # [section]
+       if (/^\[([^]]+)\]/)
+       {
+           $key = uc $1;
+           $key =~ s/^\s+//;
+           $key =~ s/\s+$//;
+           $hash = \%include;
+           push @include, $key unless $include{$key};
+           next;
+       }
 
-       while (<INC>)
+       # /pattern/
+       if (m!^/(.*)/([ims]*)!)
        {
-           if (/^\[([^]]+)\]/)
+           my $pat = $2 ? "(?$2)$1" : $1;
+
+           # Check pattern.
+           eval { $key = qr($pat) };
+           if ($@)
            {
-               $sect = uc $1;
-               $sect =~ s/^\s+//;
-               $sect =~ s/\s+$//;
-               next;
+               $@ =~ s/ at .*? line \d.*//;
+               die "$inc:$.:$@";
            }
 
-           # Silently ignore anything before the first
-           # section--allows for comments and revision info.
-           next unless $sect;
-
-           push @include, $sect unless $include{$sect};
-           $include{$sect} ||= '';
-           $include{$sect} .= $_;
+           $hash = \%append;
+           next;
        }
 
-       close INC;
-
-       die "$this_program: no valid information found in `$include'\n"
-           unless %include;
+       # Silently ignore anything before the first
+       # section--allows for comments and revision info.
+       next unless $key;
 
-       # Compress trailing blank lines.
-       for (keys %include)
-       {
-           $include{$_} =~ s/\n+$//;
-           $include{$_} .= "\n" unless /^NAME$/;
-       }
-    }
-    else
-    {
-       die "$this_program: can't open `$include' ($!)\n" if $include;
+       $hash->{$key} ||= '';
+       $hash->{$key} .= $_;
     }
+
+    close INC;
+
+    die "$this_program: no valid information found in `$inc'\n"
+       unless $key;
+}
+
+# Compress trailing blank lines.
+for my $hash (\(%include, %append))
+{
+    for (keys %$hash) { $hash->{$_} =~ s/\n+$/\n/ }
 }
 
 # Turn off localisation of executable's ouput.
 @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
 
-# Turn off localisation of date (for strftime)
+# Turn off localisation of date (for strftime).
 setlocale LC_TIME, 'C';
 
-# Grab help and version paragraphs from executable
-my @help = split /\n\n+/, `$ARGV[0] --help 2>/dev/null`
-    or die "$this_program: can't get `--help' info from $ARGV[0]\n";
-
-my @version = split /\n\n+/, `$ARGV[0] --version 2>/dev/null`
-    or die "$this_program: can't get `--version' info from $ARGV[0]\n";
+# Grab help and version info from executable.
+my ($help_text, $version_text) = map {
+    join '', map { s/ +$//; expand $_ } `$ARGV[0] --$_ 2>/dev/null`
+       or die "$this_program: can't get `--$_' info from $ARGV[0]\n"
+} qw(help version);
 
 my $date = strftime "%B %Y", localtime;
 (my $program = $ARGV[0]) =~ s!.*/!!;
@@ -157,16 +190,16 @@ if ($opt_output)
 #
 # and seperated from any copyright/author details by a blank line.
 
-$_ = shift @version;
+($_, $version_text) = split /\n+/, $version_text, 2;
 
-if (/^(\S+)\s+\(((?:GNU|Free)\s+[^)]+)\)\s+(.*)/ or
-    /^(\S+)\s+-\s*((?:GNU|Free)\s+\S+)\s+(.*)/)
+if (/^(\S+) +\(((?:GNU|Free) +[^)]+)\) +(.*)/ or
+    /^(\S+) +- *((?:GNU|Free) +\S+) +(.*)/)
 {
     $program = $1;
     $package = $2;
     $version = $3;
 }
-elsif (/^((?:GNU|Free)\s+)?(\S+)\s+(.*)/)
+elsif (/^((?:GNU|Free) +)?(\S+) +(.*)/)
 {
     $program = $2;
     $package = $1 ? "$1$2" : $2;
@@ -179,160 +212,241 @@ else
 
 $program =~ s!.*/!!;
 
-# no info for `info' itself
+# No info for `info' itself.
 $opt_no_info = 1 if $program eq 'info';
 
-# --name overrides --include contents
-$include{NAME} = "$program \\- $opt_name" if $opt_name;
+# --name overrides --include contents.
+$include{NAME} = "$program \\- $opt_name\n" if $opt_name;
 
-# Default (useless) NAME paragraph
-$include{NAME} ||= "$program \\- manual page for $program $version";
+# Default (useless) NAME paragraph.
+$include{NAME} ||= "$program \\- manual page for $program $version\n";
 
 # Man pages traditionally have the page title in caps.
 my $PROGRAM = uc $program;
 
-# Header.
-print <<EOT;
-.\\" DO NOT MODIFY THIS FILE!  It was generated by $this_program $this_version.
-.TH $PROGRAM 1 "$date" "$package $version" "FSF"
-.SH NAME
-$include{NAME}
-EOT
+# Extract usage clause(s) [if any] for SYNOPSIS.
+if ($help_text =~ s/^Usage:( +(\S+))(.*)((?:\n(?: {6}\1| *or: +\S).*)*)//m)
+{
+    my @syn = $2 . $3;
+
+    if ($_ = $4)
+    {
+       s/^\n//;
+       for (split /\n/) { s/^ *(or: +)?//; push @syn, $_ }
+    }
+
+    my $synopsis = '';
+    for (@syn)
+    {
+       $synopsis .= ".br\n" if $synopsis;
+       s/(\S+) *//;
+       $synopsis .= ".B $1\n";
+       s/\s+$//;
+       s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
+       s/^/\\fI/ unless s/^\\fR//;
+       $_ .= '\fR';
+       s/(\\fI)( *)/$2$1/g;
+       s/\\fI\\fR//g;
+       s/^\\fR//;
+       s/\\fI$//;
+       s/^\./\\&./;
+
+       $synopsis .= "$_\n";
+    }
+
+    $include{SYNOPSIS} ||= $synopsis;
+}
+
+# Process text, initial section is DESCRIPTION.
+my $sect = 'DESCRIPTION';
+$_ = "$help_text\n\n$version_text";
+
+# Normalise paragraph breaks.
+s/^\n+//;
+s/\n*$/\n/;
+s/\n\n+/\n\n/g;
+
+# Temporarily exchange leading dots and backslashes for tokens.
+s/^\./\x80/mg;
+s/\\/\x81/g;
 
-my $accumulate = 1;
-my @description = ();
+# Start a new paragraph (if required) for these.
+s/([^\n])\n(Report +bugs|Email +bug +reports +to|Written +by)/$1\n\n$2/g;
 
 sub convert_option;
 
-# Output converted --help information.
-for (@help)
+while (length)
 {
-    chomp;
+    # Convert some standard paragraph names.
+    if (s/^(Options|Examples): *\n//)
+    {
+       $sect = uc $1;
+       next;
+    }
 
-    if (s/^Usage:\s+\S+\s+(.*)\n?//)
+    # Copyright section
+    if (/^Copyright +[(\xa9]/)
     {
-       # Turn the usage clause into a synopsis.
-       my $synopsis = '';
-
-       do {
-           my $syn = $1;
-           $syn =~ s/(([][]|\.\.+)+)/\\fR$1\\fI/g;
-           $syn =~ s/^/\\fI/ unless $syn =~ s/^\\fR//;
-           $syn .= '\fR';
-           $syn =~ s/\\fI(\s*)\\fR/$1/g;
-
-           $synopsis .= ".br\n" unless $accumulate;
-           $synopsis .= ".B $program\n";
-           $synopsis .= "$syn\n";
-           $accumulate = 0;
-       } while s/^(?:Usage|\s*or):\s+\S+\s+(.*)\n?//;
-
-       # Include file overrides SYNOPSIS.
-       print ".SH SYNOPSIS\n", $include{SYNOPSIS} || $synopsis;
-
-       # Dump any accumulated description text.
-       print ".SH DESCRIPTION\n";
-       print @description;
-
-       # Add additional description text from include file.
-       if ($include{DESCRIPTION})
+       $sect = 'COPYRIGHT';
+       $include{$sect} ||= '';
+       $include{$sect} .= ".PP\n" if $include{$sect};
+
+       my $copy;
+       ($copy, $_) = split /\n\n/, $_, 2;
+
+       for ($copy)
        {
-           print ".PP\n" unless $include{DESCRIPTION} =~ /^\..P/;
-           print $include{DESCRIPTION};
+           # Add back newline
+           s/\n*$/\n/;
+
+           # Convert iso9959-1 copyright symbol or (c) to nroff
+           # character.
+           s/^Copyright +(?:\xa9|\([Cc]\))/Copyright \\(co/mg;
+
+           # Insert line breaks before additional copyright messages
+           # and the disclaimer.
+           s/(.)\n(Copyright |This +is +free +software)/$1\n.br\n$2/g;
+
+           # Join hyphenated lines.
+           s/([A-Za-z])-\n */$1/g;
        }
 
-       next unless $_;
+       $include{$sect} .= $copy;
+       $_ ||= '';
+       next;
     }
 
-    # Accumulate text if the synopsis has not been produced yet.
-    if ($accumulate)
+    # Catch bug report text.
+    if (/^(Report +bugs|Email +bug +reports +to) /)
     {
-       push @description, ".PP\n" if @description;
-       push @description, "$_\n";
-       next;
+       $sect = 'REPORTING BUGS';
     }
 
-    # Convert some standard paragraph names
-    if (s/^(Options|Examples):\s*\n//)
+    # Author section.
+    elsif (/^Written +by/)
     {
-       print qq(.SH \U$1\n);
-       next unless length;
+       $sect = 'AUTHOR';
     }
 
-    # Catch bug report text.
-    if (/^Report bugs |^Email bug reports to /)
+    # Examples, indicated by an indented leading $, % or > are
+    # rendered in a constant width font.
+    if (/^( +)([\$\%>] )\S/)
     {
-       print qq(.SH "REPORTING BUGS"\n$_\n);
+       my $indent = $1;
+       my $prefix = $2;
+       my $break = '.IP';
+       $include{$sect} ||= '';
+       while (s/^$indent\Q$prefix\E(\S.*)\n*//)
+       {
+           $include{$sect} .= "$break\n\\f(CW$prefix$1\\fR\n";
+           $break = '.br';
+       }
+
        next;
     }
 
-    # Special case for tar 1.12: --label=NAME\nPATTERN.
-    s{(\n[ \t]*)(-V,[ \t]+--label=NAME.*)\n[ \t]+PATTERN[ \t]+}
-     {$1$2$1\\&...=PATTERN };
+    my $matched = '';
+    $include{$sect} ||= '';
 
-    # Convert options.
-    s/((?:^|,)\s+)(-[][\w=-]+|\\&\S+)/$1 . convert_option $2/mge;
+    # Sub-sections have a trailing colon and the second line indented.
+    if (s/^(\S.*:) *\n / /)
+    {
+       $matched .= $& if %append;
+       $include{$sect} .= qq(.SS "$1"\n);
+    }
 
-    # Option subsections have second line indented.
-    print qq(.SS "$1"\n) if s/^(\S.*)\n(\s)/$2/;
+    my $indent = 0;
+    my $content = '';
 
-    my $ind = 0;
-    for (split /\n/)
+    # Option with description.
+    if (s/^( {1,10}([+-]\S.*?))(?:(  +)|\n( {20,}))(\S.*)\n//)
     {
-       # indented paragraph
-       if (/^\s/)
+       $matched .= $& if %append;
+       $indent = length ($4 || "$1$3");
+       $content = ".TP\n\x82$2\n\x82$5\n";
+       unless ($4)
        {
-           # Join continued lines when indented to the same point as
-           # text following at least two spaces on the previous line.
-           if ($ind > 0 and /^ {$ind}\S/)
-           {
-               s/^\s+//;
-               print "$_\n" if $_;
-           }
-           else
-           {
-               # use the words(s) before two or more spaces for the
-               # tag
-               s/^(\s+)//;
-               $ind = length $1;
-
-               if (s/(\s\s+)/\n/)
-               {
-                   $ind += (length $1) + index $_, "\n";
-               }
-               else
-               {
-                   $ind = 0;
-               }
-
-               print ".TP\n$_\n" if $_;
-           }
+           # Indent may be different on second line.
+           $indent = length $& if /^ {20,}/;
        }
-       # Anything else.
-       else
+    }
+
+    # Option without description.
+    elsif (s/^ {1,10}([+-]\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $content = ".HP\n\x82$1\n";
+       $indent = 80; # not continued
+    }
+
+    # Indented paragraph with tag.
+    elsif (s/^( +(\S.*?)  +)(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length $1;
+       $content = ".TP\n\x82$2\n\x82$3\n";
+    }
+
+    # Indented paragraph.
+    elsif (s/^( +)(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $indent = length $1;
+       $content = ".IP\n\x82$2\n";
+    }
+
+    # Left justified paragraph.
+    else
+    {
+       s/(.*)\n//;
+       $matched .= $& if %append;
+       $content = ".PP\n" if $include{$sect};
+       $content .= "$1\n";
+    }
+
+    # Append continuations.
+    while (s/^ {$indent}(\S.*)\n//)
+    {
+       $matched .= $& if %append;
+       $content .= "\x82$1\n"
+    }
+
+    # Move to next paragraph.
+    s/^\n+//;
+
+    for ($content)
+    {
+       # Leading dot protection.
+       s/\x82\./\x80/g;
+       s/\x82//g;
+
+       # Convert options.
+       s/(^| )(-[][\w=-]+)/$1 . convert_option $2/mge;
+    }
+
+    # Check if matched paragraph contains /pat/.
+    if (%append)
+    {
+       for my $pat (keys %append)
        {
-           print ".PP\n" unless $ind < 0;
-           print "$_\n";
-           $ind = -1;
+           if ($matched =~ $pat)
+           {
+               $content .= ".PP\n" unless $append{$pat} =~ /^\./;
+               $content .= $append{$pat};
+           }
        }
     }
-}
 
-# Print any include items other than the ones we have already dealt
-# with.
-for (@include)
-{
-    print qq(.SH "$_"\n$include{$_})
-       unless /^(NAME|SYNOPSIS|DESCRIPTION|SEE ALSO)$/;
+    $include{$sect} .= $content;
 }
 
 # Refer to the real documentation.
-if ($include{'SEE ALSO'} or !$opt_no_info)
+unless ($opt_no_info)
 {
-    print qq(.SH "SEE ALSO"\n);
-    print $include{'SEE ALSO'}, ".PP\n" if $include{'SEE ALSO'};
-
-    print <<EOT unless $opt_no_info;
+    $sect = 'SEE ALSO';
+    $include{$sect} ||= '';
+    $include{$sect} .= ".PP\n" if $include{$sect};
+    $include{$sect} .= <<EOT;
 The full documentation for
 .B $program
 is maintained as a Texinfo manual.  If the
@@ -347,27 +461,33 @@ should give you access to the complete manual.
 EOT
 }
 
-# Output converted --version information.
-for (@version)
-{
-    chomp;
-
-    # Join hyphenated lines.
-    s/([A-Za-z])-\n */$1/g;
-
-    # Convert copyright symbol or (c) to nroff character.
-    s/Copyright\s+(?:\xa9|\([Cc]\))/Copyright \\(co/g;
-
-    # Insert appropriate headings for copyright and author.
-    if    (/^Copyright\s\\/) { print ".SH COPYRIGHT\n" }
-    elsif (/^Written\s+by/)  { print ".SH AUTHOR\n" }
-    else                    { print ".PP\n"; }
+# Output header.
+print <<EOT;
+.\\" DO NOT MODIFY THIS FILE!  It was generated by $this_program $this_version.
+.TH $PROGRAM "$section" "$date" "$package $version" FSF
+EOT
 
-    # Insert line breaks before additional copyright messages and the
-    # disclaimer.
-    s/(.)\n(Copyright\s|This is free software)/$1\n.br\n$2/g;
+# Section ordering.
+my @pre = qw(NAME SYNOPSIS DESCRIPTION OPTIONS EXAMPLES);
+my @post = ('AUTHOR', 'REPORTING BUGS', 'COPYRIGHT', 'SEE ALSO');
+my $filter = join '|', @pre, @post;
 
-    print "$_\n";
+# Output content.
+for (@pre, (grep ! /^($filter)$/o, @include), @post)
+{
+    if ($include{$_})
+    {
+       my $quote = /\W/ ? '"' : '';
+       print ".SH $quote$_$quote\n";
+       
+       for ($include{$_})
+       {
+           # Replace leading dot an backslash tokens.
+           s/\x80/\\&./g;
+           s/\x81/\\e/g;
+           print;
+       }
+    }
 }
 
 exit;
@@ -376,15 +496,15 @@ exit;
 # embolden.  Option arguments get italicised.
 sub convert_option
 {
-    my $option = '\fB' . shift;
+    local $_ = '\fB' . shift;
 
-    $option =~ s/-/\\-/g;
-    unless ($option =~ s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
+    s/-/\\-/g;
+    unless (s/\[=(.*)\]$/\\fR[=\\fI$1\\fR]/)
     {
-       $option =~ s/=(.)/\\fR=\\fI$1/;
-       $option =~ s/ (.)/ \\fI$1/;
-       $option .= '\fR';
+       s/=(.)/\\fR=\\fI$1/;
+       s/ (.)/ \\fI$1/;
+       $_ .= '\fR';
     }
 
-    $option;
+    $_;
 }
index 320331487111ee3e90474cc8b9851014a496e171..1a3741394269e8f2ecfca8e4b917cb6f46b93556 100644 (file)
@@ -1,6 +1,7 @@
-This is Info file recode.info, produced by Makeinfo version 1.68 from
-the input file recode.texi.
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
 
+INFO-DIR-SECTION Internationalization and character sets
 START-INFO-DIR-ENTRY
 * recode: (recode).     Conversion between character sets and surfaces.
 END-INFO-DIR-ENTRY
@@ -27,78 +28,102 @@ translation approved by the Foundation.
 
 \1f
 Indirect:
-recode.info-1: 1083
-recode.info-2: 50085
-recode.info-3: 96346
-recode.info-4: 144563
-recode.info-5: 189680
+recode.info-1: 1116
+recode.info-2: 50290
+recode.info-3: 98137
+recode.info-4: 146382
+recode.info-5: 191635
+recode.info-6: 215602
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1083
-Node: Tutorial\7f5119
-Node: Introduction\7f9355
-Node: Charset overview\7f13381
-Node: Surface overview\7f14601
-Node: Contributing\7f16068
-Node: Invoking recode\7f18469
-Node: Synopsis\7f19376
-Node: Requests\7f22106
-Node: Listings\7f28760
-Node: Recoding\7f38681
-Node: Reversibility\7f41492
-Node: Sequencing\7f50085
-Node: Mixed\7f52473
-Node: Emacs\7f55855
-Node: Library\7f56812
-Node: Outer level\7f58165
-Node: Request level\7f62436
-Node: Task level\7f72833
-Node: Charset level\7f83184
-Node: Errors\7f84021
-Node: Universal\7f89314
-Node: UCS-2\7f92717
-Node: UCS-4\7f95217
-Node: UTF-7\7f95754
-Node: UTF-8\7f96346
-Node: UTF-16\7f100642
-Node: count-characters\7f101787
-Node: dump-with-names\7f102455
-Node: Tabular\7f105002
-Node: ASCII misc\7f127064
-Node: ASCII\7f127428
-Node: ISO 8859\7f128244
-Node: ASCII-BS\7f130539
-Node: flat\7f132373
-Node: IBM and MS\7f133041
-Node: EBCDIC\7f133614
-Node: IBM-PC\7f135723
-Node: Icon-QNX\7f137997
-Node: CDC\7f138419
-Node: Display Code\7f140120
-Node: CDC-NOS\7f142607
-Node: Bang-Bang\7f144563
-Node: Micros\7f146488
-Node: Apple-Mac\7f146869
-Node: AtariST\7f148917
-Node: Miscellaneous\7f149900
-Node: HTML\7f150648
-Node: LaTeX\7f154891
-Node: Texinfo\7f155661
-Node: African\7f156431
-Node: Cyrillic\7f157779
-Node: Texte\7f159186
-Node: Mule\7f164389
-Node: Surfaces\7f166689
-Node: Permutations\7f169201
-Node: End lines\7f170039
-Node: MIME\7f172239
-Node: Dump\7f173349
-Node: Debugging\7f177529
-Node: Internals\7f179985
-Node: Main flow\7f181199
-Node: New charsets\7f184454
-Node: New surfaces\7f188989
-Node: Design\7f189680
+Node: Top\7f1116
+Node: Tutorial\7f5239
+Node: Introduction\7f9475
+Node: Charset overview\7f13501
+Node: Surface overview\7f14721
+Node: Contributing\7f16188
+Ref: Contributing-Footnote-1\7f18438
+Node: Invoking recode\7f18572
+Node: Synopsis\7f19479
+Ref: Synopsis-Footnote-1\7f21923
+Node: Requests\7f22222
+Ref: Requests-Footnote-1\7f28203
+Ref: Requests-Footnote-2\7f28270
+Ref: Requests-Footnote-3\7f28448
+Node: Listings\7f28907
+Node: Recoding\7f38826
+Node: Reversibility\7f41646
+Ref: Reversibility-Footnote-1\7f50153
+Node: Sequencing\7f50290
+Node: Mixed\7f52731
+Node: Emacs\7f56119
+Node: Library\7f57080
+Node: Outer level\7f58433
+Node: Request level\7f63958
+Node: Task level\7f74450
+Node: Charset level\7f84893
+Node: Errors\7f85730
+Ref: Errors-Footnote-1\7f90588
+Ref: Errors-Footnote-2\7f90702
+Node: Universal\7f91063
+Ref: Universal-Footnote-1\7f94198
+Ref: Universal-Footnote-2\7f94266
+Node: UCS-2\7f94479
+Node: UCS-4\7f97008
+Node: UTF-7\7f97545
+Node: UTF-8\7f98137
+Node: UTF-16\7f102439
+Node: count-characters\7f103584
+Node: dump-with-names\7f104252
+Node: Tabular\7f106805
+Node: ASCII misc\7f128867
+Node: ASCII\7f129229
+Node: ISO 8859\7f130045
+Node: ASCII-BS\7f132339
+Node: flat\7f134173
+Node: IBM and MS\7f134841
+Node: EBCDIC\7f135413
+Node: IBM-PC\7f137522
+Ref: IBM-PC-Footnote-1\7f139648
+Node: Icon-QNX\7f139806
+Node: CDC\7f140228
+Node: Display Code\7f141929
+Ref: Display Code-Footnote-1\7f144220
+Node: CDC-NOS\7f144425
+Node: Bang-Bang\7f146382
+Node: Micros\7f148306
+Node: Apple-Mac\7f148688
+Node: AtariST\7f150736
+Node: Miscellaneous\7f151719
+Node: HTML\7f152469
+Node: LaTeX\7f156707
+Node: Texinfo\7f157476
+Node: African\7f158246
+Node: Cyrillic\7f159594
+Node: Texte\7f161001
+Ref: Texte-Footnote-1\7f165560
+Ref: Texte-Footnote-2\7f165640
+Ref: Texte-Footnote-3\7f166115
+Node: Mule\7f166212
+Ref: Mule-Footnote-1\7f168001
+Node: Surfaces\7f168520
+Ref: Surfaces-Footnote-1\7f170933
+Node: Permutations\7f171039
+Node: End lines\7f171877
+Node: MIME\7f174077
+Node: Dump\7f175261
+Node: Debugging\7f179453
+Node: Internals\7f181908
+Node: Main flow\7f183144
+Ref: Main flow-Footnote-1\7f186304
+Node: New charsets\7f186409
+Node: New surfaces\7f190944
+Node: Design\7f191635
+Ref: Design-Footnote-1\7f200858
+Node: Concept Index\7f200962
+Node: Option Index\7f210094
+Node: Library Index\7f212175
+Node: Charset and Surface Index\7f215602
 \1f
 End Tag Table
index 5966089985568ef032fe727bd1e1eefe51e47a85..118939cc69271e7e686c541ca8975bea3c4fee56 100644 (file)
@@ -1,6 +1,7 @@
-This is Info file recode.info, produced by Makeinfo version 1.68 from
-the input file recode.texi.
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
 
+INFO-DIR-SECTION Internationalization and character sets
 START-INFO-DIR-ENTRY
 * recode: (recode).     Conversion between character sets and surfaces.
 END-INFO-DIR-ENTRY
@@ -39,7 +40,7 @@ and is able to convert files between almost any pair.  Most RFC 1345
 character sets are supported.  The `recode' program is a handy
 front-end to the library.
 
-   The current `recode' release is 3.5.
+   The current `recode' release is 3.5a.
 
 * Menu:
 
@@ -56,8 +57,13 @@ front-end to the library.
 * Miscellaneous::       Various other charsets
 * Surfaces::            All about surfaces
 * Internals::           Internal aspects
+* Concept Index::
+* Option Index::
+* Library Index::
+* Charset and Surface Index::
 
- -- The Detailed Node Listing --
+
+ --- The Detailed Node Listing ---
 
 Terminology and purpose
 
@@ -98,7 +104,7 @@ ASCII and some derivatives
 
 * ASCII::               Usual ASCII
 * ISO 8859::            ASCII extended by Latin Alphabets
-* ASCII-BS::            ASCII 7-bits, `BS' to overstrike
+* ASCII-BS::            ASCII 7-bits, BS to overstrike
 * flat::                ASCII without diacritics nor underline
 
 Some IBM or Microsoft charsets
@@ -111,7 +117,7 @@ Charsets for CDC machines
 
 * Display Code::        Control Data's Display Code
 * CDC-NOS::             ASCII 6/12 from NOS
-* Bang-Bang::           ASCII "bang bang"
+* Bang-Bang::           ASCII ``bang bang''
 
 Other micro-computer charsets
 
@@ -163,8 +169,8 @@ intuition....
      software and sometimes it is a user using Mac software.  I myself
      am on a SPARC Solaris machine.
 
-   Your situation is similar to mine, except that I *often* receive
-email needing recoding, that is, much more than *occasionally*!  The
+   Your situation is similar to mine, except that I _often_ receive
+email needing recoding, that is, much more than _occasionally_!  The
 usual recodings I do are Mac to Latin-1, IBM page codes to Latin-1,
 Easy-French to Latin-1, remove Quoted-Printable, remove Base64.  These
 are so frequent that I made myself a few two-keystroke Emacs commands
@@ -172,7 +178,7 @@ to filter the Emacs region.  This is very convenient for me.  I also
 resort to many other email conversions, yet more rarely than the
 frequent cases above.
 
-     It *seems* like this should be doable using `recode'.  However,
+     It _seems_ like this should be doable using `recode'.  However,
      when I try something like `grecode mac macfile.txt' I get nothing
      out--no error, no output, nothing.
 
@@ -266,10 +272,10 @@ characters on the other side.  Codes are usually taken from a set of
 consecutive small integers, starting at 0.  Some characters have a
 graphical appearance (glyph) or displayable effect, others have special
 uses like, for example, to control devices or to interact with
-neighbouring codes to specify them more precisely.  So, a *charset* is
+neighbouring codes to specify them more precisely.  So, a _charset_ is
 roughly one of those tables, giving a meaning to each of the codes from
 the set of allowable values.  MIME also uses the term charset with
-approximately the same meaning.  It does *not* exactly corresponds to
+approximately the same meaning.  It does _not_ exactly corresponds to
 what ISO calls a "coded character set", that is, a set of characters
 with an encoding for them.  An coded character set does not necessarily
 use all available code positions, while a MIME charset usually tries to
@@ -305,7 +311,7 @@ single input file.  For example, there is no surface which currently
 addresses the problem of how lines are blocked into physical records,
 when the blocking information is added as binary markers or counters
 within files.  So, `recode' should be given textual streams which are
-rather *pure*.
+rather _pure_.
 
    This tool pays special attention to superimposition of diacritics
 for some French representations.  This orientation is mostly
@@ -333,7 +339,7 @@ which is described by RFC 1345 tables.  *Note Tabular::.  The `recode'
 library also handles some charsets in some specialised ways.  These are:
 
    * 6-bit charsets based on CDC display code: 6/12 code from NOS;
-     bang-bang code from Universit'e de Montr'eal;
+     bang-bang code from Universite' de Montre'al;
 
    * 7-bit ASCII: without any diacritics, or else: using backspace for
      overstriking; Unisys' Icon convention; TeX/LaTeX coding; easy
@@ -406,7 +412,7 @@ contributions going beyond a few lines of code here and there, the FSF
 definitely requires employer disclaimers and copyright assignments in
 writing.
 
-   When you contribute something to `recode', *please* explain what it
+   When you contribute something to `recode', _please_ explain what it
 is about.  Do not take for granted that I know those charsets which are
 familiar to you.  Once again, I'm no expert, and you have to help me.
 Your explanations could well find their way into this documentation,
@@ -421,17 +427,16 @@ somewhere when time comes to make a new release, about what would go in
 it and what would go in the next.
 
    Please send suggestions, documentation errors and bug reports to
-<recode-bugs@iro.umontreal.ca> or, if you prefer, directly to Franc,ois
-Pinard(2).  Do not be afraid to report details, because this program is
-the mere aggregation of hundreds of details.
+<recode-bugs@iro.umontreal.ca> or, if you prefer, directly to
+<pinard@iro.umontreal.ca>, Franc,ois Pinard.  Do not be afraid to
+report details, because this program is the mere aggregation of
+hundreds of details.
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) I'm not prone at accepting a charset you just invented, and
 which nobody uses yet: convince your friends and community first!
 
-   (2) Use <pinard@iro.umontreal.ca> to reach me
-
 \1f
 File: recode.info,  Node: Invoking recode,  Next: Library,  Prev: Introduction,  Up: Top
 
@@ -473,8 +478,8 @@ be given to an optional CHARSET parameter.  *Note Listings::.
    In other calls, the first parameter (REQUEST) always explains which
 transformations are expected on the files.  There are many variations to
 the aspect of this parameter.  We will discuss more complex situations
-later (*note Requests::.), but for many simple cases, this parameter
-merely looks like(1):
+later (*note Requests::), but for many simple cases, this parameter
+merely looks like this(1):
 
      BEFORE..AFTER
 
@@ -503,7 +508,7 @@ not be altered.  Let us make an example to illustrate this point.
 Suppose that someone has a file named `datum.txt', which is almost a
 TeX file, except that diacriticised characters are written using
 Latin-1.  To complete the recoding of the diacriticised characters
-*only* and produce a file `datum.tex', without destroying the original,
+_only_ and produce a file `datum.tex', without destroying the original,
 one could do:
 
      cp -p datum.txt datum.tex
@@ -517,7 +522,7 @@ neatly:
    This example also shows that `l1' could be used instead of
 `Latin-1'; charset names often have such aliases.
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) In previous versions or `recode', a single colon `:' was used
 instead of the two dots `..' for separating charsets, but this was
@@ -541,10 +546,10 @@ charset names are currently limited to alphabetic letters (upper or
 lower case), digits, hyphens, underlines, periods, colons or round
 parentheses.
 
-   The complete syntax for allowable REQUEST allows for unusual things,
+   The complete syntax for a valid REQUEST allows for unusual things,
 which might surprise at first.  (Do not pay too much attention to these
-facilities on first reading.)  For example, REQUEST may also contain
-intermediary charsets, like in:
+facilities on first reading.)  For example, REQUEST may also contain
+intermediate charsets, like in the following example:
 
      BEFORE..INTERIM1..INTERIM2..AFTER
 
@@ -570,11 +575,11 @@ following one.  For example, the two following requests are equivalent:
 
 In this example, the charset input for any recoding sub-request is
 identical to the charset output by the preceding sub-request.  But it
-does not have to be in the general case.  One might wonder what would
-be the meaning of declaring the charset input for a recoding
+does not have to be so in the general case.  One might wonder what
+would be the meaning of declaring the charset input for a recoding
 sub-request of being of different nature than the charset output by a
-preceding sub-request, when recodings are chained in this way.  These
-strange usages might have a meaning and be useful for the `recode'
+preceding sub-request, when recodings are chained in this way.  Such a
+strange usage might have a meaning and be useful for the `recode'
 expert, but they are quite uncommon in practice.
 
    More useful is the distinction between the concept of charset, and
@@ -595,13 +600,13 @@ should be removed.  The next step will be to translate the codes from
 charset BEFORE to charset AFTER, prior to applying SURFACE3 over the
 result.
 
-   Some charsets have one or more *implied* surfaces.  In this case, the
+   Some charsets have one or more _implied_ surfaces.  In this case, the
 implied surfaces are automatically handled merely by naming the charset,
 without any explicit surface to qualify it.  Let's take an example to
 illustrate this feature.  The request `pc..l1' will indeed decode MS-DOS
 end of lines prior to converting IBM-PC codes to Latin-1, because `pc'
 is the name of a charset(1) which has `CR-LF' for its usual surface.
-The request `pc/..l1' will *not* decode end of lines, since the slash
+The request `pc/..l1' will _not_ decode end of lines, since the slash
 introduces surfaces, and even if the surface list is empty, it
 effectively defeats the automatic removal of surfaces for this charset.
 So, empty surfaces are useful, indeed!
@@ -632,11 +637,11 @@ BEFORE charset.(2)
 
    When a charset name is omitted or left empty, the value of the
 `DEFAULT_CHARSET' variable in the environment is used instead.  If this
-variable is not defined, the `recode' library uses an *usual charset*
+variable is not defined, the `recode' library uses the "usual charset"
 which is installation dependent.  When this variable is defined but has
-an empty value, charset names may just not be omitted.  Unless overriden
-when `recode' was installed, this usual charset is `Latin-1' for Unix
-systems or `IBM-PC' for MS-DOS machines.
+an empty value, charset names may not be omitted.  Unless overriden
+when `recode' was installed, the usual charset is `Latin-1' for Unix
+systems or `IBM-PC' for MS-DOS/MS-Windows machines.
 
    If the charset name is omitted but followed by surfaces, the surfaces
 then qualify the usual or default charset.  For example, the request
@@ -646,20 +651,20 @@ text(3).
    The allowable values for BEFORE or AFTER charsets, and various
 surfaces, are described in the remainder of this document.
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) More precisely, `pc' is an alias for the charset `IBM-PC'.
 
    (2) Both BEFORE and AFTER may be omitted, in which case the double
-dot separator may not.  This would not be very meaningful, as the
-recoding reduces to a mere copy in that case.
+dot separator is mandatory.  This is not very useful, as the recoding
+reduces to a mere copy in that case.
 
    (3) MS-DOS is one of those systems for which the default charset has
 implied surfaces, `CR-LF' here.  Such surfaces are automatically
 removed or applied whenever the default charset is read or written,
 exactly as it would go for any other charset.  In the example above, on
-such systems, the hexadecimal surface would then *replace* the implied
-surfaces.  For *adding* an hexadecimal surface without removing any,
+such systems, the hexadecimal surface would then _replace_ the implied
+surfaces.  For _adding_ an hexadecimal surface without removing any,
 one should write the request as `/../x'.
 
 \1f
@@ -743,7 +748,7 @@ are:
           IBM865 865 cp865 ibm865
 
      You can give more than one clue at once, to restrict the list
-     further.  Suppose you have *also* guessed that code 211 of the
+     further.  Suppose you have _also_ guessed that code 211 of the
      unknown charset represents an upper case `E' with diaeresis, that
      is, code 203 in the usual charset.  By requesting:
 
@@ -778,25 +783,25 @@ are:
      which, of course, is identical to the result of the first example,
      since the code 142 for the Macintosh is a small `e' with acute.
 
-     More formally, option `-k' lists all possible *before* charsets
-     for the *after* charset given as the sole non-option argument to
+     More formally, option `-k' lists all possible _before_ charsets
+     for the _after_ charset given as the sole non-option argument to
      `recode', but subject to restrictions given in PAIRS.  If there is
-     no non-option argument, the *after* charset is taken to be the
+     no non-option argument, the _after_ charset is taken to be the
      default charset for this `recode'.
 
      The restrictions are given as a comma separated list of pairs,
      each pair consisting of two numbers separated by a colon.  The
      numbers are taken as decimal when the initial digit is between `1'
      and `9'; `0x' starts an hexadecimal number, or else `0' starts an
-     octal number.  The first number is a code in any *before* charset,
-     while the second number is a code in the specified *after* charset.
+     octal number.  The first number is a code in any _before_ charset,
+     while the second number is a code in the specified _after_ charset.
      If the first number would not be transformed into the second
-     number by recoding from some *before* charset to the *after*
-     charset, then this *before* charset is rejected.  A *before*
+     number by recoding from some _before_ charset to the _after_
+     charset, then this _before_ charset is rejected.  A _before_
      charset is listed only if it is not rejected by any pair.  The
-     program will only test those *before* charsets having a tabular
-     style internal description (*note Tabular::.), so should be the
-     selected *after* charset.
+     program will only test those _before_ charsets having a tabular
+     style internal description (*note Tabular::), so should be the
+     selected _after_ charset.
 
      The produced list is in fact a subset of the list produced by the
      option `-l'.  As for option `-l', the non-option argument is
@@ -821,12 +826,12 @@ are:
      There might be one non-option argument, in which case it is
      interpreted as a charset name, possibly abbreviated to any non
      ambiguous prefix.  This particular usage of the `-l' option is
-     obeyed *only* for charsets having a tabular style internal
-     description (*note Tabular::.).  Even if most charsets have this
-     property, some do not, then option `-l' cannot be used to detail
-     these particular charsets.  For knowing if a particular charset
-     can be listed this way, you should merely try and see if this
-     works.  The FORMAT value of the option is a keyword from the
+     obeyed _only_ for charsets having a tabular style internal
+     description (*note Tabular::).  Even if most charsets have this
+     property, some do not, and the option `-l' cannot be used to
+     detail these particular charsets.  For knowing if a particular
+     charset can be listed this way, you should merely try and see if
+     this works.  The FORMAT value of the option is a keyword from the
      following list.  Keywords may be abbreviated by dropping suffix
      letters, and even reduced to the first letter only:
 
@@ -865,8 +870,8 @@ are:
      This option is a maintainer tool for evaluating the redundancy of
      those charsets, in `recode', which are internally represented by
      an `UCS-2' data table.  After the listing has been produced, the
-     program exits without doing any recoding.  The output of is meant
-     to be sorted, like this: `recode -T | sort'.  The option triggers
+     program exits without doing any recoding.  The output is meant to
+     be sorted, like this: `recode -T | sort'.  The option triggers
      `recode' into comparing all pairs of charsets, seeking those which
      are subsets of others.  The concept and results are better
      explained through a few examples.  Consider these three sample
@@ -903,7 +908,7 @@ grain control over the recoding operation themselves.
 
 `-g'
 `--graphics'
-     This option is only meaningful while getting *out* of the `IBM-PC'
+     This option is only meaningful while getting _out_ of the `IBM-PC'
      charset.  In this charset, characters 176 to 223 are used for
      constructing rulers and boxes, using simple or double horizontal or
      vertical lines.  This option forces the automatic selection of
@@ -913,7 +918,7 @@ grain control over the recoding operation themselves.
 
 `-t'
 `--touch'
-     The *touch* option is meaningful only when files are recoded over
+     The _touch_ option is meaningful only when files are recoded over
      themselves.  Without it, the time-stamps associated with files are
      preserved, to reflect the fact that changing the code of a file
      does not really alter its informational contents.  When the user
@@ -922,19 +927,19 @@ grain control over the recoding operation themselves.
 
 `-v'
 `--verbose'
-     Before doing any recoding, the program will first print on `stderr'
-     the list of all intermediate charsets planned for recoding,
-     starting with the BEFORE charset and ending with the AFTER charset.
-     It also prints an indication of the recoding quality, as one of
-     the word `reversible', `one to one', `one to many', `many to one'
-     or `many to many'.
+     Before doing any recoding, the program will first print on the
+     `stderr' stream the list of all intermediate charsets planned for
+     recoding, starting with the BEFORE charset and ending with the
+     AFTER charset.  It also prints an indication of the recoding
+     quality, as one of the word `reversible', `one to one', `one to
+     many', `many to one' or `many to many'.
 
      This information will appear once or twice.  It is shown a second
      time only when the optimisation and step merging phase succeeds in
      replacing many single steps by a new one.
 
      This option also has a second effect.  The program will print on
-     `stderr' one message per FILE recoded, so to keep the user
+     `stderr' one message per recoded FILE, so as to keep the user
      informed of the progress of its command.
 
      An easy way to know beforehand the sequence or quality of a
@@ -942,8 +947,8 @@ grain control over the recoding operation themselves.
 
           recode -v BEFORE..AFTER < /dev/null
 
-     also using the fact that, in `recode', an empty input file produces
-     an empty output file.
+     using the fact that, in `recode', an empty input file produces an
+     empty output file.
 
 `-x CHARSET'
 `--ignore=CHARSET'
@@ -951,7 +956,7 @@ grain control over the recoding operation themselves.
      the specified CHARSET, so disabling any single step using this
      charset as a start or end point.  This may be used when the user
      wants to force `recode' into using an alternate recoding path (yet
-     using chained requests offers a finer control, *note Requests::.).
+     using chained requests offers a finer control, *note Requests::).
 
      CHARSET may be abbreviated to any unambiguous prefix.
 
@@ -994,7 +999,7 @@ Reversibility issues
 `--silent'
      This option has the sole purpose of inhibiting warning messages
      about irreversible recodings, and other such diagnostics.  It has
-     no other effect, in particular, it does *not* prevent recodings to
+     no other effect, in particular, it does _not_ prevent recodings to
      be aborted or `recode' to return a non-zero exit status when
      irreversible recodings are met.
 
@@ -1012,13 +1017,13 @@ Reversibility issues
      of counter-measure.
 
      Using `-s' without `-f' might render the `recode' program very
-     susceptible to the slighest file abnormalities.  Despite it might
-     be irritating to some users, such paranoia is sometimes wanted and
-     useful.
+     susceptible to the slighest file abnormalities.  Despite the fact
+     that it might be irritating to some users, such paranoia is
+     sometimes wanted and useful.
 
-   Even if `recode' tries hard at keeping the recodings reversible, you
+   Even if `recode' tries hard to keep the recodings reversible, you
 should not develop an unconditional confidence in its ability to do so.
-You *ought* to keep only reasonable expectations about reverse
+You _ought_ to keep only reasonable expectations about reverse
 recodings.  In particular, consider:
 
    * Most transformations are fully reversible for all inputs, but lose
@@ -1069,7 +1074,7 @@ section sign, which is 167 in `Latin-1'.  `recode' cannot reciprocate
 short permutation loop.
 
    As a consequence of this map filling, `recode' may sometimes produce
-*funny* characters.  They may look annoying, they are nevertheless
+_funny_ characters.  They may look annoying, they are nevertheless
 helpful when one changes his (her) mind and wants to revert to the prior
 recoding.  If you cannot stand these, use option `-s', which asks for a
 very strict recoding.
@@ -1078,44 +1083,44 @@ very strict recoding.
 some users wrongly interpreted as bugs.  Here are two examples.
 
   1. In some cases, `recode' seems to copy a file without recoding it.
-     But in fact, it does.  Consider you requested:
+     But in fact, it does.  Consider a request:
 
           recode l1..us < File-Latin1 > File-ASCII
           cmp File-Latin1 File-ASCII
 
      then `cmp' will not report any difference.  This is quite normal.
-     Latin-1 gets correctly recoded to ASCII for charsets commonalities
-     (which are the first 128 characters, in this case).  The remaining
-     last 128 Latin-1 characters have no ASCII correspondent.  Instead
-     of losing them, recode elects to map them to unspecified
-     characters of ASCII, so making the recoding reversible.  The
-     simplest way of achieving this is merely to keep those last 128
-     characters unchanged.  The overall effect is copying the file
-     verbatim.
+     `Latin-1' gets correctly recoded to ASCII for charsets
+     commonalities (which are the first 128 characters, in this case).
+     The remaining last 128 `Latin-1' characters have no ASCII
+     correspondent.  Instead of losing them, `recode' elects to map
+     them to unspecified characters of ASCII, so making the recoding
+     reversible.  The simplest way of achieving this is merely to keep
+     those last 128 characters unchanged.  The overall effect is
+     copying the file verbatim.
 
      If you feel this behaviour is too generous and if you do not wish
      to care about reversibility, simply use option `-s'.  By doing so,
-     `recode' will strictly map only those Latin-1 characters which have
-     an ASCII equivalent, and will merely drop those which do not.
+     `recode' will strictly map only those `Latin-1' characters which
+     have an ASCII equivalent, and will merely drop those which do not.
      Then, there is more chance that you will observe a difference
      between the input and the output file.
 
   2. Recoding the wrong way could sometimes give the false impression
-     that recoding has *almost* been done properly.  Consider you
-     request:
+     that recoding has _almost_ been done properly.  Consider the
+     requests:
 
           recode 437..l1 < File-Latin1 > Temp1
           recode 437..l1 < Temp1 > Temp2
 
      so declaring wrongly `File-Latin1' to be an IBM-PC file, and
-     recoding to Latin1.  This is surely ill defined and not meaningful.
-     Yet, if you repeat this step a second time, you might notice that
-     many (not all) characters in `Temp2' are identical to those in
-     `File-Latin1'.  A few people try to discover how `recode' works by
-     experimenting a little at random, rather than reading and
-     understanding the documentation; such results are surely confusing,
-     as they provide a feel to those people that they understood
-     something.
+     recoding to `Latin-1'.  This is surely ill defined and not
+     meaningful.  Yet, if you repeat this step a second time, you might
+     notice that many (not all) characters in `Temp2' are identical to
+     those in `File-Latin1'.  Sometimes, people try to discover how
+     `recode' works by experimenting a little at random, rather than
+     reading and understanding the documentation; results such as this
+     are surely confusing, as they provide those people with a false
+     feeling that they understood something.
 
      Reversible codings have this property that, if applied several
      times in the same direction, they will eventually bring any
@@ -1129,8 +1134,7 @@ some users wrongly interpreted as bugs.  Here are two examples.
      end, recoding six times in the same direction would recover all
      characters in cycles of length 1, 2, 3 or 6.
 
-
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) There are still some cases of ambiguous output which are rather
 difficult to detect, and for which the protection is not active.
index 662652886fef37be334a8320d38a4e416732d684..8bc0ced1cb27d86efd8d7b62dfe064294a9590ca 100644 (file)
@@ -1,6 +1,7 @@
-This is Info file recode.info, produced by Makeinfo version 1.68 from
-the input file recode.texi.
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
 
+INFO-DIR-SECTION Internationalization and character sets
 START-INFO-DIR-ENTRY
 * recode: (recode).     Conversion between character sets and surfaces.
 END-INFO-DIR-ENTRY
@@ -71,12 +72,12 @@ explained below.
      call.  All copies of the program operate in parallel.  This is the
      default behaviour in filter mode.  If this option is used when
      files are recoded over themselves, this should also save disk
-     space because some temporary files might not be needed, at cost of
-     more system overhead.
+     space because some temporary files might not be needed, at the
+     cost of more system overhead.
 
      If, at installation time, the `pipe(2)' call is said to be
      unavailable, selecting option `-p' is equivalent to selecting
-     option `-i'.
+     option `-i'.  (This happens, for example, on MS-DOS systems.)
 
 \1f
 File: recode.info,  Node: Mixed,  Next: Emacs,  Prev: Sequencing,  Up: Invoking recode
@@ -89,8 +90,8 @@ charsets at once.  Some parts of the file encode one charset, while
 other parts encode another charset, and so forth.  Usually, a file does
 not toggle between more than two or three charsets.  The means to
 distinguish which charsets are encoded at various places is not always
-easy.  The `recode' program is able to handle only a few simple cases
-of mixed input.
+available.  The `recode' program is able to handle only a few simple
+cases of mixed input.
 
    The default `recode' behaviour is to expect pure charset files, to
 be recoded as other pure charset files.  However, the following options
@@ -131,7 +132,7 @@ allow for a few precise kinds of mixed charset files.
      successfully find where the comment or string ends.
 
      Even if `ASCII' is the usual charset for writing programs, some
-     compilers are able to directly read other charsets, like `UTF-8'
+     compilers are able to directly read other charsets, like `UTF-8',
      say.  There is currently no provision in `recode' for reading
      mixed charset sources which are not based on `ASCII'.  It is
      probable that the need for mixed recoding is not as pressing in
@@ -141,8 +142,8 @@ allow for a few precise kinds of mixed charset files.
 
           recode -Spo pc/..u8 < INPUT.po > OUTPUT.po
 
-     file `OUTPUT.po' holds a copy of `INPUT.po' in which translator
-     comments and the contents of `msgstr' strings *only* have been
+     file `OUTPUT.po' holds a copy of `INPUT.po' in which _only_
+     translator comments and the contents of `msgstr' strings have been
      recoded from the `IBM-PC' charset to pure `UTF-8', without
      attempting conversion of end-of-lines.  Machine generated comments
      and original `msgid' strings are not to be touched by this
@@ -157,16 +158,16 @@ Using `recode' within Emacs
 ===========================
 
    The fact `recode' is a filter makes it quite easy to use from within
-GNU Emacs.  For example, recoding the whole buffer from the IBM-PC
-charset to current charset (Latin-1 on Unix) is easily done with:
+GNU Emacs.  For example, recoding the whole buffer from the `IBM-PC'
+charset to current charset (`Latin-1' on Unix) is easily done with:
 
      C-x h C-u M-| recode ibmpc RET
 
-The `C-x h' selects the whole buffer, and `C-u M-|' filters and
-replaces the current region through the given shell command.  Here is
-another example, binding the keys `C-c T' to the recoding of the
-current region from Easy French to Latin-1 (on Unix) and the key
-`C-u C-c T' from Latin-1 (on Unix) to Easy French:
+`C-x h' selects the whole buffer, and `C-u M-|' filters and replaces
+the current region through the given shell command.  Here is another
+example, binding the keys `C-c T' to the recoding of the current region
+from Easy French to `Latin-1' (on Unix) and the key `C-u C-c T' from
+`Latin-1' (on Unix) to Easy French:
 
      (global-set-key "\C-cT" 'recode-texte)
      
@@ -227,9 +228,12 @@ is an example of a program which does not really make anything useful.
      #include <stdbool.h>
      #include <recode.h>
      
+     const char *program_name;
+     
      int
-     main ()
+     main (int argc, char *const *argv)
      {
+       program_name = argv[0];
        RECODE_OUTER outer = recode_new_outer (true);
      
        recode_delete_outer (outer);
@@ -281,9 +285,12 @@ like:
      
      #include <recode.h>
      
+     const char *program_name;
+     
      int
-     main ()
+     main (int argc, char *const *argv)
      {
+       program_name = argv[0];
        RECODE_OUTER outer = recode_new_outer (true);
      
        recode_term_outer (outer);
@@ -328,6 +335,25 @@ but we will not insist on such details in the examples to come.
      reclaimed when the program ends.  You may spare this terminating
      call if you prefer.
 
+   * The `program_name' declaration
+
+     As we just explained, the user may set the `recode' library so
+     that, in case of problems error, it issues the diagnostic itself
+     and aborts the whole processing.  This capability may be quite
+     convenient.  When this feature is used, the aborting routine
+     includes the name of the running program in the diagnostic.  On
+     the other hand, when this feature is not used, the library merely
+     return error codes, giving the library user fuller control over
+     all this.  This behaviour is more like what usual libraries do:
+     they return codes and never abort.  However, I would rather not
+     force library users to necessarily check all return codes
+     themselves, by leaving no other choice.  In most simple
+     applications, letting the library diagnose and abort is much
+     easier, and quite welcome.  This is precisely because both
+     possibilities exist that the `program_name' variable is needed: it
+     may be used by the library _when_ the user sets it to diagnose
+     itself.
+
 \1f
 File: recode.info,  Node: Request level,  Next: Task level,  Prev: Outer level,  Up: Library
 
@@ -345,9 +371,12 @@ standard output.
      #include <stdbool.h>
      #include <recode.h>
      
+     const char *program_name;
+     
      int
-     main ()
+     main (int argc, char *const *argv)
      {
+       program_name = argv[0];
        RECODE_OUTER outer = recode_new_outer (true);
        RECODE_REQUEST request = recode_new_request (outer);
        bool success;
@@ -390,7 +419,7 @@ request level functions, and in most cases, may be considered as opaque.
      meaningfully changed, once a REQUEST has been initialised by
      `recode_new_request', but before it gets used.  It is not very
      frequent, in practice, that these fields need to be changed.  To
-     access the fields, you need to include `recodext.h' *instead* of
+     access the fields, you need to include `recodext.h' _instead_ of
      `recode.h', in which case there also is a greater chance that you
      need to recompile your programs if a new version of the recoding
      library gets installed.
@@ -439,9 +468,9 @@ request level functions, and in most cases, may be considered as opaque.
      The main role of a REQUEST variable is to describe a set of
      recoding transformations.  Function `recode_scan_request' studies
      the given STRING, and stores an internal representation of it into
-     REQUEST.  Note that STRING may be a full-fledge `recode' request,
+     REQUEST.  Note that STRING may be a full-fledged `recode' request,
      possibly including surfaces specifications, intermediary charsets,
-     sequences, aliases or abbreviations (*note Requests::.).
+     sequences, aliases or abbreviations (*note Requests::).
 
      The internal representation automatically receives some
      pre-conditioning and optimisation, so the REQUEST may then later
@@ -579,9 +608,12 @@ a bit differently.
      #include <stdbool.h>
      #include <recodext.h>
      
+     const char *program_name;
+     
      int
-     main ()
+     main (int argc, char *const *argv)
      {
+       program_name = argv[0];
        RECODE_OUTER outer = recode_new_outer (false);
        RECODE_REQUEST request = recode_new_request (outer);
        RECODE_TASK task;
@@ -642,7 +674,7 @@ few fields in this structure, using special functions.
      meaningfully changed, once a TASK has been initialised by
      `recode_new_task'.  In fact, fields are expected to change.  Once
      again, to access the fields, you need to include `recodext.h'
-     *instead* of `recode.h', in which case there also is a greater
+     _instead_ of `recode.h', in which case there also is a greater
      chance that you need to recompile your programs if a new version
      of the recoding library gets installed.
 
@@ -744,30 +776,30 @@ few fields in this structure, using special functions.
 
     `fail_level'
           This field, which is of type `enum recode_error' (*note
-          Errors::.), sets the error level at which task level
-          functions should report a failure.  If an error being
-          detected is equal or greater than `fail_level', the function
-          will eventually return `false' instead of `true'.  The preset
-          value for this field is `RECODE_NOT_CANONICAL', that means
-          that if not reset to another value, the library will report
-          failure on *any* error.
+          Errors::), sets the error level at which task level functions
+          should report a failure.  If an error being detected is equal
+          or greater than `fail_level', the function will eventually
+          return `false' instead of `true'.  The preset value for this
+          field is `RECODE_NOT_CANONICAL', that means that if not reset
+          to another value, the library will report failure on _any_
+          error.
 
     `abort_level'
           This field, which is of type `enum recode_error' (*note
-          Errors::.), sets the error level at which task level
-          functions should immediately interrupt their processing.  If
-          an error being detected is equal or greater than
-          `abort_level', the function returns immediately, but the
-          returned value (`true' or `false') is still is decided from
-          the setting of `fail_level', not `abort_level'.  The preset
-          value for this field is `RECODE_MAXIMUM_ERROR', that means
-          that is not reset to another value, the library will never
-          interrupt a recoding task.
+          Errors::), sets the error level at which task level functions
+          should immediately interrupt their processing.  If an error
+          being detected is equal or greater than `abort_level', the
+          function returns immediately, but the returned value (`true'
+          or `false') is still is decided from the setting of
+          `fail_level', not `abort_level'.  The preset value for this
+          field is `RECODE_MAXIMUM_ERROR', that means that is not reset
+          to another value, the library will never interrupt a recoding
+          task.
 
     `error_so_far'
           This field, which is of type `enum recode_error' (*note
-          Errors::.), maintains the maximum error level met so far
-          while the recoding task was proceeding.  The preset value is
+          Errors::), maintains the maximum error level met so far while
+          the recoding task was proceeding.  The preset value is
           `RECODE_NO_ERROR'.
 
    * Task execution
@@ -814,7 +846,7 @@ Handling errors
    The `recode' program, while using the `recode' library, needs to
 control whether recoding problems are reported or not, and then reflect
 these in the exit status.  The program should also instruct the library
-about if the recoding should be abruptly interrupted when an error is
+whether the recoding should be abruptly interrupted when an error is
 met (so sparing processing when it is known in advance that a wrong
 result would be discarded anyway), or if it should proceed nevertheless.
 Here is how the library groups errors into levels, listed here in order
@@ -827,13 +859,13 @@ of increasing severity.
      The input text was using one of the many alternative codings for
      some phenomenon, but not the one `recode' would have canonically
      generated.  So, if the reverse recoding is later attempted, it
-     would produce a text having the same *meaning* as the original
+     would produce a text having the same _meaning_ as the original
      text, yet not being byte identical.
 
      For example, a `Base64' block in which end-of-lines appear
      elsewhere that at every 76 characters is not canonical.  An
-     e-circumflex in TeX which is coded `\^{e}' instead of `\^e' is not
-     canonical.
+     e-circumflex in TeX which is coded as `\^{e}' instead of `\^e' is
+     not canonical.
 
 `RECODE_AMBIGUOUS_OUTPUT'
      It has been discovered that if the reverse recoding was attempted
@@ -866,13 +898,14 @@ of increasing severity.
      various Latin charsets.
 
 `RECODE_INVALID_INPUT'
-     The input text does comply with the coding it is declared to hold.
-     So, there is no way by which a reverse recoding would reproduce
-     this text, because `recode' should never produce invalid output.
+     The input text does not comply with the coding it is declared to
+     hold.  So, there is no way by which a reverse recoding would
+     reproduce this text, because `recode' should never produce invalid
+     output.
 
-     Here are a few examples.  In strict mode, `ASCII' text just may
-     not contain characters with the eight bit set.  `UTF-8' encodings
-     ought to be minimal(1).
+     Here are a few examples.  In strict mode, `ASCII' text is not
+     allowed to contain characters with the eight bit set.  `UTF-8'
+     encodings ought to be minimal(1).
 
 `RECODE_SYSTEM_ERROR'
      The underlying system reported an error while the recoding was
@@ -887,13 +920,13 @@ of increasing severity.
 `RECODE_INTERNAL_ERROR'
      Something really wrong, which should normally never happen, was
      detected within the recoding library.  This might be due to
-     genuine bugs in the library, or maybe also, by un-initialised or
+     genuine bugs in the library, or maybe due to un-initialised or
      overwritten arguments to the API.  (This error symbol is currently
      unused in the library.)
 
 `RECODE_MAXIMUM_ERROR'
      This error code should never be returned, it is only internally
-     used as a sentinel over all possible error codes.
+     used as a sentinel for the list of all possible error codes.
 
    One should be able to set the error level threshold for returning
 failure at end of recoding, and also the threshold for immediate
@@ -908,11 +941,11 @@ error, the possible actions currently are:
 
    * interrupt recoding right away and return failure now.
 
-*Note Task level::, and particularly the description of fields
+*Note Task level::, and particularly the description of the fields
 `fail_level', `abort_level' and `error_so_far', for more information
 about how errors are handled.
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) The minimality of an `UTF-8' encoding is guaranteed on output,
 but currently, it is not checked on input.
@@ -920,7 +953,7 @@ but currently, it is not checked on input.
    (2) Another approach would have been to define the level symbols as
 masks instead, and to give masks to threshold setting routines, and to
 retain all errors--yet I never met myself such a need in practice, and
-so, fear it would be overkill.  On the other hand, it might be
+so I fear it would be overkill.  On the other hand, it might be
 interesting to maintain counters about how many times each kind of
 error occurred.
 
@@ -955,18 +988,18 @@ transmissions limited to 7-bit bytes.  Most often, one might see
 storage.
 
    When `recode' is producing any representation of `UCS', it uses the
-replacement character `U+FFFD' for any *valid* character which is not
+replacement character `U+FFFD' for any _valid_ character which is not
 representable in the goal charset(2).  This happens, for example, when
 `UCS-2' is not capable to echo a wide `UCS-4' character, or for a
 similar reason, an `UTF-8' sequence using more than three bytes.  The
 replacement character is meant to represent an existing character.  So,
 it is never produced to represent an invalid sequence or ill-formed
-character in the input text.  In such cases, `recode' just get rid of
-the noise, while taking note of the error its usual ways.
+character in the input text.  In such cases, `recode' just gets rid of
+the noise, while taking note of the error in its usual ways.
 
    Even if `UTF-8' is an encoding, really, it is the encoding of a
 single character set, and nothing else.  It is useful to distinguish
-between an encoding (a *surface* within `recode') and a charset, but
+between an encoding (a _surface_ within `recode') and a charset, but
 only when the surface may be applied to several charsets.  Specifying a
 charset is a bit simpler than specifying a surface in a `recode'
 request.  There would not be a practical advantage at imposing a more
@@ -984,9 +1017,9 @@ complex syntax to `recode' users, when it is simple to assimilate
 * count-characters::    Frequency count of characters
 * dump-with-names::     Fully interpreted UCS dump
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
-   (1) It is not probable that `recode' will support `UTF-1' ever.
+   (1) It is not probable that `recode' will ever support `UTF-1'.
 
    (2) This is when the goal charset allows for 16-bits.  For shorter
 charsets, the `--strict' (`-s') option decides what happens: either the
@@ -1001,7 +1034,7 @@ Universal Character Set, 2 bytes
    One surface of `UCS' is usable for the subset defined by its first
 sixty thousand characters (in fact, 31 * 2^11 codes), and uses exactly
 two bytes per character.  It is a mere dump of the internal memory
-representation which is *natural* for this subset and as such, conveys
+representation which is _natural_ for this subset and as such, conveys
 with it endianness problems.
 
    A non-empty `UCS-2' file normally begins with a so called "byte
@@ -1013,18 +1046,18 @@ than at the beginning, because concatenation of `UCS-2' files should
 stay a simple matter, but it might trigger a diagnostic about non
 canonical input.
 
-   By default, when producing an `UCS-2' file, `recode' always output
+   By default, when producing an `UCS-2' file, `recode' always outputs
 the high order byte before the low order byte.  But this could be
-easily overridden through the `21-Permutation' surface.  For example,
-the command:
+easily overridden through the `21-Permutation' surface (*note
+Permutations::).  For example, the command:
 
      recode u8..u2/21 < INPUT > OUTPUT
 
 asks for an `UTF-8' to `UCS-2' conversion, with swapped byte output.
 
-   Use it as a genuine charset.  This charset is available in `recode'
-under the name `ISO-10646-UCS-2'.  Accepted aliases are `UCS-2', `BMP',
-`rune' and `u2'.
+   Use `UCS-2' as a genuine charset.  This charset is available in
+`recode' under the name `ISO-10646-UCS-2'.  Accepted aliases are
+`UCS-2', `BMP', `rune' and `u2'.
 
    The `recode' library is able to combine `UCS-2' some sequences of
 codes into single code characters, to represent a few diacriticized
@@ -1034,9 +1067,9 @@ single code characters into the corresponding sequence of codes.  The
 request syntax for triggering such operations is rudimentary and
 temporary.  The `combined-UCS-2' pseudo character set is a special form
 of `UCS-2' in which known combinings have been replaced by the simpler
-code.  Using `combined-UCS-2' instead of `UCS-2' in an *after* position
+code.  Using `combined-UCS-2' instead of `UCS-2' in an _after_ position
 of a request forces a combining step, while using `combined-UCS-2'
-instead of `UCS-2' in a *before* position of a request forces an
+instead of `UCS-2' in a _before_ position of a request forces an
 exploding step.  For the time being, one has to resort to advanced
 request syntax to achieve other effects.  For example:
 
@@ -1052,7 +1085,7 @@ Universal Character Set, 4 bytes
 ================================
 
    Another surface of `UCS' uses exactly four bytes per character, and
-is a mere dump of the internal memory representation which is *natural*
+is a mere dump of the internal memory representation which is _natural_
 for the whole charset and as such, conveys with it endianness problems.
 
    Use it as a genuine charset.  This charset is available in `recode'
@@ -1066,7 +1099,7 @@ Universal Transformation Format, 7 bits
 =======================================
 
    `UTF-7' comes from IETF rather than ISO, and is described by
-RFC 1642, in the MIME series.  The `UTF-7' encoding is meant to fit
+RFC 2152, in the MIME series.  The `UTF-7' encoding is meant to fit
 `UCS-2' over channels limited to seven bits per byte.  It proceeds from
 a mix between the spirit of `Quoted-Printable' and methods of `Base64',
 adapted to Unicode contexts.
index b7fa654e5a14c24c053cf60364db5c5aa1a2dd1f..57bd8eb066964fe66a2d3cb37d97d0685a3204fb 100644 (file)
@@ -1,6 +1,7 @@
-This is Info file recode.info, produced by Makeinfo version 1.68 from
-the input file recode.texi.
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
 
+INFO-DIR-SECTION Internationalization and character sets
 START-INFO-DIR-ENTRY
 * recode: (recode).     Conversion between character sets and surfaces.
 END-INFO-DIR-ENTRY
@@ -38,10 +39,10 @@ Markus Kuhn writes:
      `UTF-8' is an `ASCII' compatible multi-byte encoding of the
      ISO 10646 universal character set (`UCS').  `UCS' is a 31-bit
      superset of all other character set standards.  The first 256
-     characters of `UCS' are identical to those of ISO 8859-1 (Latin-1).
-     The `UCS-2' encoding of UCS is a sequence of bigendian 16-bit
-     words, the `UCS-4' encoding is a sequence of bigendian 32-bit
-     words.  The `UCS-2' subset of ISO 10646 is also known as
+     characters of `UCS' are identical to those of ISO 8859-1
+     (Latin-1).  The `UCS-2' encoding of UCS is a sequence of bigendian
+     16-bit words, the `UCS-4' encoding is a sequence of bigendian
+     32-bit words.  The `UCS-2' subset of ISO 10646 is also known as
      "Unicode".  As both `UCS-2' and `UCS-4' require heavy
      modifications to traditional `ASCII' oriented system designs (e.g.
      Unix), the `UTF-8' encoding has been designed for these
@@ -60,12 +61,12 @@ Markus Kuhn writes:
    `UTF-8' is the most common external surface of `UCS', each character
 uses from one to six bytes, and is able to encode all 2^31 characters
 of the `UCS'.  It is implemented as a charset, with the following
-properties.
+properties:
 
    * Strict 7-bit `ASCII' is completely invariant under `UTF-8', and
      those are the only one-byte characters.  `UCS' values and `ASCII'
      values coincide.  No multi-byte characters ever contain bytes less
-     than 128.  `NUL' *is* `NUL'.  A multi-byte character always starts
+     than 128.  `NUL' _is_ `NUL'.  A multi-byte character always starts
      with a byte of 192 or more, and is always followed by a number of
      bytes between 128 to 191.  That means that you may read at random
      on disk or memory, and easily discover the start of the current,
@@ -85,7 +86,7 @@ properties.
      bits of all remaining bytes (so keeping 6 bits per byte for
      those), the remaining bits concatenated are the UCS value.
 
-These properties also have a few nice consequences.
+These properties also have a few nice consequences:
 
    * Conversion to/from values is algorithmically simple, and
      reasonably speedy.
@@ -93,7 +94,7 @@ These properties also have a few nice consequences.
    * A sequence of N bytes can hold characters needing up to 2 + 5N
      bits in their `UCS' representation.  Here, N is a number between 1
      and 6.  So, `UTF-8' is most economical when mapping ASCII (1 byte),
-     then `UCS-2' (1 to 3 bytes), then `UCS-4' (1 to 6 bytes).
+     followed by `UCS-2' (1 to 3 bytes) and `UCS-4' (1 to 6 bytes).
 
    * The lexicographic sorting order of `UCS' strings is preserved.
 
@@ -121,7 +122,7 @@ Universal Transformation Format, 16 bits
 character using either two or four bytes.  It is usable for the subset
 defined by the first million characters (17 * 2^16) of `UCS'.
 
-   Martin J. D"urst writes (to `comp.std.internat', on 1995-03-28):
+   Martin J. Du"rst writes (to `comp.std.internat', on 1995-03-28):
 
      `UTF-16' is another method that reserves two times 1024 codepoints
      in Unicode and uses them to index around one million additional
@@ -175,31 +176,31 @@ conversion may be much, much bigger than the input file.
 rather than a surface.  This is surely debatable.  The current
 implementation allows for dumping charsets other than `UCS-2'.  For
 example, the command `recode l2..full < INPUT' implies a necessary
-conversion from `Latin-2' to `UCS-2', as `full-dump' is only connected
-out from `UCS-2'.  In such cases, `recode' does not display the
-original `Latin-2' codes in the dump, only the corresponding `UCS-2'
-values.  To give a simpler example, the command
+conversion from `Latin-2' to `UCS-2', as `dump-with-names' is only
+connected out from `UCS-2'.  In such cases, `recode' does not display
+the original `Latin-2' codes in the dump, only the corresponding
+`UCS-2' values.  To give a simpler example, the command
 
      echo 'Hello, world!' | recode us..dump
 
-produces the following output.
+produces the following output:
 
-     Mne   UCS2   Description
+     UCS2   Mne   Description
      
-     H     0048   latin capital letter h
-     e     0065   latin small letter e
-     l     006C   latin small letter l
-     l     006C   latin small letter l
-     o     006F   latin small letter o
-     ,     002C   comma
-     SP    0020   space
-     w     0077   latin small letter w
-     o     006F   latin small letter o
-     r     0072   latin small letter r
-     l     006C   latin small letter l
-     d     0064   latin small letter d
-     !     0021   exclamation mark
-     LF    000A   line feed (lf)
+     0048   H     latin capital letter h
+     0065   e     latin small letter e
+     006C   l     latin small letter l
+     006C   l     latin small letter l
+     006F   o     latin small letter o
+     002C   ,     comma
+     0020   SP    space
+     0077   w     latin small letter w
+     006F   o     latin small letter o
+     0072   r     latin small letter r
+     006C   l     latin small letter l
+     0064   d     latin small letter d
+     0021   !     exclamation mark
+     000A   LF    line feed (lf)
 
    The descriptive comment is given in English and `ASCII', yet if the
 English description is not available but a French one is, then the
@@ -247,9 +248,9 @@ library implements most of RFC 1345, however:
      `KS_C_5601-1987'.
 
    * It interprets the charset `isoir91' as `NATS-DANO' (alias
-     `iso-ir-9-1'), *not* as `JIS_C6229-1984-a' (alias `iso-ir-91').
+     `iso-ir-9-1'), _not_ as `JIS_C6229-1984-a' (alias `iso-ir-91').
      It also interprets the charset `isoir92' as `NATS-DANO-ADD' (alias
-     `iso-ir-9-2'), *not* as `JIS_C6229-1984-b' (alias `iso-ir-92').
+     `iso-ir-9-2'), _not_ as `JIS_C6229-1984-b' (alias `iso-ir-92').
      It might be better just avoiding these two alias names.
 
    Keld Simonsen <keld@dkuug.dk> did most of RFC 1345 himself, with
@@ -919,7 +920,7 @@ ASCII and some derivatives
 
 * ASCII::               Usual ASCII
 * ISO 8859::            ASCII extended by Latin Alphabets
-* ASCII-BS::            ASCII 7-bits, `BS' to overstrike
+* ASCII-BS::            ASCII 7-bits, BS to overstrike
 * flat::                ASCII without diacritics nor underline
 
 \1f
@@ -953,8 +954,8 @@ Lasko <lasko@video.dec.com>, a long while ago:
 
      ISO Latin-1, or more completely ISO Latin Alphabet No 1, is now an
      international standard as of February 1987 (IS 8859, Part 1).  For
-     those American USEnet'rs that care, the 8-bit ASCII standard, which
-     is essentially the same code, is going through the final
+     those American USEnet'rs that care, the 8-bit ASCII standard,
+     which is essentially the same code, is going through the final
      administrative processes prior to publication.  ISO Latin-1 (IS
      8859/1) is actually one of an entire family of eight-bit one-byte
      character sets, all having ASCII on the left hand side, and with
@@ -981,7 +982,6 @@ Lasko <lasko@video.dec.com>, a long while ago:
         * Latin-Hebrew alphabet (right half Hebrew + symbols -
           proposed).
 
-
    The ISO Latin Alphabet 1 is available as a charset in `recode' under
 the name `Latin-1'.  In fact, it's true name is `ISO_8859-1:1987' as
 per RFC 1345, accepted aliases being `CP819', `IBM819', `ISO-8859-1',
@@ -1056,8 +1056,8 @@ represented by a sequence of two or three graphic characters.  The
 newline character, however, keeps its functionality and is not
 represented.
 
-   Note that charset `flat' is a terminal charset.  We can convert *to*
-`flat', but not *from* it.
+   Note that charset `flat' is a terminal charset.  We can convert _to_
+`flat', but not _from_ it.
 
 \1f
 File: recode.info,  Node: IBM and MS,  Next: CDC,  Prev: ASCII misc,  Up: Top
@@ -1066,7 +1066,7 @@ Some IBM or Microsoft charsets
 ******************************
 
    The `recode' program provides various IBM or Microsoft code pages
-(*note Tabular::.).  An easy way to find them all at once out of the
+(*note Tabular::).  An easy way to find them all at once out of the
 `recode' program itself is through the command:
 
      recode -l | egrep -i '(CP|IBM)[0-9]'
@@ -1102,7 +1102,7 @@ variants were implemented in `recode' independently of RFC 1345:
      Elmer) relates EBCDIC to 8-bits ASCII.
 
 `EBCDIC-IBM'
-     In `recode', the `us..ebcdic-ibm' conversion is *almost* identical
+     In `recode', the `us..ebcdic-ibm' conversion is _almost_ identical
      to the GNU `dd conv=ibm' conversion.  Given the exact `dd
      conv=ibm' conversion table, `recode' once said:
 
@@ -1164,7 +1164,7 @@ All charset or aliases beginning with letters `CP' or `IBM' also have
 `CR-LF' as their implied surface.  The same is true for a purely
 numeric alias in the same family.  For example, all of `819', `CP819'
 and `IBM819' imply `CR-LF' as a surface.  Note that `ISO-8859-1' does
-*not* imply a surface, despite it shares the same tabular data as `819'.
+_not_ imply a surface, despite it shares the same tabular data as `819'.
 
    There are a few discrepancies between this `IBM-PC' charset and the
 very similar RFC 1345 charset `ibm437', which have not been analysed
@@ -1180,9 +1180,9 @@ The first command uses the charset prior to RFC 1345 introduction.
 Both methods give different recodings.  These differences are annoying,
 the fuzziness will have to be explained and settle down one day.
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
-   (1) On DOS/Windows, stock shells do not know that apostrohes quote
+   (1) On DOS/Windows, stock shells do not know that apostrophes quote
 special characters like `|', so one need to use double quotes instead
 of apostrophes.
 
@@ -1206,9 +1206,9 @@ Charsets for CDC machines
 *************************
 
    What is now `recode' evolved out, through many transformations
-really, from a set of programs which were originally written in Control
-Data Corporation's assembler (`COMPASS'), with bits in FORTRAN, and
-later, rewritten in CDC 6000 Pascal.  The CDC heritage shows by the
+really, from a set of programs which were originally written in
+"COMPASS", Control Data Corporation's assembler, with bits in FORTRAN,
+and later rewritten in CDC 6000 Pascal.  The CDC heritage shows by the
 fact some old CDC charsets are still supported.
 
    The `recode' author used to be familiar with CDC Scope-NOS/BE and
@@ -1233,7 +1233,7 @@ notation over Display Code already mapped to ASCII.
 
 * Display Code::        Control Data's Display Code
 * CDC-NOS::             ASCII 6/12 from NOS
-* Bang-Bang::           ASCII "bang bang"
+* Bang-Bang::           ASCII ``bang bang''
 
 \1f
 File: recode.info,  Node: Display Code,  Next: CDC-NOS,  Prev: CDC,  Up: CDC
@@ -1277,10 +1277,10 @@ given N, in which case these two bytes are not to be interpreted as
 are to be considered as part of the end of line and not interpreted as
 `:'(1).
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) This convention replaced an older one saying that up to 4
-immediately preceeding *pairs* of zero bytes, going backward, are to be
+immediately preceeding _pairs_ of zero bytes, going backward, are to be
 considered as part of the end of line and not interpreted as `::'.
 
 \1f
@@ -1292,7 +1292,7 @@ ASCII 6/12 from NOS
    This charset is available in `recode' under the name `CDC-NOS', with
 `NOS' as an acceptable alias.
 
-   This is one of the charset in use on CDC Cyber NOS systems to
+   This is one of the charsets in use on CDC Cyber NOS systems to
 represent ASCII, sometimes named "NOS 6/12" code for coding ASCII.
 This code is also known as "caret ASCII".  It is based on a six bits
 character set in which small letters and control characters are coded
index d2592a3d1a6bfbef1bf2b16121c62f8ca9403fb4..ab90ad24ebca19f39f6984709e8d464f48a08cb1 100644 (file)
@@ -1,6 +1,7 @@
-This is Info file recode.info, produced by Makeinfo version 1.68 from
-the input file recode.texi.
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
 
+INFO-DIR-SECTION Internationalization and character sets
 START-INFO-DIR-ENTRY
 * recode: (recode).     Conversion between character sets and surfaces.
 END-INFO-DIR-ENTRY
@@ -33,13 +34,13 @@ ASCII "bang bang"
 
    This charset is available in `recode' under the name `Bang-Bang'.
 
-   This code, in use on Cybers at Universit'e de Montr'eal mainly,
+   This code, in use on Cybers at Universite' de Montre'al mainly,
 served to code a lot of French texts.  The original name of this
-charset is "ASCII cod'e Display".  This code is also known as
+charset is "ASCII code' Display".  This code is also known as
 "Bang-bang".  It is based on a six bits character set in which
 capitals, French diacritics and a few others are coded using an `!'
 escape followed by a single character, and control characters using a
-double `!'  escape followed by a single character.
+double `!' escape followed by a single character.
 
    The routines given here presume that the six bits code is already
 expressed in ASCII by the communication channel, with embedded ASCII `!'
@@ -71,7 +72,7 @@ File: recode.info,  Node: Micros,  Next: Miscellaneous,  Prev: CDC,  Up: Top
 Other micro-computer charsets
 *****************************
 
-   The `NeXT' charset, which use to be especially provided in releases
+   The `NeXT' charset, which used to be especially provided in releases
 of `recode' before 3.5, has been integrated since as one RFC 1345 table.
 
 * Menu:
@@ -94,13 +95,13 @@ charset is fairly old in `recode', its tables were produced a long
 while ago by mere inspection of a printed chart of the Macintosh codes
 and glyph.
 
-   It has `LF' as its implied surface.  This means that, if the original
+   It has `CR' as its implied surface.  This means that, if the original
 end of lines have to be preserved while going out of `Apple-Mac', they
 should currently be added back through the usage of a surface on the
 other charset, or better, just never removed.  Here are examples for
 both cases:
 
-     recode ap..l2/cl < INPUT > OUTPUT
+     recode ap..l2/cr < INPUT > OUTPUT
      recode ap/..l2 < INPUT > OUTPUT
 
    RFC 1345 brings into `recode' 2 other Macintosh charsets.  You can
@@ -161,7 +162,7 @@ Various other charsets
 
    Even if these charsets were originally added to `recode' for
 handling texts written in French, they find other uses.  We did use them
-lot for writing French diacriticised texts in the past, so `recode'
+lot for writing French diacriticised texts in the past, so `recode'
 knows how to handle these particularly well for French texts.
 
 * Menu:
@@ -204,7 +205,7 @@ people often use ampersands and angle brackets in the other charset for
 introducing HTML commands, compromising it: it is not pure HTML, not it
 is pure other charset.  These particular translations can be rather
 inconvenient, they may be specifically inhibited through the command
-option `-d' (*note Mixed::.).
+option `-d' (*note Mixed::).
 
    Codes not having a mnemonic entity are output by `recode' using the
 `&#NNN;' notation, where NNN is a decimal representation of the UCS
@@ -222,7 +223,7 @@ This is documented in:
    * HTML 1.0 was never really documented.
 
    * HTML 2.0 entities are listed in RFC 1866.  Basically, there is an
-     entity for each *alphabetical* character in the right part of
+     entity for each _alphabetical_ character in the right part of
      ISO 8859-1.  In addition, there are four entities for
      syntax-significant ASCII characters: `&amp;', `&gt;', `&lt;' and
      `&quot;'.
@@ -234,22 +235,22 @@ This is documented in:
      (`&#8204;'), `&zwj;' (`&#8205;'), `&lrm;' (`&#8206') and `&rlm;'
      (`&#8207;').
 
-   * HTML 3.2 (`http://www.w3.org/TR/REC-html32.html') took up the full
+   * HTML 3.2 (http://www.w3.org/TR/REC-html32.html) took up the full
      Latin-1 list but not the i18n-related entities from RFC 2070.
 
-   * HTML 4.0 (`http://www.w3.org/TR/REC-html40/') has the whole
-     Latin-1 list, a set of entities for symbols, mathematical symbols,
-     and Greek letters, and another set for markup-significant and
+   * HTML 4.0 (http://www.w3.org/TR/REC-html40/) has the whole Latin-1
+     list, a set of entities for symbols, mathematical symbols, and
+     Greek letters, and another set for markup-significant and
      internationalization characters comprising the 4 ASCII entities,
      the 4 i18n-related from RFC 2070 plus some more.
 
    When `recode' translates to HTML, the translation occurs according
 to `http://www.w3.org/TR/REC-html40/sgml/entities.html'.  It is also
 assumed that RFC 1866 has an equivalent contents.  When translating
-*from* HTML, `recode' accepts some alternative special sequences, to be
+_from_ HTML, `recode' accepts some alternative special sequences, to be
 forgiving when files use older HTML tables.
 
-   The `recode' program can be used to *normalise* an HTML file using
+   The `recode' program can be used to _normalise_ an HTML file using
 oldish conventions.  For example, it accepts `&AE;', as this once was a
 valid writing, somewhere.  However, it should always produce `&AElig;'
 instead of `&AE;'.  Yet, this is not completely true.  If one does:
@@ -280,7 +281,7 @@ occurrences of backslashes `\' are translated into the string
 the other charset for introducing TeX commands, compromising it: it is
 not pure TeX, nor it is pure other charset.  This translation of
 backslashes into `\backslash{}' can be rather inconvenient, it may be
-inhibited through the command option `-d' (*note Mixed::.).
+inhibited through the command option `-d' (*note Mixed::).
 
 \1f
 File: recode.info,  Node: Texinfo,  Next: African,  Prev: LaTeX,  Up: Miscellaneous
@@ -386,7 +387,7 @@ destroyed.
 
    Easy French has been in use in France for a while.  I only slightly
 adapted it (the diaeresis option) to make it more comfortable to several
-usages in Qu'ebec originating from Universit'e de Montr'eal.  In fact,
+usages in Que'bec originating from Universite' de Montre'al.  In fact,
 the main problem for me was not to necessarily to invent Easy French,
 but to recognise the "best" convention to use, (best is not being
 defined, here) and to try to solve the main pitfalls associated with
@@ -413,7 +414,7 @@ represented either.  In some countries, `:' is used instead of `"' to
 mark diaeresis.  `recode' supports only one convention per call,
 depending on the `-c' option of the `recode' command.  French quotes
 (sometimes called "angle quotes") are noted the same way English quotes
-are noted in TeX, *id est* by ```' and `'''.  No effort has been put to
+are noted in TeX, _id est_ by ```' and `'''.  No effort has been put to
 preserve Latin ligatures (`ae', `oe') which are representable in
 several other charsets.  So, these ligatures may be lost through Easy
 French conventions.
@@ -450,25 +451,24 @@ systematically obeyed by the various recognisers.
 
   3. A double quote or colon, depending on `-c' option, which follows a
      vowel is interpreted as diaeresis only if it is followed by
-     another letter.  But there are in French several words that *end*
+     another letter.  But there are in French several words that _end_
      with a diaeresis, and the `recode' library is aware of them.
      There are words ending in "igue", either feminine words without a
-     relative masculine (besaigu"e and cigu"e), or feminine words with
-     a relative masculine(1) (aigu"e, ambigu"e, contigu"e, exigu"e,
-     subaigu"e and suraigu"e).  There are also words not ending in
+     relative masculine (besaigue" and cigue"), or feminine words with
+     a relative masculine(1) (aigue", ambigue", contigue", exigue",
+     subaigue" and suraigue").  There are also words not ending in
      "igue", but instead, either ending by "i"(2) (ai", congai", goi",
      hai"kai", inoui", sai", samurai", thai" and tokai"), ending by "e"
-     (cano"e) or ending by "u"(3) (Esa"u).
+     (canoe") or ending by "u"(3) (Esau").
 
      Just to complete this topic, note that it would be wrong to make a
      rule for all words ending in "igue" as needing a diaerisis, as
-     there are counter-examples (becfigue, b`esigue, bigue, bordigue,
+     there are counter-examples (becfigue, be`sigue, bigue, bordigue,
      bourdigue, brigue, contre-digue, digue, d'intrigue, fatigue,
      figue, garrigue, gigue, igue, intrigue, ligue, prodigue, sarigue
      and zigue).
 
-
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) There are supposed to be seven words in this case.  So, one is
 missing.
@@ -480,7 +480,7 @@ interpreted with the `-c' option):
      Ai:e!  Voici le proble`me que j'ai:
 
    There is an ambiguity between an ai", the small animal, and the
-indicative future of *avoir* (first person singular), when followed by
+indicative future of _avoir_ (first person singular), when followed by
 what could be a diaeresis mark.  Hopefully, the case is solved by the
 fact that an apostrophe always precedes the verb and almost never the
 animal.
@@ -504,31 +504,31 @@ needed this for himself.  However, it is intended that Mule support to
 become more real in subsequent releases of `recode'.
 
    Multiplexed charsets are not to be confused with mixed charset texts
-(*note Mixed::.).  For mixed charset input, the rules allowing to
+(*note Mixed::).  For mixed charset input, the rules allowing to
 distinguish which charset is current, at any given place, are kind of
 informal, and driven from the semantics of what the file contains.  On
-the other side, multiplexed charsets are *designed* to be interpreted
+the other side, multiplexed charsets are _designed_ to be interpreted
 fairly precisely, and quite independently of any informational context.
 
-   The spelling `Mule' originally stands for `*mul*tilingual
-*e*nhancement to GNU Emacs', it is the result of a collective effort
-orchestrated by Handa Ken'ishi since 1993.  When `Mule' got rewritten
+   The spelling `Mule' originally stands for `_mul_tilingual
+_e_nhancement to GNU Emacs', it is the result of a collective effort
+orchestrated by Handa Ken'ichi since 1993.  When `Mule' got rewritten
 in the main development stream of GNU Emacs 20, the FSF renamed it
-`MULE', meaning `*mul*tilingual *e*nvironment in GNU Emacs'.  Even if
+`MULE', meaning `_mul_tilingual _e_nvironment in GNU Emacs'.  Even if
 the charset `Mule' is meant to stay internal to GNU Emacs, it sometimes
 breaks loose in external files, and as a consequence, a recoding tool
-is sometimes needed.  Within Emacs, `Mule' comes with `leim', which
-stands for `*l*ibraries of *e*macs *i*nput *m*ethods'.  One of these
+is sometimes needed.  Within Emacs, `Mule' comes with `Leim', which
+stands for `_l_ibraries of _e_macs _i_nput _m_ethods'.  One of these
 libraries is named `quail'(1).
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) Usually, quail means quail egg in Japanese, while egg alone is
 usually chicken egg.  Both quail egg and chicken egg are popular food
 in Japan.  The `quail' input system has been named because it is
 smaller that the previous `EGG' system.  As for `EGG', it is the
 translation of `TAMAGO'.  This word comes from the Japanese sentence
-`*ta*kusan *ma*tasete *go*mennasai', meaning `sorry to have let you
+`_ta_kusan _ma_tasete _go_mennasai', meaning `sorry to have let you
 wait so long'.  Of course, the publication of `EGG' has been delayed
 many times...  (Story by Takahashi Naoto)
 
@@ -538,7 +538,7 @@ File: recode.info,  Node: Surfaces,  Next: Internals,  Prev: Miscellaneous,  Up:
 All about surfaces
 ******************
 
-   The "trivial surface" consists into using a fixed number of bits
+   The "trivial surface" consists of using a fixed number of bits
 (often eight) for each character, the bits together hold the integer
 value of the index for the character in its charset table.  There are
 many kinds of surfaces, beyond the trivial one, all having the purpose
@@ -568,7 +568,7 @@ charset: the request `data..SURFACE' merely adds the given SURFACE,
 while the request `SURFACE..data' removes it.
 
    We are only beginning to experiment with surfaces in `recode', but
-the concept opens the doors to many avenues, it is not clear yet which
+the concept opens the doors to many avenues; it is not clear yet which
 ones are worth pursuing, and which should be abandoned.  This chapter
 presents all surfaces currently available.
 
@@ -580,7 +580,7 @@ presents all surfaces currently available.
 * Dump::                Interpreted character dumps
 * Debugging::           Artificial data
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) These are mere examples to explain the concept, `recode' only
 has `Base64' and `CR-LF', actually.
@@ -592,12 +592,12 @@ Permuting groups of bytes
 =========================
 
    A permutation is a surface transformation which reorders groups of
-eight-bit bytes.  A *21* permutation exchanges pairs of successive
+eight-bit bytes.  A _21_ permutation exchanges pairs of successive
 bytes.  If the text contains an odd number of bytes, the last byte is
-merely copied.  An *4321* permutation inverts the order of quadruples
+merely copied.  An _4321_ permutation inverts the order of quadruples
 of bytes.  If the text does not contains a multiple of four bytes, the
-remaining bytes are nevertheless permuted as *321* if there are three
-bytes, *21* if there are two bytes, or merely copied otherwise.
+remaining bytes are nevertheless permuted as _321_ if there are three
+bytes, _21_ if there are two bytes, or merely copied otherwise.
 
 `21'
      This surface is available in `recode' under the name
@@ -623,7 +623,7 @@ for representing end of lines are available through surfaces.
      This convention is popular on Apple's Macintosh machines.  When
      this surface is applied, each line is terminated by `CR', which has
      `ASCII' value 13.  Unless the library is operating in strict mode,
-     adding or removing the surface will in fact *exchange* `CR' and
+     adding or removing the surface will in fact _exchange_ `CR' and
      `LF', for better reversibility.  However, in strict mode, the
      exchange does not happen, any `CR' will be copied verbatim while
      applying the surface, and any `LF' will be copied verbatim while
@@ -660,7 +660,7 @@ File: recode.info,  Node: MIME,  Next: Dump,  Prev: End lines,  Up: Surfaces
 MIME contents encodings
 =======================
 
-   RFC 1521 defines two 7-bit surfaces, meant to prepare 8-bit messages
+   RFC 2045 defines two 7-bit surfaces, meant to prepare 8-bit messages
 for transmission.  Base64 is especially usable for binary entities,
 while Quoted-Printable is especially usable for text entities, in those
 case the lower 128 characters of the underlying charset coincide with
@@ -680,9 +680,10 @@ is provided as a genuine charset instead, as it necessary relates to
 `UCS-2' and nothing else.  *Note UTF-7::.
 
    A little historical note, also showing the three levels of
-acceptation of Internet standards.  MIME changed from a "Proposed
-Standard" to a "Draft Standard" in 1993, and only became a "Full
-Standard" during 1996-12.
+acceptance of Internet standards.  MIME changed from a "Proposed
+Standard" (RFC 1341-1344, 1992) to a "Draft Standard" (RFC 1521-1523)
+in 1993, and was _recycled_ as a "Draft Standard" in 1996-11.  It is
+not yet a "Full Standard".
 
 \1f
 File: recode.info,  Node: Dump,  Next: Debugging,  Prev: MIME,  Up: Surfaces
@@ -775,17 +776,17 @@ single type, and so, have identical sizes.
    When removing a dump surface, that is, when reading a dump results
 back into a sequence of bytes, the narrower expression for a short last
 chunk is recognised, so dumping is a fully reversible operation.
-However, in case you want do produce dumps by other means than through
+However, in case you want to produce dumps by other means than through
 `recode', beware that for decimal dumps, the library has to rely on the
 number of spaces to establish the original byte size of the chunk.
 
-   Despite the library might report reversibility errors, removing a
-dump surface is a rather forgiving process: one may mix bases, group
-more or less numbers per source line, or use shorter chunks elsewhere
-than at the far end.  Also, source lines not beginning with a number
-are skipped.  So, `recode' should often be able to read a whole C
-header file, wrapping the results of a previous dump, and regenerate
-the original byte string.
+   Although the library might report reversibility errors, removing a
+dump surface is a rather forgiving process: one may mix bases, group a
+variable number of data per source line, or use shorter chunks in
+places other than at the far end.  Also, source lines not beginning
+with a number are skipped.  So, `recode' should often be able to read a
+whole C header file, wrapping the results of a previous dump, and
+regenerate the original byte string.
 
 \1f
 File: recode.info,  Node: Debugging,  Prev: Dump,  Up: Surfaces
@@ -798,16 +799,16 @@ air.  These surfaces are only meant for the expert `recode' user, and
 are only useful in a few contexts, like for generating binary
 permutations from the recoding or acting on them.
 
-   Debugging surfaces, *when removed*, insert their generated data at
+   Debugging surfaces, _when removed_, insert their generated data at
 the beginning of the output stream, and copy all the input stream after
 the generated data, unchanged.  This strange removal constraint comes
 from the fact that debugging surfaces are usually specified in the
-*before* position instead of the *after* position within a request.
+_before_ position instead of the _after_ position within a request.
 With debugging surfaces, one often recodes file `/dev/null' in filter
 mode.  Specifying many debugging surfaces at once has an accumulation
 effect on the output, and since surfaces are removed from right to left,
 each generating its data at the beginning of previous output, the net
-effect is an *impression* that debugging surfaces are generated from
+effect is an _impression_ that debugging surfaces are generated from
 left to right, each appending to the result of the previous.  In any
 case, any real input data gets appended after what was generated.
 
@@ -833,14 +834,14 @@ case, any real input data gets appended after what was generated.
      having value 0, the second having value 1, and so forth until all
      65536 values have been generated.
 
-   For an example, the command `recode l5/test8..dump < /dev/null' is a
+   As an example, the command `recode l5/test8..dump < /dev/null' is a
 convoluted way to produce an output similar to `recode -lf l5'.  It says
 to generate all possible 256 bytes and interpret them as `ISO-8859-9'
 codes, while converting them to `UCS-2'.  Resulting `UCS-2' characters
 are dumped one per line, accompanied with their explicative name.
 
 \1f
-File: recode.info,  Node: Internals,  Prev: Surfaces,  Up: Top
+File: recode.info,  Node: Internals,  Next: Concept Index,  Prev: Surfaces,  Up: Top
 
 Internal aspects
 ****************
@@ -899,7 +900,7 @@ than one input character for producing an output character, etc.
 economical route through the elementary recodings, that is, the best
 sequence of conversions that will transform the input charset into the
 final charset.  To speed up execution, `recode' looks for subsequences
-of conversions which are simple enough to be merged, it then
+of conversions which are simple enough to be merged, and then
 dynamically creates new single steps to represent these mergings.
 
    A "double step" in `recode' is a special concept representing a
@@ -915,7 +916,7 @@ recoding layout, before optimisation, always uses between 1 and 6
 steps.  Optimisation could sometimes produce mere copies, which are
 counted as no steps at all.  In other cases, optimisation is unable to
 save any step.  The number of steps after optimisation is currently
-between 0 and 6 steps.  Of course, the *expected* number of steps is
+between 0 and 6 steps.  Of course, the _expected_ number of steps is
 affected by optimisation: it drops from 2.2 to 0.9.(1) This means that
 `recode' uses a theoretical average of a bit less than one step per
 recoding job.  This looks good.  This was computed using reversible
@@ -924,7 +925,7 @@ Number of steps run between 1 and 6, both before and after optimisation,
 and the expected number of steps decreases by a lesser amount, going
 from 2.2 to 1.3.  This is still manageable.
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) The above numbers were for `recode' version 3.4.  After UCS
 additions, it drops from 2.3 to 1.1.
@@ -972,7 +973,7 @@ an example from the style that better fits your application.
 
    Each of your source files should have its own initialisation
 function, named `module_CHARSET', which is meant to be executed
-*quickly* once, prior to any recoding.  It should declare the name of
+_quickly_ once, prior to any recoding.  It should declare the name of
 your charsets and the single steps (or elementary recodings) you
 provide, by calling `declare_step' one or more times.  Besides the
 charset names, `declare_step' expects a description of the recoding
index 2b148911a1150217363cbbc1babcb736456a6cca..a1a50401e0fe39b64d5cf1eab5d542aaf06f0e68 100644 (file)
@@ -1,6 +1,7 @@
-This is Info file recode.info, produced by Makeinfo version 1.68 from
-the input file recode.texi.
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
 
+INFO-DIR-SECTION Internationalization and character sets
 START-INFO-DIR-ENTRY
 * recode: (recode).     Conversion between character sets and surfaces.
 END-INFO-DIR-ENTRY
@@ -66,8 +67,8 @@ Comments on the library design
      package, and take advantage of the Automake interface to neatly
      turn the non-shared library into a shared one.
 
-     Sites linking with the `recode' library, while their system does
-     not support any form of shared libraries, might end up with bulky
+     Sites linking with the `recode' library, whose system does not
+     support any form of shared libraries, might end up with bulky
      executables.  Surely, the `recode' library will have to be used
      statically, and might not very nicely usable on such systems.  It
      seems that progress has a price for those being slow at it.
@@ -76,7 +77,7 @@ Comments on the library design
      `recode' library takes many cycles to initialise itself, calling
      each module in turn for it to set up associated knowledge about
      charsets, aliases, elementary steps, recoding weights, etc.
-     *Then*, the recoding sequence is decided out of the command given.
+     _Then_, the recoding sequence is decided out of the command given.
      I would not be surprised if initialisation was taking a
      perceivable fraction of a second on slower machines.  One thing to
      do, most probably not right in version 3.5, but the version after,
@@ -187,12 +188,313 @@ Comments on the library design
      did it.  Instead, we should try to stay opened to the difficulties
      of real life.  There is still a lot of complex needs for Asian
      people, say, that `recode' does not currently address, while it
-     should.  Not only the doors should stay opened, but we should
-     force them wider!
+     should.  Not only the doors should stay open, but we should force
+     them wider!
 
-   ---------- Footnotes ----------
+   --------- Notes en bas de page ---------
 
    (1) If strict mapping is requested, another efficient device will be
 used instead of a permutation.
 
+\1f
+File: recode.info,  Node: Concept Index,  Next: Option Index,  Prev: Internals,  Up: Top
+
+Concept Index
+*************
+
+* Menu:
+
+* abbreviated names for charsets and surfaces: Requests.
+* adding new charsets:                   New charsets.
+* adding new surfaces:                   New surfaces.
+* African charsets:                      African.
+* aliases:                               Requests.
+* alternate names for charsets and surfaces: Requests.
+* ambiguous output, error message:       Errors.
+* ASCII table, recreating with recode:   ASCII.
+* average number of recoding steps:      Main flow.
+* bool data type:                        Outer level.
+* box-drawing characters:                Recoding.
+* bug reports, where to send:            Contributing.
+* byte order mark:                       UCS-2.
+* byte order swapping:                   Permutations.
+* caret ASCII code:                      CDC-NOS.
+* CDC charsets:                          CDC.
+* CDC Display Code, a table:             Display Code.
+* chaining of charsets in a request:     Requests.
+* character mnemonics, documentation:    Tabular.
+* character streams, description:        dump-with-names.
+* charset level functions:               Charset level.
+* charset names, valid characters:       Requests.
+* charset, default:                      Requests.
+* charset, pure:                         Surface overview.
+* charset, what it is:                   Introduction.
+* charsets for CDC machines:             CDC.
+* charsets, aliases:                     Requests.
+* charsets, chaining in a request:       Requests.
+* charsets, guessing:                    Listings.
+* charsets, overview:                    Charset overview.
+* chset tools:                           Tabular.
+* codepages:                             IBM and MS.
+* combining characters:                  UCS-2.
+* commutativity of surfaces:             Requests.
+* contributing charsets:                 Contributing.
+* convert a subset of characters:        Mixed.
+* convert strings and comments:          Mixed.
+* copyright conditions, printing:        Listings.
+* counting characters:                   count-characters.
+* CR surface, in Macintosh charsets:     Apple-Mac.
+* CR-LF surface, in IBM-PC charsets:     IBM-PC.
+* Ctrl-Z, discarding:                    End lines.
+* Cyrillic charsets:                     Cyrillic.
+* debugging surfaces:                    Debugging.
+* default charset:                       Requests.
+* description of individual characters:  dump-with-names.
+* details about recoding:                Recoding.
+* deviations from RFC 1345:              Tabular.
+* diacritics and underlines, removing:   flat.
+* diacritics, with ASCII-BS charset:     ASCII-BS.
+* diaeresis:                             Recoding.
+* disable map filling:                   Reversibility.
+* double step:                           Main flow.
+* dumping characters:                    Dump.
+* dumping characters, with description:  dump-with-names.
+* Easy French:                           Texte.
+* EBCDIC charsets:                       EBCDIC.
+* end of line format:                    End lines.
+* endiannes, changing:                   Permutations.
+* error handling:                        Errors.
+* error level threshold:                 Errors.
+* error messages:                        Errors.
+* error messages, suppressing:           Reversibility.
+* file sequencing:                       Sequencing.
+* file time stamps:                      Recoding.
+* filter operation:                      Synopsis.
+* force recoding:                        Reversibility.
+* French description of charsets:        Listings.
+* guessing charsets:                     Listings.
+* handling errors:                       Errors.
+* help page, printing:                   Listings.
+* HTML normalization:                    HTML.
+* IBM codepages:                         IBM and MS.
+* IBM graphics characters:               Recoding.
+* iconv:                                 Design.
+* identifying subsets in charsets:       Listings.
+* ignore charsets:                       Recoding.
+* implied surfaces:                      Requests.
+* information about charsets:            Listings.
+* initialisation functions, outer:       Outer level.
+* initialisation functions, request:     Request level.
+* initialisation functions, task:        Task level.
+* intermediate charsets:                 Requests.
+* internal functions:                    Charset level.
+* internal recoding bug, error message:  Errors.
+* internals:                             Internals.
+* invalid input, error message:          Errors.
+* invocation of recode, synopsis:        Synopsis.
+* irreversible recoding:                 Reversibility.
+* ISO 10646:                             Universal.
+* languages, programming:                Listings.
+* LaTeX files:                           LaTeX.
+* Latin charsets:                        ISO 8859.
+* Latin-1 table, recreating with recode: ISO 8859.
+* letter case, in charset and surface names: Requests.
+* listing charsets:                      Listings.
+* Macintosh charset:                     Apple-Mac.
+* map filling:                           Reversibility.
+* map filling, disable:                  Reversibility.
+* memory sequencing:                     Sequencing.
+* MIME encodings:                        MIME.
+* misuse of recoding library, error message: Errors.
+* MS-DOS charsets:                       IBM-PC.
+* MULE, in Emacs:                        Mule.
+* multiplexed charsets:                  Mule.
+* names of charsets and surfaces, abbreviation: Requests.
+* new charsets, how to add:              New charsets.
+* new surfaces, how to add:              New surfaces.
+* NeXT charsets:                         Micros.
+* non canonical input, error message:    Errors.
+* normilise an HTML file:                HTML.
+* NOS 6/12 code:                         CDC-NOS.
+* outer level functions:                 Outer level.
+* partial conversion:                    Mixed.
+* permutations of groups of bytes:       Permutations.
+* pipe sequencing:                       Sequencing.
+* program_name variable:                 Outer level.
+* programming language support:          Listings.
+* pure charset:                          Surface overview.
+* quality of recoding:                   Recoding.
+* recode internals:                      Internals.
+* recode request syntax:                 Requests.
+* recode use, a tutorial:                Tutorial.
+* recode version, printing:              Listings.
+* recode, a Macintosh port:              Apple-Mac.
+* recode, and RFC 1345:                  Tabular.
+* recode, main flow of operation:        Main flow.
+* recode, operation as filter:           Synopsis.
+* recode, synopsis of invocation:        Synopsis.
+* recoding details:                      Recoding.
+* recoding library:                      Library.
+* recoding path, rejection:              Recoding.
+* recoding steps, statistics:            Main flow.
+* removing diacritics and underlines:    flat.
+* reporting bugs:                        Contributing.
+* request level functions:               Request level.
+* request, syntax:                       Requests.
+* reversibility of recoding:             Reversibility.
+* RFC 1345:                              Tabular.
+* RFC 2045:                              MIME.
+* sequencing:                            Sequencing.
+* shared library implementation:         Design.
+* silent operation:                      Reversibility.
+* single step:                           Main flow.
+* source file generation:                Listings.
+* stdbool.h header:                      Outer level.
+* strict operation:                      Reversibility.
+* string and comments conversion:        Mixed.
+* subsets in charsets:                   Listings.
+* super-charsets:                        Mule.
+* supported programming languages:       Listings.
+* suppressing diagnostic messages:       Reversibility.
+* surface, what it is <1>:               Surfaces.
+* surface, what it is:                   Introduction.
+* surfaces, aliases:                     Requests.
+* surfaces, commutativity:               Requests.
+* surfaces, implementation in recode:    Surfaces.
+* surfaces, implied:                     Requests.
+* surfaces, overview:                    Surface overview.
+* surfaces, syntax:                      Requests.
+* system detected problem, error message: Errors.
+* task execution:                        Task level.
+* task level functions:                  Task level.
+* TeX files:                             LaTeX.
+* Texinfo files:                         Texinfo.
+* threshold for error reporting:         Errors.
+* time stamps of files:                  Recoding.
+* trivial surface:                       Surfaces.
+* tutorial:                              Tutorial.
+* Unicode:                               UCS-2.
+* unknown charsets:                      Listings.
+* untranslatable input, error message:   Errors.
+* valid characters in charset names:     Requests.
+* verbose operation:                     Recoding.
+
+\1f
+File: recode.info,  Node: Option Index,  Next: Library Index,  Prev: Concept Index,  Up: Top
+
+Option Index
+************
+
+   This is an alphabetical list of all command-line options accepted by
+`recode'.
+
+* Menu:
+
+* --colons:                              Recoding.
+* --copyright:                           Listings.
+* --diacritics:                          Mixed.
+* --find-subsets:                        Listings.
+* --force:                               Reversibility.
+* --graphics:                            Recoding.
+* --header:                              Listings.
+* --help:                                Listings.
+* --ignore:                              Recoding.
+* --known=:                              Listings.
+* --list:                                Listings.
+* --quiet:                               Reversibility.
+* --sequence:                            Sequencing.
+* --silent:                              Reversibility.
+* --source:                              Mixed.
+* --strict:                              Reversibility.
+* --touch:                               Recoding.
+* --verbose:                             Recoding.
+* --version:                             Listings.
+* -c:                                    Recoding.
+* -C:                                    Listings.
+* -d:                                    Mixed.
+* -f:                                    Reversibility.
+* -g:                                    Recoding.
+* -h:                                    Listings.
+* -i:                                    Sequencing.
+* -k:                                    Listings.
+* -l:                                    Listings.
+* -p:                                    Sequencing.
+* -q:                                    Reversibility.
+* -S:                                    Mixed.
+* -s:                                    Reversibility.
+* -t:                                    Recoding.
+* -T:                                    Listings.
+* -v:                                    Recoding.
+* -x:                                    Recoding.
+
+\1f
+File: recode.info,  Node: Library Index,  Next: Charset and Surface Index,  Prev: Option Index,  Up: Top
+
+Library Index
+*************
+
+   This is an alphabetical index of important functions, data
+structures, and variables in the `recode' library.
+
+* Menu:
+
+* abort_level:                           Task level.
+* ascii_graphics:                        Request level.
+* byte_order_mark:                       Task level.
+* declare_step:                          New surfaces.
+* DEFAULT_CHARSET:                       Requests.
+* diacritics_only:                       Request level.
+* diaeresis_char:                        Request level.
+* error_so_far:                          Task level.
+* fail_level:                            Task level.
+* file_one_to_many:                      New charsets.
+* file_one_to_one:                       New charsets.
+* find_charset:                          Charset level.
+* LANG, when listing charsets:           Listings.
+* LANGUAGE, when listing charsets:       Listings.
+* list_all_charsets:                     Charset level.
+* list_concise_charset:                  Charset level.
+* list_full_charset:                     Charset level.
+* make_header_flag:                      Request level.
+* RECODE_AMBIGUOUS_OUTPUT:               Errors.
+* recode_buffer_to_buffer:               Request level.
+* recode_buffer_to_file:                 Request level.
+* recode_delete_outer:                   Outer level.
+* recode_delete_request:                 Request level.
+* recode_delete_task:                    Task level.
+* recode_file_to_buffer:                 Request level.
+* recode_file_to_file:                   Request level.
+* recode_filter_close:                   Task level.
+* recode_filter_close, not available:    Request level.
+* recode_filter_open:                    Task level.
+* recode_filter_open, not available:     Request level.
+* recode_format_table:                   Request level.
+* RECODE_INTERNAL_ERROR:                 Errors.
+* RECODE_INVALID_INPUT:                  Errors.
+* RECODE_MAXIMUM_ERROR <1>:              Errors.
+* RECODE_MAXIMUM_ERROR:                  Task level.
+* recode_new_outer:                      Outer level.
+* recode_new_request:                    Request level.
+* recode_new_task:                       Task level.
+* RECODE_NO_ERROR:                       Errors.
+* RECODE_NOT_CANONICAL:                  Errors.
+* RECODE_OUTER structure:                Outer level.
+* recode_perform_task:                   Task level.
+* recode_request structure:              Request level.
+* RECODE_REQUEST structure:              Request level.
+* recode_scan_request:                   Request level.
+* RECODE_SEQUENCE_IN_MEMORY:             Task level.
+* RECODE_SEQUENCE_WITH_FILES:            Task level.
+* RECODE_SEQUENCE_WITH_PIPE:             Task level.
+* RECODE_STRATEGY_UNDECIDED:             Task level.
+* recode_string:                         Request level.
+* recode_string_to_buffer:               Request level.
+* recode_string_to_file:                 Request level.
+* RECODE_SYSTEM_ERROR:                   Errors.
+* RECODE_TASK structure:                 Task level.
+* RECODE_UNTRANSLATABLE:                 Errors.
+* RECODE_USER_ERROR:                     Errors.
+* strategy:                              Task level.
+* task_request structure:                Task level.
+* verbose_flag:                          Request level.
 
diff --git a/doc/recode.info-6 b/doc/recode.info-6
new file mode 100644 (file)
index 0000000..50e2aba
--- /dev/null
@@ -0,0 +1,721 @@
+This is recode.info, produced by makeinfo version 3.12n from
+recode.texi.
+
+INFO-DIR-SECTION Internationalization and character sets
+START-INFO-DIR-ENTRY
+* recode: (recode).     Conversion between character sets and surfaces.
+END-INFO-DIR-ENTRY
+
+   This file documents the `recode' command, which has the purpose of
+converting files between various character sets and surfaces.
+
+   Copyright (C) 1990, 93, 94, 96, 97, 98, 99 Free Software Foundation,
+Inc.
+
+   Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+   Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that
+the entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+   Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the Foundation.
+
+\1f
+File: recode.info,  Node: Charset and Surface Index,  Prev: Library Index,  Up: Top
+
+Charset and Surface Index
+*************************
+
+   This is an alphabetical list of all the charsets and surfaces
+supported by `recode', and their aliases.
+
+* Menu:
+
+* 037:                                   Tabular.
+* 038:                                   Tabular.
+* 1004:                                  Tabular.
+* 1026:                                  Tabular.
+* 1047:                                  Tabular.
+* 10646:                                 UCS-4.
+* 1250:                                  Tabular.
+* 1251:                                  Tabular.
+* 1252:                                  Tabular.
+* 1253:                                  Tabular.
+* 1254:                                  Tabular.
+* 1255:                                  Tabular.
+* 1256:                                  Tabular.
+* 1257:                                  Tabular.
+* 1345:                                  Tabular.
+* 21-Permutation:                        Permutations.
+* 256:                                   Tabular.
+* 273:                                   Tabular.
+* 274:                                   Tabular.
+* 275:                                   Tabular.
+* 278:                                   Tabular.
+* 280:                                   Tabular.
+* 281:                                   Tabular.
+* 284:                                   Tabular.
+* 285:                                   Tabular.
+* 290:                                   Tabular.
+* 297:                                   Tabular.
+* 367:                                   Tabular.
+* 420:                                   Tabular.
+* 423:                                   Tabular.
+* 424:                                   Tabular.
+* 4321-Permutation:                      Permutations.
+* 437:                                   Tabular.
+* 500:                                   Tabular.
+* 500V1:                                 Tabular.
+* 64:                                    MIME.
+* 819:                                   Tabular.
+* 850:                                   Tabular.
+* 851:                                   Tabular.
+* 852:                                   Tabular.
+* 855:                                   Tabular.
+* 857:                                   Tabular.
+* 860:                                   Tabular.
+* 861:                                   Tabular.
+* 862:                                   Tabular.
+* 863:                                   Tabular.
+* 864:                                   Tabular.
+* 865:                                   Tabular.
+* 868:                                   Tabular.
+* 869:                                   Tabular.
+* 870:                                   Tabular.
+* 871:                                   Tabular.
+* 875:                                   Tabular.
+* 880:                                   Tabular.
+* 891:                                   Tabular.
+* 903:                                   Tabular.
+* 904:                                   Tabular.
+* 905:                                   Tabular.
+* 912:                                   Tabular.
+* 918:                                   Tabular.
+* AFRFUL-102-BPI_OCIL, and aliases:      African.
+* AFRFUL-103-BPI_OCIL, and aliases:      African.
+* AFRL1-101-BPI_OCIL:                    African.
+* AFRLIN-104-BPI_OCIL:                   African.
+* AFRLIN-105-BPI_OCIL:                   African.
+* ANSI_X3.110-1983, not recognised by recode: Tabular.
+* ANSI_X3.4-1968, aliases and source:    Tabular.
+* ANSI_X3.4-1968, and its aliases:       ASCII.
+* ANSI_X3.4-1986:                        Tabular.
+* Apple-Mac:                             Apple-Mac.
+* arabic:                                Tabular.
+* arabic7:                               Tabular.
+* ASCII:                                 Tabular.
+* ASCII, an alias for the ANSI_X3.4-1968 charset: ASCII.
+* ASCII-BS, and its aliases:             ASCII-BS.
+* ASMO-708:                              Tabular.
+* ASMO_449, aliases and source:          Tabular.
+* AtariST:                               AtariST.
+* b64:                                   MIME.
+* baltic, aliases and source:            Tabular.
+* bambara:                               African.
+* Bang-Bang:                             Bang-Bang.
+* Base64:                                MIME.
+* BMP:                                   UCS-2.
+* bra:                                   African.
+* BS, an alias for ASCII-BS charset:     ASCII-BS.
+* BS_4730, aliases and source:           Tabular.
+* BS_viewdata, aliases and source:       Tabular.
+* ca:                                    Tabular.
+* CDC-NOS, and its aliases:              CDC-NOS.
+* cl:                                    End lines.
+* cn:                                    Tabular.
+* combined-UCS-2:                        UCS-2.
+* CORK:                                  Cyrillic.
+* count-characters:                      count-characters.
+* cp-ar:                                 Tabular.
+* cp-gr:                                 Tabular.
+* cp-hu:                                 Tabular.
+* cp-is:                                 Tabular.
+* CP037:                                 Tabular.
+* CP038:                                 Tabular.
+* CP1004:                                Tabular.
+* CP1026:                                Tabular.
+* CP1047:                                Tabular.
+* CP1250, aliases and source:            Tabular.
+* CP1251, aliases and source:            Tabular.
+* CP1252, aliases and source:            Tabular.
+* CP1253, aliases and source:            Tabular.
+* CP1254, aliases and source:            Tabular.
+* CP1255, aliases and source:            Tabular.
+* CP1256, aliases and source:            Tabular.
+* CP1257, aliases and source:            Tabular.
+* CP256:                                 Tabular.
+* CP273:                                 Tabular.
+* CP274:                                 Tabular.
+* CP275:                                 Tabular.
+* CP278:                                 Tabular.
+* CP280:                                 Tabular.
+* CP281:                                 Tabular.
+* CP284:                                 Tabular.
+* CP285:                                 Tabular.
+* CP290:                                 Tabular.
+* CP297:                                 Tabular.
+* cp367:                                 ASCII.
+* CP367:                                 Tabular.
+* CP420:                                 Tabular.
+* CP423:                                 Tabular.
+* CP424:                                 Tabular.
+* CP437:                                 Tabular.
+* CP500:                                 Tabular.
+* CP819:                                 Tabular.
+* CP850:                                 Tabular.
+* CP851:                                 Tabular.
+* CP852:                                 Tabular.
+* CP855:                                 Tabular.
+* CP857:                                 Tabular.
+* CP860:                                 Tabular.
+* CP861:                                 Tabular.
+* CP862:                                 Tabular.
+* CP863:                                 Tabular.
+* CP864:                                 Tabular.
+* CP865:                                 Tabular.
+* CP868:                                 Tabular.
+* CP869:                                 Tabular.
+* CP870:                                 Tabular.
+* CP871:                                 Tabular.
+* CP875:                                 Tabular.
+* CP880:                                 Tabular.
+* CP891:                                 Tabular.
+* CP903:                                 Tabular.
+* CP904:                                 Tabular.
+* CP905:                                 Tabular.
+* CP912:                                 Tabular.
+* CP918:                                 Tabular.
+* CR, a surface:                         End lines.
+* CR-LF, a surface:                      End lines.
+* csa7-1:                                Tabular.
+* csa7-2:                                Tabular.
+* CSA_Z243.4-1985-1, aliases and source: Tabular.
+* CSA_Z243.4-1985-2, aliases and source: Tabular.
+* CSA_Z243.4-1985-gr, aliases and source: Tabular.
+* CSN_369103, aliases and source:        Tabular.
+* cuba:                                  Tabular.
+* CWI, aliases and source:               Tabular.
+* CWI-2:                                 Tabular.
+* cyrillic:                              Tabular.
+* d1:                                    Dump.
+* d2:                                    Dump.
+* d4:                                    Dump.
+* data, a special charset:               Surfaces.
+* de:                                    Tabular.
+* dec:                                   Tabular.
+* DEC-MCS, aliases and source:           Tabular.
+* Decimal-1:                             Dump.
+* Decimal-2:                             Dump.
+* Decimal-4:                             Dump.
+* DIN_66003, aliases and source:         Tabular.
+* dk:                                    Tabular.
+* dk-us, not recognised by recode:       Tabular.
+* dos:                                   IBM-PC.
+* DS2089:                                Tabular.
+* DS_2089, aliases and source:           Tabular.
+* dump-with-names:                       dump-with-names.
+* e13b:                                  Tabular.
+* EBCDIC, a charset:                     EBCDIC.
+* EBCDIC-AT-DE, aliases and source:      Tabular.
+* EBCDIC-AT-DE-A, aliases and source:    Tabular.
+* EBCDIC-BE:                             Tabular.
+* EBCDIC-BR:                             Tabular.
+* EBCDIC-CA-FR, aliases and source:      Tabular.
+* EBCDIC-CCC:                            EBCDIC.
+* ebcdic-cp-ar1:                         Tabular.
+* ebcdic-cp-ar2:                         Tabular.
+* ebcdic-cp-be:                          Tabular.
+* ebcdic-cp-ca:                          Tabular.
+* ebcdic-cp-ch:                          Tabular.
+* EBCDIC-CP-DK:                          Tabular.
+* ebcdic-cp-es:                          Tabular.
+* ebcdic-cp-fi:                          Tabular.
+* ebcdic-cp-fr:                          Tabular.
+* ebcdic-cp-gb:                          Tabular.
+* ebcdic-cp-gr:                          Tabular.
+* ebcdic-cp-he:                          Tabular.
+* ebcdic-cp-is:                          Tabular.
+* ebcdic-cp-it:                          Tabular.
+* ebcdic-cp-nl:                          Tabular.
+* EBCDIC-CP-NO:                          Tabular.
+* ebcdic-cp-roece:                       Tabular.
+* ebcdic-cp-se:                          Tabular.
+* ebcdic-cp-tr:                          Tabular.
+* ebcdic-cp-us:                          Tabular.
+* ebcdic-cp-wt:                          Tabular.
+* ebcdic-cp-yu:                          Tabular.
+* EBCDIC-Cyrillic:                       Tabular.
+* EBCDIC-DK-NO, aliases and source:      Tabular.
+* EBCDIC-DK-NO-A, aliases and source:    Tabular.
+* EBCDIC-ES, aliases and source:         Tabular.
+* EBCDIC-ES-A, aliases and source:       Tabular.
+* EBCDIC-ES-S, aliases and source:       Tabular.
+* EBCDIC-FI-SE, aliases and source:      Tabular.
+* EBCDIC-FI-SE-A, aliases and source:    Tabular.
+* EBCDIC-FR, aliases and source:         Tabular.
+* EBCDIC-Greek:                          Tabular.
+* EBCDIC-IBM:                            EBCDIC.
+* EBCDIC-INT:                            Tabular.
+* EBCDIC-INT1:                           Tabular.
+* EBCDIC-IS-FRISS, aliases and source:   Tabular.
+* EBCDIC-IT, aliases and source:         Tabular.
+* EBCDIC-JP-E:                           Tabular.
+* EBCDIC-JP-kana:                        Tabular.
+* EBCDIC-PT, aliases and source:         Tabular.
+* EBCDIC-UK, aliases and source:         Tabular.
+* EBCDIC-US, aliases and source:         Tabular.
+* ECMA-113:                              Tabular.
+* ECMA-113:1986:                         Tabular.
+* ECMA-114:                              Tabular.
+* ECMA-118:                              Tabular.
+* ECMA-cyrillic, aliases and source:     Tabular.
+* ELOT_928:                              Tabular.
+* ES, aliases and source:                Tabular.
+* ES2, aliases and source:               Tabular.
+* ewondo:                                African.
+* FI:                                    Tabular.
+* flat, a charset:                       flat.
+* fr:                                    Tabular.
+* friss:                                 Tabular.
+* FSS_UTF:                               UTF-8.
+* fulfude:                               African.
+* gb:                                    Tabular.
+* GB_1988-80, aliases and source:        Tabular.
+* GB_2312-80, not recognised by recode:  Tabular.
+* GOST_19768-74:                         Tabular.
+* GOST_19768-87, aliases and source:     Tabular.
+* greek:                                 Tabular.
+* greek-ccitt, aliases and source:       Tabular.
+* greek7, aliases and source:            Tabular.
+* greek7-old, aliases and source:        Tabular.
+* greek8:                                Tabular.
+* hebrew:                                Tabular.
+* Hexadecimal-1:                         Dump.
+* Hexadecimal-2:                         Dump.
+* Hexadecimal-4:                         Dump.
+* hp-roman8, aliases and source:         Tabular.
+* HTML, a charset:                       HTML.
+* hu:                                    Tabular.
+* IBM-PC:                                IBM-PC.
+* IBM-PC charset, and CR-LF surface:     Requests.
+* IBM037, aliases and source:            Tabular.
+* IBM038, aliases and source:            Tabular.
+* IBM1004, aliases and source:           Tabular.
+* IBM1026, aliases and source:           Tabular.
+* IBM1047, aliases and source:           Tabular.
+* IBM256, aliases and source:            Tabular.
+* IBM273, aliases and source:            Tabular.
+* IBM274, aliases and source:            Tabular.
+* IBM275, aliases and source:            Tabular.
+* IBM277, aliases and source:            Tabular.
+* IBM278, aliases and source:            Tabular.
+* IBM280, aliases and source:            Tabular.
+* IBM281, aliases and source:            Tabular.
+* IBM284, aliases and source:            Tabular.
+* IBM285, aliases and source:            Tabular.
+* IBM290, aliases and source:            Tabular.
+* IBM297, aliases and source:            Tabular.
+* IBM367 <1>:                            ASCII.
+* IBM367:                                Tabular.
+* IBM420, aliases and source:            Tabular.
+* IBM423, aliases and source:            Tabular.
+* IBM424, aliases and source:            Tabular.
+* ibm437:                                IBM-PC.
+* IBM437, aliases and source:            Tabular.
+* IBM500, aliases and source:            Tabular.
+* IBM819:                                Tabular.
+* IBM819, and CR-LF surface:             IBM-PC.
+* IBM850, aliases and source:            Tabular.
+* IBM851, aliases and source:            Tabular.
+* IBM852, aliases and source:            Tabular.
+* IBM855, aliases and source:            Tabular.
+* IBM857, aliases and source:            Tabular.
+* IBM860, aliases and source:            Tabular.
+* IBM861, aliases and source:            Tabular.
+* IBM862, aliases and source:            Tabular.
+* IBM863, aliases and source:            Tabular.
+* IBM864, aliases and source:            Tabular.
+* IBM865, aliases and source:            Tabular.
+* IBM868, aliases and source:            Tabular.
+* IBM869, aliases and source:            Tabular.
+* IBM870, aliases and source:            Tabular.
+* IBM871, aliases and source:            Tabular.
+* IBM875, aliases and source:            Tabular.
+* IBM880, aliases and source:            Tabular.
+* IBM891, aliases and source:            Tabular.
+* IBM903, aliases and source:            Tabular.
+* IBM904, aliases and source:            Tabular.
+* IBM905, aliases and source:            Tabular.
+* IBM912:                                Tabular.
+* IBM918, aliases and source:            Tabular.
+* Icon-QNX, and aliases:                 Icon-QNX.
+* IEC_P27-1, aliases and source:         Tabular.
+* INIS, aliases and source:              Tabular.
+* INIS-8, aliases and source:            Tabular.
+* INIS-cyrillic, aliases and source:     Tabular.
+* INVARIANT, aliases and source:         Tabular.
+* irv:                                   Tabular.
+* ISO-10646-UCS-2, and aliases:          UCS-2.
+* ISO-10646-UCS-4, and aliases:          UCS-4.
+* ISO-8859-1, aliases and source:        Tabular.
+* ISO-8859-10, aliases and source:       Tabular.
+* ISO-8859-13, aliases and source:       Tabular.
+* ISO-8859-14, aliases and source:       Tabular.
+* ISO-8859-15, aliases and source:       Tabular.
+* ISO-8859-2, aliases and source:        Tabular.
+* ISO-8859-3, aliases and source:        Tabular.
+* ISO-8859-4, aliases and source:        Tabular.
+* ISO-8859-5, aliases and source:        Tabular.
+* ISO-8859-6, aliases and source:        Tabular.
+* ISO-8859-7, aliases and source:        Tabular.
+* ISO-8859-8, aliases and source:        Tabular.
+* ISO-8859-9, aliases and source:        Tabular.
+* iso-baltic:                            Tabular.
+* iso-celtic:                            Tabular.
+* iso-ir-10:                             Tabular.
+* iso-ir-100:                            Tabular.
+* iso-ir-101:                            Tabular.
+* iso-ir-102:                            Tabular.
+* iso-ir-109:                            Tabular.
+* iso-ir-11:                             Tabular.
+* iso-ir-110:                            Tabular.
+* iso-ir-111:                            Tabular.
+* iso-ir-121:                            Tabular.
+* iso-ir-122:                            Tabular.
+* iso-ir-123:                            Tabular.
+* iso-ir-126:                            Tabular.
+* iso-ir-127:                            Tabular.
+* iso-ir-13:                             Tabular.
+* iso-ir-138:                            Tabular.
+* iso-ir-139:                            Tabular.
+* iso-ir-14:                             Tabular.
+* iso-ir-141:                            Tabular.
+* iso-ir-143:                            Tabular.
+* iso-ir-144:                            Tabular.
+* iso-ir-146:                            Tabular.
+* iso-ir-147:                            Tabular.
+* iso-ir-148:                            Tabular.
+* iso-ir-15:                             Tabular.
+* iso-ir-150:                            Tabular.
+* iso-ir-151:                            Tabular.
+* iso-ir-152:                            Tabular.
+* iso-ir-153:                            Tabular.
+* iso-ir-154:                            Tabular.
+* iso-ir-155:                            Tabular.
+* iso-ir-157:                            Tabular.
+* iso-ir-158:                            Tabular.
+* iso-ir-16:                             Tabular.
+* iso-ir-17:                             Tabular.
+* iso-ir-170:                            Tabular.
+* iso-ir-179:                            Tabular.
+* iso-ir-179a:                           Tabular.
+* iso-ir-18:                             Tabular.
+* iso-ir-19:                             Tabular.
+* iso-ir-199:                            Tabular.
+* iso-ir-2:                              Tabular.
+* iso-ir-203:                            Tabular.
+* iso-ir-21:                             Tabular.
+* iso-ir-25:                             Tabular.
+* iso-ir-27:                             Tabular.
+* iso-ir-37:                             Tabular.
+* iso-ir-4:                              Tabular.
+* iso-ir-47:                             Tabular.
+* iso-ir-49:                             Tabular.
+* iso-ir-50:                             Tabular.
+* iso-ir-51:                             Tabular.
+* iso-ir-54:                             Tabular.
+* iso-ir-55:                             Tabular.
+* iso-ir-57:                             Tabular.
+* iso-ir-6 <1>:                          ASCII.
+* iso-ir-6:                              Tabular.
+* iso-ir-60:                             Tabular.
+* iso-ir-61:                             Tabular.
+* iso-ir-69:                             Tabular.
+* iso-ir-8-1:                            Tabular.
+* iso-ir-8-2:                            Tabular.
+* iso-ir-84:                             Tabular.
+* iso-ir-85:                             Tabular.
+* iso-ir-86:                             Tabular.
+* iso-ir-88:                             Tabular.
+* iso-ir-89:                             Tabular.
+* iso-ir-9-1:                            Tabular.
+* iso-ir-9-2:                            Tabular.
+* iso-ir-90, not recognised by recode:   Tabular.
+* iso-ir-93:                             Tabular.
+* iso-ir-94:                             Tabular.
+* iso-ir-95:                             Tabular.
+* iso-ir-96:                             Tabular.
+* iso-ir-98:                             Tabular.
+* ISO646-CA:                             Tabular.
+* ISO646-CA2:                            Tabular.
+* ISO646-CN:                             Tabular.
+* ISO646-CU:                             Tabular.
+* ISO646-DE:                             Tabular.
+* ISO646-DK:                             Tabular.
+* ISO646-ES:                             Tabular.
+* ISO646-ES2:                            Tabular.
+* ISO646-FI:                             Tabular.
+* ISO646-FR:                             Tabular.
+* ISO646-FR1:                            Tabular.
+* ISO646-GB:                             Tabular.
+* ISO646-HU:                             Tabular.
+* ISO646-IT:                             Tabular.
+* ISO646-JP:                             Tabular.
+* ISO646-JP-OCR-B:                       Tabular.
+* ISO646-KR:                             Tabular.
+* ISO646-NO:                             Tabular.
+* ISO646-NO2:                            Tabular.
+* ISO646-PT:                             Tabular.
+* ISO646-PT2:                            Tabular.
+* ISO646-SE:                             Tabular.
+* ISO646-SE2:                            Tabular.
+* ISO646-US:                             Tabular.
+* ISO646-YU:                             Tabular.
+* ISO_10367-box, aliases and source:     Tabular.
+* ISO_10646:                             UCS-4.
+* ISO_2033-1983, aliases and source:     Tabular.
+* ISO_5427, aliases and source:          Tabular.
+* ISO_5427-ext, aliases and source:      Tabular.
+* ISO_5427:1981:                         Tabular.
+* ISO_5428, aliases and source:          Tabular.
+* ISO_5428:1980:                         Tabular.
+* ISO_646.basic, aliases and source:     Tabular.
+* ISO_646.basic:1983:                    Tabular.
+* ISO_646.irv, aliases and source:       Tabular.
+* ISO_646.irv:1983:                      Tabular.
+* ISO_646.irv:1991:                      Tabular.
+* ISO_6937-2-25, aliases and source:     Tabular.
+* ISO_6937-2-add, not recognised by recode: Tabular.
+* ISO_8859-1:                            Tabular.
+* ISO_8859-10:                           Tabular.
+* ISO_8859-10:1993:                      Tabular.
+* ISO_8859-13:                           Tabular.
+* ISO_8859-13:1998:                      Tabular.
+* ISO_8859-14:                           Tabular.
+* ISO_8859-14:1998:                      Tabular.
+* ISO_8859-15:                           Tabular.
+* ISO_8859-15:1998:                      Tabular.
+* ISO_8859-1:1987:                       Tabular.
+* ISO_8859-2:                            Tabular.
+* ISO_8859-2:1987:                       Tabular.
+* ISO_8859-3:                            Tabular.
+* ISO_8859-3:1988:                       Tabular.
+* ISO_8859-4:                            Tabular.
+* ISO_8859-4:1988:                       Tabular.
+* ISO_8859-5:                            Tabular.
+* ISO_8859-5:1988:                       Tabular.
+* ISO_8859-6:                            Tabular.
+* ISO_8859-6:1987:                       Tabular.
+* ISO_8859-7:                            Tabular.
+* ISO_8859-7:1987:                       Tabular.
+* ISO_8859-8:                            Tabular.
+* ISO_8859-8:1988:                       Tabular.
+* ISO_8859-9:                            Tabular.
+* ISO_8859-9:1989:                       Tabular.
+* ISO_8859-supp, aliases and source:     Tabular.
+* ISO_9036:                              Tabular.
+* isoir91:                               Tabular.
+* isoir92:                               Tabular.
+* IT, aliases and source:                Tabular.
+* JIS_C6220-1969:                        Tabular.
+* JIS_C6220-1969-jp, aliases and source: Tabular.
+* JIS_C6220-1969-ro, aliases and source: Tabular.
+* JIS_C6226-1978, not recognised by recode: Tabular.
+* JIS_C6229-1984-a, aliases and source:  Tabular.
+* JIS_C6229-1984-b, aliases and source:  Tabular.
+* JIS_C6229-1984-b-add, aliases and source: Tabular.
+* JIS_C6229-1984-hand, aliases and source: Tabular.
+* JIS_C6229-1984-hand-add, aliases and source: Tabular.
+* JIS_C6229-1984-kana, aliases and source: Tabular.
+* JIS_X0201, aliases and source:         Tabular.
+* JIS_X0212-1990, not recognised by recode: Tabular.
+* jp:                                    Tabular.
+* jp-ocr-a:                              Tabular.
+* jp-ocr-b:                              Tabular.
+* jp-ocr-b-add:                          Tabular.
+* jp-ocr-hand:                           Tabular.
+* jp-ocr-hand-add:                       Tabular.
+* js:                                    Tabular.
+* JUS_I.B1.002, aliases and source:      Tabular.
+* JUS_I.B1.003-mac, aliases and source:  Tabular.
+* JUS_I.B1.003-serb, aliases and source: Tabular.
+* Kamenicky:                             Cyrillic.
+* katakana:                              Tabular.
+* KEYBCS2:                               Cyrillic.
+* KOI-7, aliases and source:             Tabular.
+* KOI-8, aliases and source:             Tabular.
+* KOI-8_CS2:                             Cyrillic.
+* KOI-8_L2:                              Tabular.
+* KOI8-R, aliases and source:            Tabular.
+* KOI8-RU, aliases and source:           Tabular.
+* KOI8-U, aliases and source:            Tabular.
+* koi8l2:                                Tabular.
+* KS_C_5601-1987, not recognised by recode: Tabular.
+* KSC5636, aliases and source:           Tabular.
+* l1:                                    Tabular.
+* l2:                                    Tabular.
+* l3:                                    Tabular.
+* l4:                                    Tabular.
+* l5:                                    Tabular.
+* l6:                                    Tabular.
+* l7:                                    Tabular.
+* l8:                                    Tabular.
+* l9:                                    Tabular.
+* lap:                                   Tabular.
+* LaTeX, a charset:                      LaTeX.
+* Latin-1:                               ISO 8859.
+* latin-greek, aliases and source:       Tabular.
+* Latin-greek-1, aliases and source:     Tabular.
+* latin-lap:                             Tabular.
+* latin1:                                Tabular.
+* latin1-2-5:                            Tabular.
+* latin2:                                Tabular.
+* latin3:                                Tabular.
+* latin4:                                Tabular.
+* latin5:                                Tabular.
+* latin6:                                Tabular.
+* latin7:                                Tabular.
+* latin8:                                Tabular.
+* latin9:                                Tabular.
+* lin:                                   African.
+* lingala:                               African.
+* ltex:                                  LaTeX.
+* mac <1>:                               Apple-Mac.
+* mac:                                   Tabular.
+* mac-is, aliases and source:            Tabular.
+* macce <1>:                             Apple-Mac.
+* macce:                                 Tabular.
+* macedonian:                            Tabular.
+* macintosh, a charset, and its aliases: Apple-Mac.
+* macintosh, aliases and source:         Tabular.
+* macintosh_ce, aliases and source:      Tabular.
+* macintosh_ce, and its aliases:         Apple-Mac.
+* mnemonic, an alias for RFC1345 charset: Tabular.
+* ms-ansi:                               Tabular.
+* ms-arab:                               Tabular.
+* ms-cyrl:                               Tabular.
+* ms-ee:                                 Tabular.
+* ms-greek:                              Tabular.
+* ms-hebr:                               Tabular.
+* ms-turk:                               Tabular.
+* MSDOS:                                 IBM-PC.
+* MSZ_7795.3, aliases and source:        Tabular.
+* Mule, a charset:                       Mule.
+* NATS-DANO, aliases and source:         Tabular.
+* NATS-DANO-ADD, aliases and source:     Tabular.
+* NATS-SEFI, aliases and source:         Tabular.
+* NATS-SEFI-ADD, aliases and source:     Tabular.
+* NC_NC00-10, aliases and source:        Tabular.
+* NC_NC00-10:81:                         Tabular.
+* next:                                  Tabular.
+* NeXTSTEP, aliases and source:          Tabular.
+* NF_Z_62-010, aliases and source:       Tabular.
+* NF_Z_62-010_(1973), aliases and source: Tabular.
+* no:                                    Tabular.
+* no2:                                   Tabular.
+* NOS:                                   CDC-NOS.
+* NS_4551-1, aliases and source:         Tabular.
+* NS_4551-2, aliases and source:         Tabular.
+* o1:                                    Dump.
+* o2:                                    Dump.
+* o4:                                    Dump.
+* Octal-1:                               Dump.
+* Octal-2:                               Dump.
+* Octal-4:                               Dump.
+* os2latin1:                             Tabular.
+* pc:                                    IBM-PC.
+* pcl2:                                  Tabular.
+* pclatin2:                              Tabular.
+* PT, aliases and source:                Tabular.
+* PT2, aliases and source:               Tabular.
+* QNX, an alias for a charset:           Icon-QNX.
+* QP:                                    MIME.
+* quote-printable:                       MIME.
+* Quoted-Printable:                      MIME.
+* r8:                                    Tabular.
+* ref:                                   Tabular.
+* RFC1345, a charset, and its aliases:   Tabular.
+* roman8:                                Tabular.
+* rune:                                  UCS-2.
+* sami, aliases and source:              Tabular.
+* sango:                                 African.
+* se:                                    Tabular.
+* se2:                                   Tabular.
+* SEN_850200_B, aliases and source:      Tabular.
+* SEN_850200_C, aliases and source:      Tabular.
+* serbian:                               Tabular.
+* SS636127:                              Tabular.
+* ST_SEV_358-88:                         Tabular.
+* swabytes:                              Permutations.
+* t-bambara:                             African.
+* t-bra:                                 African.
+* t-ewondo:                              African.
+* t-fra:                                 African.
+* t-francais:                            African.
+* t-fulfude:                             African.
+* t-lin:                                 African.
+* t-lingala:                             African.
+* t-sango:                               African.
+* t-wolof:                               African.
+* T.101-G2, not recognised by recode:    Tabular.
+* T.61-7bit, aliases and source:         Tabular.
+* T.61-8bit, not recognised by recode:   Tabular.
+* T1:                                    Cyrillic.
+* test15:                                Debugging.
+* test16:                                Debugging.
+* test7:                                 Debugging.
+* test8:                                 Debugging.
+* texi:                                  Texinfo.
+* Texinfo, a charset:                    Texinfo.
+* Texte:                                 Texte.
+* TF-16:                                 UTF-16.
+* TF-7:                                  UTF-7.
+* TF-8:                                  UTF-8.
+* ti:                                    Texinfo.
+* txte:                                  Texte.
+* u2:                                    UCS-2.
+* u4:                                    UCS-4.
+* u6:                                    UTF-16.
+* u7:                                    UTF-7.
+* u8:                                    UTF-8.
+* UCS:                                   Universal.
+* UCS-2:                                 UCS-2.
+* UCS-4:                                 UCS-4.
+* uk:                                    Tabular.
+* Unicode, an alias for UTF-16:          UTF-16.
+* UNICODE-1-1-UTF-7, and aliases:        UTF-7.
+* us <1>:                                ASCII.
+* us:                                    Tabular.
+* US-ASCII <1>:                          ASCII.
+* US-ASCII:                              Tabular.
+* us-dk, not recognised by recode:       Tabular.
+* UTF-1:                                 Universal.
+* UTF-16, and aliases:                   UTF-16.
+* UTF-7:                                 UTF-7.
+* UTF-8:                                 UTF-8.
+* UTF-8, aliases:                        UTF-8.
+* UTF-FSS:                               UTF-8.
+* WinBaltRim:                            Tabular.
+* windows-1250:                          Tabular.
+* windows-1251:                          Tabular.
+* windows-1252:                          Tabular.
+* windows-1253:                          Tabular.
+* windows-1254:                          Tabular.
+* windows-1255:                          Tabular.
+* windows-1256:                          Tabular.
+* windows-1257:                          Tabular.
+* wolof:                                 African.
+* X0201:                                 Tabular.
+* x0201-7:                               Tabular.
+* x1:                                    Dump.
+* x2:                                    Dump.
+* x4:                                    Dump.
+* yu:                                    Tabular.
+
+
index c2f3bf220f348ca292aa6a60ea0752b01b6e9710..96f19c67f20fc497962f84e3281fdd967c5c6745 100644 (file)
@@ -1,19 +1,21 @@
-\input texinfo
+\input texinfo        @c -*-texinfo-*-          -*- coding: latin-1 -*-
 @c %**start of header
 @setfilename recode.info
 @settitle The @code{recode} reference manual
+
+@c An index for command-line options
+@defcodeindex op
+@c Put variable and function names together
+@syncodeindex vr fn
 @finalout
 @c %**end of header
 
 @include version.texi
 
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
+@dircategory Internationalization and character sets
+@direntry
 * recode: (recode).     Conversion between character sets and surfaces.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
+@end direntry
 
 @ifinfo
 This file documents the @code{recode} command, which has the purpose of
@@ -68,7 +70,7 @@ except that this permission notice may be stated in a translation approved
 by the Foundation.
 @end titlepage
 
-@ifinfo
+@ifnottex
 @node Top, Tutorial, (dir), (dir)
 @top @code{recode}
 
@@ -98,8 +100,13 @@ The current @code{recode} release is @value{VERSION}.
 * Miscellaneous::       Various other charsets
 * Surfaces::            All about surfaces
 * Internals::           Internal aspects
+* Concept Index::
+* Option Index::
+* Library Index::
+* Charset and Surface Index::
 
 @detailmenu
+
  --- The Detailed Node Listing ---
 
 Terminology and purpose
@@ -189,11 +196,13 @@ Internal aspects
 @end detailmenu
 @end menu
 
-@end ifinfo
+@end ifnottex
 
 @node Tutorial, Introduction, Top, Top
 @chapter Quick Tutorial
 
+@cindex @code{recode} use, a tutorial
+@cindex tutorial
 So, really, you just are in a hurry to use @code{recode}, and do not
 feel like studying this manual?  Even reading this paragraph slows you down?
 We might have a problem, as you will have to do some guess work, and might
@@ -317,6 +326,7 @@ strict way, while it does not want to throw more confusion in the field.
 On the other hand, it would not be efficient using paraphrases all the time,
 so @code{recode} coins a few short words, which are explained below.
 
+@cindex charset, what it is
 A @dfn{charset}, in the context of @code{recode}, is a particular association
 between computer codes on one side, and a repertoire of intended characters
 on the other side.  Codes are usually taken from a set of consecutive
@@ -332,6 +342,7 @@ An coded character set does not necessarily use all available code positions,
 while a MIME charset usually tries to specify them all.  A MIME charset
 might be the union of a few disjoint coded character sets.
 
+@cindex surface, what it is
 A @dfn{surface} is a term used in @code{recode} only, and is a short for
 surface transformation of a charset stream.  This is any kind of mapping,
 usually reversible, which associates physical bits in some medium for
@@ -378,12 +389,12 @@ those of Keld Simonsen.
 @node Charset overview, Surface overview, Introduction, Introduction
 @section Overview of charsets
 
+@cindex charsets, overview
 Recoding is currently possible between many charsets, the bulk of which
 is described by @w{RFC 1345} tables.  @xref{Tabular}.  The @code{recode}
 library also handles some charsets in some specialised ways.  These are:
 
 @itemize @bullet
-
 @item
 6-bit charsets based on CDC display code: 6/12 code from NOS; bang-bang
 code from Universit@'e de Montr@'eal;
@@ -402,7 +413,6 @@ the PC, Apple's code for the Macintosh;
 
 @item
 16-bit or 31-bit universal characters, and their transfer encodings.
-
 @end itemize
 
 The introduction of @w{RFC 1345} in @code{recode} has brought with it a few
@@ -413,6 +423,7 @@ now, clashes are avoided, the old and new charsets are kept well separate.
 @node Surface overview, Contributing, Charset overview, Introduction
 @section Overview of surfaces
 
+@cindex surfaces, overview
 For various practical considerations, it sometimes happens that the codes
 making up a text, written in a particular charset, cannot simply be put
 out in a file one after another without creating problems or breaking
@@ -424,6 +435,8 @@ those practical constraints.  Moreover, similar surfaces or tricks may
 be useful for many unrelated charsets, and many surfaces can be used at
 once over a single charset.
 
+@cindex pure charset
+@cindex charset, pure
 So, @code{recode} has machinery to describe a combination of a charset with
 surfaces used over it in a file.  We would use the expression @dfn{pure
 charset} for referring to a charset free of any surface, that is, the
@@ -438,6 +451,7 @@ surface as if it were a charset, this is preferred, and done.
 @node Contributing, , Surface overview, Introduction
 @section Contributions and bug reports
 
+@cindex contributing charsets
 Even being the @code{recode} author and current maintainer, I am no
 specialist in charset standards.  I only made @code{recode} along the
 years to solve my own needs, but felt it was applicable for the needs
@@ -470,11 +484,13 @@ while some others have to be delayed, I have to draw a line somewhere when
 time comes to make a new release, about what would go in it and what would
 go in the next.
 
+@cindex bug reports, where to send
+@cindex reporting bugs
 Please send suggestions, documentation errors and bug reports to
 @email{recode-bugs@@iro.umontreal.ca} or, if you prefer, directly to
-Fran@,{c}ois Pinard@footnote{Use @email{pinard@@iro.umontreal.ca}
-to reach me}.  Do not be afraid to report details, because this program
-is the mere aggregation of hundreds of details.
+@email{pinard@@iro.umontreal.ca}, Fran@,{c}ois Pinard.  Do not be afraid
+to report details, because this program is the mere aggregation of
+hundreds of details.
 
 @node Invoking recode, Library, Introduction, Top
 @chapter How to use this program
@@ -500,6 +516,8 @@ control.
 @node Synopsis, Requests, Invoking recode, Invoking recode
 @section Synopsis of @code{recode} call
 
+@cindex @code{recode}, synopsis of invocation
+@cindex invocation of @code{recode}, synopsis
 The general format of the program call is one of:
 
 @example
@@ -515,7 +533,7 @@ In other calls, the first parameter (@var{request}) always explains which
 transformations are expected on the files.  There are many variations to
 the aspect of this parameter.  We will discuss more complex situations
 later (@pxref{Requests}), but for many simple cases, this parameter
-merely looks like@footnote{In previous versions or @code{recode}, a single
+merely looks like this@footnote{In previous versions or @code{recode}, a single
 colon @samp{:} was used instead of the two dots @samp{..} for separating
 charsets, but this was creating problems because colons are allowed in
 official charset names.  The old request syntax is still recognised for
@@ -531,6 +549,8 @@ where @var{before} and @var{after} each gives the name of a charset.  Each
 will be recoded over itself so to use the charset @var{after}.  If there
 is no @var{file} on the @code{recode} command, the program rather acts
 as a Unix filter and transforms standard input onto standard output.
+@cindex filter operation
+@cindex @code{recode}, operation as filter
 
 The capability of recoding many files at once is very convenient.
 For example, one could easily prepare a distribution from @w{Latin-1} to MSDOS,
@@ -579,21 +599,28 @@ In the case where the @var{request} is merely written as
 @var{before}..@var{after}, then @var{before} and @var{after} specify the
 start charset and the goal charset for the recoding.
 
+@cindex charset names, valid characters
+@cindex valid characters in charset names
 For @code{recode}, charset names may contain any character, besides a
 comma, a forward slash, or two periods in a row.  But in practice, charset
 names are currently limited to alphabetic letters (upper or lower case),
 digits, hyphens, underlines, periods, colons or round parentheses.
 
-The complete syntax for allowable @var{request} allows for unusual
+@cindex request, syntax
+@cindex @code{recode} request syntax
+The complete syntax for a valid @var{request} allows for unusual
 things, which might surprise at first.  (Do not pay too much attention
-to these facilities on first reading.)  For example, @var{request}
-may also contain intermediary charsets, like in:
+to these facilities on first reading.)  For example, @var{request}
+may also contain intermediate charsets, like in the following example:
 
 @example
 @var{before}..@var{interim1}..@var{interim2}..@var{after}
 @end example
 
 @noindent
+@cindex intermediate charsets
+@cindex chaining of charsets in a request
+@cindex charsets, chaining in a request
 meaning that @code{recode} should internally produce the @var{interim1}
 charset from the start charset, then work out of this @var{interim1}
 charset to internally produce @var{interim2}, and from there towards the
@@ -619,13 +646,14 @@ following one.  For example, the two following requests are equivalent:
 @noindent
 In this example, the charset input for any recoding sub-request is identical
 to the charset output by the preceding sub-request.  But it does not have
-to be in the general case.  One might wonder what would be the meaning
+to be so in the general case.  One might wonder what would be the meaning
 of declaring the charset input for a recoding sub-request of being of
 different nature than the charset output by a preceding sub-request, when
-recodings are chained in this way.  These strange usages might have a
+recodings are chained in this way.  Such a strange usage might have a
 meaning and be useful for the @code{recode} expert, but they are quite
 uncommon in practice.
 
+@cindex surfaces, syntax
 More useful is the distinction between the concept of charset, and
 the concept of surfaces.  An encoded charset is represented by:
 
@@ -634,6 +662,8 @@ the concept of surfaces.  An encoded charset is represented by:
 @end example
 
 @noindent
+@cindex surfaces, commutativity
+@cindex commutativity of surfaces
 using slashes to introduce surfaces, if any.  The order of application
 of surfaces is usually important, they cannot be freely commuted.  In the
 given example, @var{surface1} is first applied over the @var{pure-charset},
@@ -650,6 +680,9 @@ have @var{surface2} removed first (because it was applied last), then
 codes from charset @var{before} to charset @var{after}, prior to applying
 @var{surface3} over the result.
 
+@cindex implied surfaces
+@cindex surfaces, implied
+@tindex IBM-PC charset, and CR-LF surface
 Some charsets have one or more @emph{implied} surfaces.  In this case, the
 implied surfaces are automatically handled merely by naming the charset,
 without any explicit surface to qualify it.  Let's take an example to
@@ -662,6 +695,10 @@ the slash introduces surfaces, and even if the surface list is empty, it
 effectively defeats the automatic removal of surfaces for this charset.
 So, empty surfaces are useful, indeed!
 
+@cindex aliases
+@cindex alternate names for charsets and surfaces
+@cindex charsets, aliases
+@cindex surfaces, aliases
 Both charsets and surfaces may have predefined alternate names, or aliases.
 However, and this is rather important to understand, implied surfaces
 are attached to individual aliases rather than on genuine charsets.
@@ -669,10 +706,13 @@ Consequently, the official charset name and all of its aliases do not
 necessarily share the same implied surfaces.  The charset and all its
 aliases may each have its own different set of implied surfaces.
 
+@cindex abbreviated names for charsets and surfaces
+@cindex names of charsets and surfaces, abbreviation
 Charset names, surface names, or their aliases may always be abbreviated
 to any unambiguous prefix.  Internally in @code{recode}, disambiguating
 tables are kept separate for charset names and surface names.
 
+@cindex letter case, in charset and surface names
 While recognising a charset name or a surface name (or aliases thereof),
 @code{recode} ignores all characters besides letters and digits, so for
 example, the hyphens and underlines being part of an official charset
@@ -682,16 +722,19 @@ no distinction between upper and lower case for charset or surface names.
 One of the @var{before} or @var{after} keywords may be omitted.  If the
 double dot separator is omitted too, then the charset is interpreted as
 the @var{before} charset.@footnote{Both @var{before} and @var{after} may
-be omitted, in which case the double dot separator may not.  This would
-not be very meaningful, as the recoding reduces to a mere copy in that case.}
+be omitted, in which case the double dot separator is mandatory.  This is
+not very useful, as the recoding reduces to a mere copy in that case.}
 
+@cindex default charset
+@cindex charset, default
+@vindex DEFAULT_CHARSET
 When a charset name is omitted or left empty, the value of the
 @code{DEFAULT_CHARSET} variable in the environment is used instead.  If this
-variable is not defined, the @code{recode} library uses an @emph{usual
+variable is not defined, the @code{recode} library uses the @dfn{usual
 charset} which is installation dependent.  When this variable is defined but
-has an empty value, charset names may just not be omitted.  Unless overriden
-when @code{recode} was installed, this usual charset is @code{Latin-1} for
-Unix systems or @code{IBM-PC} for MS-DOS machines.
+has an empty value, charset names may not be omitted.  Unless overriden
+when @code{recode} was installed, the usual charset is @code{Latin-1} for
+Unix systems or @code{IBM-PC} for MS-DOS/MS-Windows machines.
 
 If the charset name is omitted but followed by surfaces, the surfaces
 then qualify the usual or default charset.  For example, the request
@@ -716,15 +759,22 @@ they are not meant to accompany actual file recodings.  These options are:
 @table @samp
 
 @item --version
+@opindex --version
+@cindex @code{recode} version, printing
 The program merely prints its version numbers on standard output, and
 exits without doing anything else.
 
 @item --help
+@opindex --help
+@cindex help page, printing
 The program merely prints a page of help on standard output, and exits
 without doing any recoding.
 
 @item -C
 @itemx --copyright
+@opindex -C
+@opindex --copyright
+@cindex copyright conditions, printing
 Given this option, all other parameters and options are ignored.  The
 program prints briefly the copyright and copying conditions.  See the
 file @file{COPYING} in the distribution for full statement of the
@@ -732,6 +782,12 @@ Copyright and copying conditions.
 
 @item -h[@var{language}/][@var{name}]
 @itemx --header[=[@var{language}/][@var{name}]]
+@opindex -h
+@opindex --header
+@cindex source file generation
+@cindex programming language support
+@cindex languages, programming
+@cindex supported programming languages
 Instead of recoding files, @code{recode} writes a @var{language} source
 file on standard output and exits.  This source is meant to be included
 in a regular program written in the same programming @var{language}:
@@ -753,11 +809,15 @@ tabular recodings, it also avoids the processing of implied surfaces.
 But this is all fairly technical.  Better try and see!
 
 Beware that other options might affect the produced source tables, these
-are: @code{-d}, @code{-g} and, particularly, @code{-s}.
+are: @samp{-d}, @samp{-g} and, particularly, @samp{-s}.
 
 @item -k @var{pairs}
 @itemx --known=@var{pairs}
-
+@opindex -k
+@opindex --known=
+@cindex unknown charsets
+@cindex guessing charsets
+@cindex charsets, guessing
 This particular option is meant to help identifying an unknown charset,
 using as hints some already identified characters of the charset.  Some
 examples will help introducing the idea.
@@ -863,6 +923,10 @@ ambiguous prefix.
 
 @item -l[@var{format}]
 @itemx --list[=@var{format}]
+@opindex -l
+@opindex --list
+@cindex listing charsets
+@cindex information about charsets
 This option asks for information about all charsets, or about one
 particular charset.  No file will be recoded.
 
@@ -879,17 +943,16 @@ recode -l | grep -i greek
 
 There might be one non-option argument, in which case it is interpreted
 as a charset name, possibly abbreviated to any non ambiguous prefix.
-This particular usage of the @code{-l} option is obeyed @emph{only} for
+This particular usage of the @samp{-l} option is obeyed @emph{only} for
 charsets having a tabular style internal description (@pxref{Tabular}).
-Even if most charsets have this property, some do not, then option
-@code{-l} cannot be used to detail these particular charsets.  For knowing
+Even if most charsets have this property, some do not, and the option
+@samp{-l} cannot be used to detail these particular charsets.  For knowing
 if a particular charset can be listed this way, you should merely try
 and see if this works.  The @var{format} value of the option is a keyword
 from the following list.  Keywords may be abbreviated by dropping suffix
 letters, and even reduced to the first letter only:
 
 @table @samp
-
 @item decimal
 This format asks for the production on standard output of a concise
 tabular display of the charset, in which character code values are
@@ -909,28 +972,33 @@ using one line per character showing its decimal, hexadecimal, octal and
 @code{UCS-2} code values, and also a descriptive comment which should be
 the 10646 name for the character.
 
+@vindex LANGUAGE@r{, when listing charsets}
+@vindex LANG@r{, when listing charsets}
+@cindex French description of charsets
 The descriptive comment is given in English and ASCII, yet if the English
 description is not available but a French one is, then the French description
 is given instead, using @w{Latin-1}.  However, if the @code{LANGUAGE}
 or @code{LANG} environment variable begins with the letters @samp{fr},
 then listing preference goes to French when both descriptions are available.
-
 @end table
 
-When option @code{-l} is used together with a @var{charset} argument,
+When option @samp{-l} is used together with a @var{charset} argument,
 the @var{format} defaults to @code{decimal}.
 
 @item -T
 @itemx --find-subsets
-
+@opindex -T
+@opindex --find-subsets
+@cindex identifying subsets in charsets
+@cindex subsets in charsets
 This option is a maintainer tool for evaluating the redundancy of those
 charsets, in @code{recode}, which are internally represented by an @code{UCS-2}
 data table.  After the listing has been produced, the program exits
-without doing any recoding.  The output of is meant to be sorted, like
+without doing any recoding.  The output is meant to be sorted, like
 this: @w{@samp{recode -T | sort}}.  The option triggers @code{recode} into
 comparing all pairs of charsets, seeking those which are subsets of others.
 The concept and results are better explained through a few examples.
-Consider these three sample lines from @code{-T} output:
+Consider these three sample lines from @samp{-T} output:
 
 @example
 [  0] IBM891 == IBM903
@@ -948,7 +1016,6 @@ that @code{INVARIANT} is wholly contained within @code{CSA_Z243.4-1985-1},
 but twelve characters are in @code{CSA_Z243.4-1985-1} without being in
 @code{INVARIANT}.  The whole output might most probably be reduced and
 made more significant through a transitivity study.
-
 @end table
 
 @node Recoding, Reversibility, Listings, Invoking recode
@@ -961,21 +1028,32 @@ grain control over the recoding operation themselves.
 
 @item -c
 @itemx --colons
+@opindex -c
+@opindex --colons
+@cindex diaeresis
 With @code{Texte} Easy French conventions, use the column @kbd{:}
 instead of the double-quote @kbd{"} for marking diaeresis.
 @xref{Texte}.
 
 @item -g
 @itemx --graphics
+@opindex -g
+@opindex --graphics
+@cindex IBM graphics characters
+@cindex box-drawing characters
 This option is only meaningful while getting @emph{out} of the
 @code{IBM-PC} charset.  In this charset, characters 176 to 223 are used
 for constructing rulers and boxes, using simple or double horizontal or
 vertical lines.  This option forces the automatic selection of ASCII
 characters for approximating these rulers and boxes, at cost of making
-the transformation irreversible.  Option @code{-g} implies @code{-f}.
+the transformation irreversible.  Option @samp{-g} implies @samp{-f}.
 
 @item -t
 @itemx --touch
+@opindex -t
+@opindex --touch
+@cindex time stamps of files
+@cindex file time stamps
 The @emph{touch} option is meaningful only when files are recoded over
 themselves.  Without it, the time-stamps associated with files are
 preserved, to reflect the fact that changing the code of a file does not
@@ -985,8 +1063,14 @@ inhibits the automatic protection of the time-stamps.
 
 @item -v
 @itemx --verbose
-Before doing any recoding, the program will first print on @file{stderr}
-the list of all intermediate charsets planned for recoding, starting
+@opindex -v
+@opindex --verbose
+@cindex verbose operation
+@cindex details about recoding
+@cindex recoding details
+@cindex quality of recoding
+Before doing any recoding, the program will first print on the @code{stderr}
+stream the list of all intermediate charsets planned for recoding, starting
 with the @var{before} charset and ending with the @var{after} charset.
 It also prints an indication of the recoding quality, as one of the word
 @samp{reversible}, @samp{one to one}, @samp{one to many}, @samp{many to
@@ -997,7 +1081,7 @@ only when the optimisation and step merging phase succeeds in replacing
 many single steps by a new one.
 
 This option also has a second effect.  The program will print on
-@file{stderr} one message per @var{file} recoded, so to keep the user
+@code{stderr} one message per recoded @var{file}, so as to keep the user
 informed of the progress of its command.
 
 An easy way to know beforehand the sequence or quality of a recoding is
@@ -1008,11 +1092,15 @@ recode -v @var{before}..@var{after} < /dev/null
 @end example
 
 @noindent
-also using the fact that, in @code{recode}, an empty input file produces
+using the fact that, in @code{recode}, an empty input file produces
 an empty output file.
 
 @item -x @var{charset}
 @itemx --ignore=@var{charset}
+@opindex -x
+@opindex --ignore
+@cindex ignore charsets
+@cindex recoding path, rejection
 This option tells the program to ignore any recoding path through the
 specified @var{charset}, so disabling any single step using this charset
 as a start or end point.  This may be used when the user wants to force
@@ -1020,7 +1108,6 @@ as a start or end point.  This may be used when the user wants to force
 requests offers a finer control, @pxref{Requests}).
 
 @var{charset} may be abbreviated to any unambiguous prefix.
-
 @end table
 
 @node Reversibility, Sequencing, Recoding, Invoking recode
@@ -1029,9 +1116,12 @@ requests offers a finer control, @pxref{Requests}).
 The following options are somewhat related to reversibility issues:
 
 @table @samp
-
 @item -f
 @itemx --force
+@opindex -f
+@opindex --force
+@cindex force recoding
+@cindex irreversible recoding
 With this option, irreversible or otherwise erroneous recodings are run
 to completion, and @code{recode} does not exit with a non-zero status if
 it would be only because irreversibility matters.  @xref{Reversibility}.
@@ -1058,6 +1148,12 @@ whenever convenient, in preparation for the current behaviour.
 @item -q
 @itemx --quiet
 @itemx --silent
+@opindex -q
+@opindex --quiet
+@opindex --silent
+@cindex suppressing diagnostic messages
+@cindex error messages, suppressing
+@cindex silent operation
 This option has the sole purpose of inhibiting warning messages about
 irreversible recodings, and other such diagnostics.  It has no other
 effect, in particular, it does @emph{not} prevent recodings to be aborted
@@ -1066,32 +1162,37 @@ recodings are met.
 
 This option is set automatically for the children processes, when recode
 splits itself in many collaborating copies.  Doing so, the diagnostic is
-issued only once by the parent.  See option @code{-p}.
+issued only once by the parent.  See option @samp{-p}.
 
 @item -s
 @itemx --strict
+@opindex -s
+@opindex --strict
+@cindex strict operation
+@cindex map filling, disable
+@cindex disable map filling
 By using this option, the user requests that @code{recode} be very strict
 while recoding a file, merely losing in the transformation any character
 which is not explicitly mapped from a charset to another.  Such a loss is
 not reversible and so, will bring @code{recode} to fail, unless the option
-@code{-f} is also given as a kind of counter-measure.
+@samp{-f} is also given as a kind of counter-measure.
 
-Using @code{-s} without @code{-f} might render the @code{recode} program
-very susceptible to the slighest file abnormalities.  Despite it might be
+Using @samp{-s} without @samp{-f} might render the @code{recode} program
+very susceptible to the slighest file abnormalities.  Despite the fact
+that it might be
 irritating to some users, such paranoia is sometimes wanted and useful.
-
 @end table
 
-Even if @code{recode} tries hard at keeping the recodings reversible,
+@cindex reversibility of recoding
+Even if @code{recode} tries hard to keep the recodings reversible,
 you should not develop an unconditional confidence in its ability to
 do so.  You @emph{ought} to keep only reasonable expectations about
 reverse recodings.  In particular, consider:
 
 @itemize @bullet
-
 @item
 Most transformations are fully reversible for all inputs, but lose this
-property whenever @code{-s} is specified.
+property whenever @samp{-s} is specified.
 
 @item
 A few transformations are not meant to be reversible, by design.
@@ -1128,10 +1229,10 @@ example, in a @code{LaTeX} charset file, the string @samp{\^\i@{@}}
 could be recoded back and forth through another charset and become
 @samp{\^@{\i@}}.  Even if the resulting file is equivalent to the
 original one, it is not identical.
-
 @end itemize
 
-Unless option @code{-s} is used, @code{recode} automatically tries to
+@cindex map filling
+Unless option @samp{-s} is used, @code{recode} automatically tries to
 fill mappings with invented correspondences, often making them fully
 reversible.  This filling is not made at random.  The algorithm tries to
 stick to the identity mapping and, when this is not possible, it prefers
@@ -1149,7 +1250,7 @@ within @code{IBM-PC}, which is 186 in @code{Latin-1}.  Code 186 within
 As a consequence of this map filling, @code{recode} may sometimes produce
 @emph{funny} characters.  They may look annoying, they are nevertheless
 helpful when one changes his (her) mind and wants to revert to the prior
-recoding.  If you cannot stand these, use option @code{-s}, which asks
+recoding.  If you cannot stand these, use option @samp{-s}, which asks
 for a very strict recoding.
 
 This map filling sometimes has a few surprising consequences, which
@@ -1158,7 +1259,7 @@ some users wrongly interpreted as bugs.  Here are two examples.
 @enumerate
 @item
 In some cases, @code{recode} seems to copy a file without recoding it.
-But in fact, it does.  Consider you requested:
+But in fact, it does.  Consider a request:
 
 @example
 recode l1..us < File-Latin1 > File-ASCII
@@ -1167,24 +1268,26 @@ cmp File-Latin1 File-ASCII
 
 @noindent
 then @code{cmp} will not report any difference.  This is quite normal.
-@w{Latin-1} gets correctly recoded to ASCII for charsets commonalities
+@w{@code{Latin-1}} gets correctly recoded to ASCII for charsets commonalities
 (which are the first 128 characters, in this case).  The remaining last
-128 @w{Latin-1} characters have no ASCII correspondent.  Instead of losing
-them, recode elects to map them to unspecified characters of ASCII, so
+128 @w{@code{Latin-1}} characters have no ASCII correspondent.  Instead
+of losing
+them, @code{recode} elects to map them to unspecified characters of ASCII, so
 making the recoding reversible.  The simplest way of achieving this is
 merely to keep those last 128 characters unchanged.  The overall effect
 is copying the file verbatim.
 
 If you feel this behaviour is too generous and if you do not wish to
-care about reversibility, simply use option @code{-s}.  By doing so,
-@code{recode} will strictly map only those @w{Latin-1} characters which have
+care about reversibility, simply use option @samp{-s}.  By doing so,
+@code{recode} will strictly map only those @w{@code{Latin-1}} characters
+which have
 an ASCII equivalent, and will merely drop those which do not.  Then,
 there is more chance that you will observe a difference between the
 input and the output file.
 
 @item
 Recoding the wrong way could sometimes give the false impression that
-recoding has @emph{almost} been done properly.  Consider you request:
+recoding has @emph{almost} been done properly.  Consider the requests:
 
 @example
 recode 437..l1 < File-Latin1 > Temp1
@@ -1193,13 +1296,14 @@ recode 437..l1 < Temp1 > Temp2
 
 @noindent
 so declaring wrongly @file{File-Latin1} to be an IBM-PC file, and
-recoding to Latin1.  This is surely ill defined and not meaningful.
+recoding to @code{Latin-1}.  This is surely ill defined and not meaningful.
 Yet, if you repeat this step a second time, you might notice that
 many (not all) characters in @file{Temp2} are identical to those in
-@file{File-Latin1}.  A few people try to discover how @code{recode}
+@file{File-Latin1}.  Sometimes, people try to discover how @code{recode}
 works by experimenting a little at random, rather than reading and
-understanding the documentation; such results are surely confusing,
-as they provide a feel to those people that they understood something.
+understanding the documentation; results such as this are surely confusing,
+as they provide those people with a false feeling that they understood
+something.
 
 Reversible codings have this property that, if applied several times
 in the same direction, they will eventually bring any character back
@@ -1211,12 +1315,12 @@ recoding twice in the same direction will recover most characters,
 but will fail to recover those participating in permutation cycles of
 length 3.  On the other end, recoding six times in the same direction
 would recover all characters in cycles of length 1, 2, 3 or 6.
-
 @end enumerate
 
 @node Sequencing, Mixed, Reversibility, Invoking recode
 @section Selecting sequencing methods
 
+@cindex sequencing
 This program uses a few techniques when it is discovered that many
 passes are needed to comply with the @var{request}.  For example,
 suppose that four elementary steps were selected at recoding path
@@ -1236,8 +1340,9 @@ or @samp{files}.  So, these options may be used to override the default
 behaviour, which is also explained below.
 
 @table @samp
-
 @item --sequence=memory
+@opindex --sequence
+@cindex memory sequencing
 When the recoding requires a combination of two or more elementary
 recoding steps, this option forces many passes over the data, using
 in-memory buffers to hold all intermediary results.
@@ -1246,6 +1351,8 @@ in-memory buffers to hold all intermediary results.
 
 @item -i
 @itemx --sequence=files
+@opindex -i
+@cindex file sequencing
 When the recoding requires a combination of two or more elementary
 recoding steps, this option forces many passes over the data, using
 intermediate files between passes.  This is the default behaviour when
@@ -1256,18 +1363,19 @@ start receiving some recoded data.
 
 @item -p
 @itemx --sequence=pipe
+@opindex -p
+@cindex pipe sequencing
 When the recoding requires a combination of two or more elementary
 recoding steps, this option forces the program to fork itself into a few
 copies interconnected with pipes, using the @code{pipe(2)} system call.
 All copies of the program operate in parallel.  This is the default
 behaviour in filter mode.  If this option is used when files are recoded
 over themselves, this should also save disk space because some temporary
-files might not be needed, at cost of more system overhead.
+files might not be needed, at the cost of more system overhead.
 
 If, at installation time, the @code{pipe(2)} call is said to be
-unavailable, selecting option @code{-p} is equivalent to selecting
-option @code{-i}.
-
+unavailable, selecting option @samp{-p} is equivalent to selecting
+option @samp{-i}.  (This happens, for example, on MS-DOS systems.)
 @end table
 
 @node Mixed, Emacs, Sequencing, Invoking recode
@@ -1277,7 +1385,7 @@ In real life and practice, textual files are often made up of many charsets
 at once.  Some parts of the file encode one charset, while other parts
 encode another charset, and so forth.  Usually, a file does not toggle
 between more than two or three charsets.  The means to distinguish
-which charsets are encoded at various places is not always easy.
+which charsets are encoded at various places is not always available.
 The @code{recode} program is able to handle only a few simple cases
 of mixed input.
 
@@ -1316,9 +1424,12 @@ phenomena.  The transliteration which you are asking for, here, is that the
 @end ignore
 
 @table @samp
-
 @item -d
 @itemx --diacritics
+@opindex -d
+@opindex --diacritics
+@cindex convert a subset of characters
+@cindex partial conversion
 While converting to or from one of @code{HTML} or @code{LaTeX}
 charset, limit conversion to some subset of all characters.
 For @code{HTML}, limit conversion to the subset of all non-ASCII
@@ -1339,7 +1450,10 @@ coded or protected versions of characters not in the said subset.
 @ignore
 @item -M
 @itemx --message
-Option -M would be for messages, it would ideally process @w{RFC 1522} inserts
+@opindex -M
+@opindex --message
+Option @samp{-M} would be for messages, it would ideally process @w{RFC
+1522} inserts
 in ASCII headers, converting them to the goal code, rewriting some MIME
 header line too, and stopping its special work at the first empty line.
 A special combination of both capabilities would be for the recoding of
@@ -1350,6 +1464,10 @@ a nightmare, which I would like @code{recode} to repair.
 
 @item -S[@var{language}]
 @itemx --source[=@var{language}]
+@opindex -S
+@opindex --source
+@cindex convert strings and comments
+@cindex string and comments conversion
 The bulk of the input file is expected to be written in @code{ASCII},
 except for parts, like comments and string constants, which are written
 using another charset than @code{ASCII}.  When @var{language} is @samp{c},
@@ -1364,7 +1482,7 @@ or string should be such that an @code{ASCII} scan will successfully find
 where the comment or string ends.
 
 Even if @code{ASCII} is the usual charset for writing programs, some
-compilers are able to directly read other charsets, like @code{UTF-8} say.
+compilers are able to directly read other charsets, like @code{UTF-8}, say.
 There is currently no provision in @code{recode} for reading mixed charset
 sources which are not based on @code{ASCII}.  It is probable that the need
 for mixed recoding is not as pressing in such cases.
@@ -1377,13 +1495,12 @@ recode -Spo pc/..u8 < @var{input}.po > @var{output}.po
 
 @noindent
 file @file{@var{output}.po} holds a copy of @file{@var{input}.po} in which
-translator comments and the contents of @code{msgstr} strings @emph{only}
+@emph{only} translator comments and the contents of @code{msgstr} strings
 have been recoded from the @code{IBM-PC} charset to pure @code{UTF-8},
 without attempting conversion of end-of-lines.  Machine generated comments
 and original @code{msgid} strings are not to be touched by this recoding.
 
 If @var{language} is not specified, @samp{c} is assumed.
-
 @end table
 
 @node Emacs, , Mixed, Invoking recode
@@ -1391,19 +1508,19 @@ If @var{language} is not specified, @samp{c} is assumed.
 
 The fact @code{recode} is a filter makes it quite easy to use from
 within GNU Emacs.  For example, recoding the whole buffer from
-the IBM-PC charset to current charset (@w{Latin-1} on Unix) is easily
-done with:
+the @code{IBM-PC} charset to current charset (@w{@code{Latin-1}} on
+Unix) is easily done with:
 
 @example
 C-x h C-u M-| recode ibmpc RET
 @end example
 
 @noindent
-The @samp{C-x h} selects the whole buffer, and @samp{C-u M-|} filters and
+@samp{C-x h} selects the whole buffer, and @samp{C-u M-|} filters and
 replaces the current region through the given shell command.  Here is
 another example, binding the keys @w{@samp{C-c T}} to the recoding of
-the current region from Easy French to @w{Latin-1} (on Unix) and the key
-@w{@samp{C-u C-c T}} from @w{Latin-1} (on Unix) to Easy French:
+the current region from Easy French to @w{@code{Latin-1}} (on Unix) and the key
+@w{@samp{C-u C-c T}} from @w{@code{Latin-1}} (on Unix) to Easy French:
 
 @example
 (global-set-key "\C-cT" 'recode-texte)
@@ -1419,6 +1536,7 @@ the current region from Easy French to @w{Latin-1} (on Unix) and the key
 @node Library, Universal, Invoking recode, Top
 @chapter A recoding library
 
+@cindex recoding library
 The program named @code{recode} is just an application of its recoding
 library.  The recoding library is available separately for other C
 programs.  A good way to acquire some familiarity with the recoding
@@ -1455,6 +1573,7 @@ at outer level, and then, various functions at request level.
 @node Outer level, Request level, Library, Library
 @section Outer level functions
 
+@cindex outer level functions
 The outer level functions mainly prepare the whole recoding library for
 use, or do actions which are unrelated to specific recodings.  Here is
 an example of a program which does not really make anything useful.
@@ -1464,9 +1583,12 @@ an example of a program which does not really make anything useful.
 #include <stdbool.h>
 #include <recode.h>
 
+const char *program_name;
+
 int
-main ()
+main (int argc, char *const *argv)
 @{
+  program_name = argv[0];
   RECODE_OUTER outer = recode_new_outer (true);
 
   recode_delete_outer (outer);
@@ -1475,17 +1597,20 @@ main ()
 @end group
 @end example
 
-The header file @file{<recode.h>} declares an opaque @code{RECODE_OUTER}
+@vindex RECODE_OUTER structure
+The header file @code{<recode.h>} declares an opaque @code{RECODE_OUTER}
 structure, which the programmer should use for allocating a variable in
 his program (let's assume the programmer is a male, here, no prejudice
 intended).  This @samp{outer} variable is given as a first argument to
 all outer level functions.
 
-The @file{<recode.h>} header file uses the Boolean type setup by the
-system header file @file{<stdbool.h>}.  But this header file is still
+@cindex @code{stdbool.h} header
+@cindex @code{bool} data type
+The @code{<recode.h>} header file uses the Boolean type setup by the
+system header file @code{<stdbool.h>}.  But this header file is still
 fairly new in C standards, and likely does not exist everywhere.  If you
 system does not offer this system header file yet, the proper compilation
-of the @file{<recode.h>} file could be guaranteed through the replacement
+of the @code{<recode.h>} file could be guaranteed through the replacement
 of the inclusion line by:
 
 @example
@@ -1523,9 +1648,12 @@ typedef enum @{false = 0, true = 1@} bool;
 
 #include <recode.h>
 
+const char *program_name;
+
 int
-main ()
+main (int argc, char *const *argv)
 @{
+  program_name = argv[0];
   RECODE_OUTER outer = recode_new_outer (true);
 
   recode_term_outer (outer);
@@ -1539,12 +1667,15 @@ but we will not insist on such details in the examples to come.
 
 @itemize @bullet
 @item Initialisation functions
+@cindex initialisation functions, outer
 
 @example
 RECODE_OUTER recode_new_outer (@var{auto_abort});
 bool recode_delete_outer (@var{outer});
 @end example
 
+@findex recode_new_outer
+@findex recode_delete_outer
 The recoding library absolutely needs to be initialised before being used,
 and @code{recode_new_outer} has to be called once, first.  Besides the
 @var{outer} it is meant to initialise, the function accepts a Boolean
@@ -1574,11 +1705,28 @@ Calling @code{recode_delete_outer} prior to program termination is more
 aesthetic then useful, as all memory resources are automatically reclaimed
 when the program ends.  You may spare this terminating call if you prefer.
 
+@item The @code{program_name} declaration
+
+@cindex @code{program_name} variable
+As we just explained, the user may set the @code{recode} library so that,
+in case of problems error, it issues the diagnostic itself and aborts the
+whole processing.  This capability may be quite convenient.  When this
+feature is used, the aborting routine includes the name of the running
+program in the diagnostic.  On the other hand, when this feature is not
+used, the library merely return error codes, giving the library user fuller
+control over all this.  This behaviour is more like what usual libraries
+do: they return codes and never abort.  However, I would rather not force
+library users to necessarily check all return codes themselves, by leaving
+no other choice.  In most simple applications, letting the library diagnose
+and abort is much easier, and quite welcome.  This is precisely because
+both possibilities exist that the @code{program_name} variable is needed: it
+may be used by the library @emph{when} the user sets it to diagnose itself.
 @end itemize
 
 @node Request level, Task level, Outer level, Library
 @section Request level functions
 
+@cindex request level functions
 The request level functions are meant to cover most recoding needs
 programmers may have; they should provide all usual functionality.
 Their API is almost stable by now.  To get started with request level
@@ -1592,9 +1740,12 @@ standard output.
 #include <stdbool.h>
 #include <recode.h>
 
+const char *program_name;
+
 int
-main ()
+main (int argc, char *const *argv)
 @{
+  program_name = argv[0];
   RECODE_OUTER outer = recode_new_outer (true);
   RECODE_REQUEST request = recode_new_request (outer);
   bool success;
@@ -1611,19 +1762,23 @@ main ()
 @end group
 @end example
 
-The header file @file{<recode.h>} declares a @code{RECODE_REQUEST} structure,
+@vindex RECODE_REQUEST structure
+The header file @code{<recode.h>} declares a @code{RECODE_REQUEST} structure,
 which the programmer should use for allocating a variable in his program.
 This @var{request} variable is given as a first argument to all request
 level functions, and in most cases, may be considered as opaque.
 
 @itemize @bullet
 @item Initialisation functions
+@cindex initialisation functions, request
 
 @example
 RECODE_REQUEST recode_new_request (@var{outer});
 bool recode_delete_request (@var{request});
 @end example
 
+@findex recode_new_request
+@findex recode_delete_request
 No @var{request} variable may not be used in other request level
 functions of the recoding library before having been initialised by
 @code{recode_new_request}.  There may be many such @var{request}
@@ -1636,6 +1791,7 @@ Like for @code{recode_delete_outer}, calling @code{recode_delete_request}
 prior to program termination, in the example above, may be left out.
 
 @item Fields of @code{struct recode_request}
+@vindex recode_request structure
 
 Here are the fields of a @code{struct recode_request} which may be
 meaningfully changed, once a @var{request} has been initialised by
@@ -1646,13 +1802,14 @@ in which case there also is a greater chance that you need to recompile
 your programs if a new version of the recoding library gets installed.
 
 @table @code
-
 @item verbose_flag
+@vindex verbose_flag
 This field is initially @code{false}.  When set to @code{true}, the
 library will echo to stderr the sequence of elementary recoding steps
 needed to achieve the requested recoding.
 
 @item diaeresis_char
+@vindex diaeresis_char
 This field is initially the ASCII value of a double quote @kbd{"},
 but it may also be the ASCII value of a colon @kbd{:}.  In @code{texte}
 charset, some countries use double quotes to mark diaeresis, while other
@@ -1660,6 +1817,7 @@ countries prefer colons.  This field contains the diaeresis character
 for the @code{texte} charset.
 
 @item make_header_flag
+@vindex make_header_flag
 This field is initially @code{false}.  When set to @code{true}, it
 indicates that the program is merely trying to produce a recoding table in
 source form rather than completing any actual recoding.  In such a case,
@@ -1668,6 +1826,7 @@ If the step sequence cannot be reduced to a single step, table production
 will fail.
 
 @item diacritics_only
+@vindex diacritics_only
 This field is initially @code{false}.  For @code{HTML} and @code{LaTeX}
 charset, it is often convenient to recode the diacriticized characters
 only, while just not recoding other HTML code using ampersands or angular
@@ -1676,11 +1835,11 @@ for getting this behaviour.  In the other charset, one can edit text as
 well as HTML or La@TeX{} directives.
 
 @item ascii_graphics
+@vindex ascii_graphics
 This field is initially @code{false}, and relate to characters 176 to
 223 in the @code{ibmpc} charset, which are use to draw boxes.  When set
 to @code{true}, while getting out of @code{ibmpc}, ASCII characters are
 selected so to graphically approximate these boxes.
-
 @end table
 
 @item Study of request strings
@@ -1689,10 +1848,11 @@ selected so to graphically approximate these boxes.
 bool recode_scan_request (@var{request}, "@var{string}");
 @end example
 
+@findex recode_scan_request
 The main role of a @var{request} variable is to describe a set of
 recoding transformations.  Function @code{recode_scan_request} studies
 the given @var{string}, and stores an internal representation of it into
-@var{request}.  Note that @var{string} may be a full-fledge @code{recode}
+@var{request}.  Note that @var{string} may be a full-fledged @code{recode}
 request, possibly including surfaces specifications, intermediary
 charsets, sequences, aliases or abbreviations (@pxref{Requests}).
 
@@ -1720,6 +1880,7 @@ principles and is discussed separately, first.
 recode_string (@var{request}, @var{string});
 @end example
 
+@findex recode_string
 The function @code{recode_string} recodes @var{string} according
 to @var{request}, and directly returns the resulting recoded string
 freshly allocated, or @code{NULL} if the recoding could not succeed for
@@ -1727,6 +1888,12 @@ some reason.  When this function is used, it is the responsibility of
 the programmer to ensure that the memory used by the returned string is
 later reclaimed.
 
+@findex recode_string_to_buffer
+@findex recode_string_to_file
+@findex recode_buffer_to_buffer
+@findex recode_buffer_to_file
+@findex recode_file_to_buffer
+@findex recode_file_to_file
 @example
 char *recode_string_to_buffer (@var{request},
   @var{input_string},
@@ -1791,6 +1958,8 @@ extra space after the recoded data, extending to the allocated buffer size.
 
 @item file
 
+@findex recode_filter_open@r{, not available}
+@findex recode_filter_close@r{, not available}
 A file is a sequence of bytes held outside computer memory, but
 buffered through it.  For input, one argument provides a pointer to a
 file already opened for read.  The file is then read and recoded from its
@@ -1803,11 +1972,10 @@ should rather use @code{recode_filter_open} and @code{recode_filter_close}
 For output, one argument provides a pointer to a file already opened
 for write.  The result of the recoding is written to that file starting
 at its current position.
-
 @end table
-
 @end itemize
 
+@findex recode_format_table
 The following special function is still subject to change:
 
 @example
@@ -1819,6 +1987,7 @@ and is not documented anymore for now.
 
 @node Task level, Charset level, Request level, Library
 @section Task level functions
+@cindex task level functions
 
 The task level functions are used internally by the request level
 functions, they allow more explicit control over files and memory
@@ -1837,9 +2006,12 @@ a bit differently.
 #include <stdbool.h>
 #include <recodext.h>
 
+const char *program_name;
+
 int
-main ()
+main (int argc, char *const *argv)
 @{
+  program_name = argv[0];
   RECODE_OUTER outer = recode_new_outer (false);
   RECODE_REQUEST request = recode_new_request (outer);
   RECODE_TASK task;
@@ -1861,16 +2033,19 @@ main ()
 @end group
 @end example
 
-The header file @file{<recode.h>} declares a @code{RECODE_TASK}
+@vindex RECODE_TASK structure
+The header file @code{<recode.h>} declares a @code{RECODE_TASK}
 structure, which the programmer should use for allocating a variable in
-his program.  This @samp{task} variable is given as a first argument to
+his program.  This @code{task} variable is given as a first argument to
 all task level functions.  The programmer ought to change and possibly
 consult a few fields in this structure, using special functions.
 
 @itemize @bullet
-
 @item Initialisation functions
+@cindex initialisation functions, task
 
+@findex recode_new_task
+@findex recode_delete_task
 @example
 RECODE_TASK recode_new_task (@var{request});
 bool recode_delete_task (@var{task});
@@ -1899,6 +2074,7 @@ before ending the program, it is cleaner to always include it.  Moreover,
 in some future version of the recoding library, it might become required.
 
 @item Fields of @code{struct task_request}
+@vindex task_request structure
 
 Here are the fields of a @code{struct task_request} which may be meaningfully
 changed, once a @var{task} has been initialised by @code{recode_new_task}.
@@ -1908,7 +2084,6 @@ in which case there also is a greater chance that you need to recompile
 your programs if a new version of the recoding library gets installed.
 
 @table @code
-
 @item request
 
 The field @code{request} points to the current recoding request, but may
@@ -1979,6 +2154,8 @@ case all three fields should have @code{NULL} as a value.  This is the
 situation immediately after a call to @code{recode_new_task}.
 
 @item strategy
+@vindex strategy
+@vindex RECODE_STRATEGY_UNDECIDED
 This field, which is of type @code{enum recode_sequence_strategy}, tells
 how various recoding steps (passes) will be interconnected.  Its initial
 value is @code{RECODE_STRATEGY_UNDECIDED}, which is a constant defined in
@@ -1986,10 +2163,13 @@ the header file @file{<recodext.h>}.  Other possible values are:
 
 @table @code
 @item RECODE_SEQUENCE_IN_MEMORY
+@vindex RECODE_SEQUENCE_IN_MEMORY
 Keep intermediate recodings in memory.
 @item RECODE_SEQUENCE_WITH_FILES
+@vindex RECODE_SEQUENCE_WITH_FILES
 Do not fork, use intermediate files.
 @item RECODE_SEQUENCE_WITH_PIPE
+@vindex RECODE_SEQUENCE_WITH_PIPE
 Fork processes connected with @code{pipe(2)}.
 @end table
 
@@ -1998,12 +2178,14 @@ The best for now is to leave this field alone, and let the recoding
 library decide its strategy, as many combinations have not been tested yet.
 
 @item byte_order_mark
+@vindex byte_order_mark
 This field, which is preset to @code{true}, indicates that a byte order
 mark is to be expected at the beginning of any canonical @code{UCS-2}
 or @code{UTF-16} text, and that such a byte order mark should be also
 produced for these charsets.
 
 @item fail_level
+@vindex fail_level
 This field, which is of type @code{enum recode_error} (@pxref{Errors}),
 sets the error level at which task level functions should report a failure.
 If an error being detected is equal or greater than @code{fail_level},
@@ -2013,6 +2195,8 @@ that if not reset to another value, the library will report failure on
 @emph{any} error.
 
 @item abort_level
+@vindex abort_level
+@vindex RECODE_MAXIMUM_ERROR
 This field, which is of type @code{enum recode_error} (@pxref{Errors}), sets
 the error level at which task level functions should immediately interrupt
 their processing.  If an error being detected is equal or greater than
@@ -2023,14 +2207,18 @@ field is @code{RECODE_MAXIMUM_ERROR}, that means that is not reset to
 another value, the library will never interrupt a recoding task.
 
 @item error_so_far
+@vindex error_so_far
 This field, which is of type @code{enum recode_error} (@pxref{Errors}),
 maintains the maximum error level met so far while the recoding task
 was proceeding.  The preset value is @code{RECODE_NO_ERROR}.
-
 @end table
 
 @item Task execution
+@cindex task execution
 
+@findex recode_perform_task
+@findex recode_filter_open
+@findex recode_filter_close
 @example
 recode_perform_task (@var{task});
 recode_filter_open (@var{task}, @var{file});
@@ -2045,12 +2233,13 @@ Functions @code{recode_filter_open} and @code{recode_filter_close} are
 only planned for now.  They are meant to read input in piecemeal ways.
 Even if functionality already exists informally in the library, it has
 not been made available yet through such interface functions.
-
 @end itemize
 
 @node Charset level, Errors, Task level, Library
 @section Charset level functions
+@cindex charset level functions
 
+@cindex internal functions
 Many functions are internal to the recoding library.  Some of them
 have been made external and available, for the @code{recode} program
 had to retain all its previous functionality while being transformed
@@ -2060,6 +2249,10 @@ them will vanish over time.  When this set of routines will stabilise,
 it would be convenient to document them as an API for handling charset
 names and contents.
 
+@findex find_charset
+@findex list_all_charsets
+@findex list_concise_charset
+@findex list_full_charset
 @example
 RECODE_CHARSET find_charset (@var{name}, @var{cleaning-type});
 bool list_all_charsets (@var{charset});
@@ -2069,23 +2262,28 @@ bool list_full_charset (@var{charset});
 
 @node Errors, , Charset level, Library
 @section Handling errors
+@cindex error handling
+@cindex handling errors
 
+@cindex error messages
 The @code{recode} program, while using the @code{recode} library, needs to
 control whether recoding problems are reported or not, and then reflect
 these in the exit status.  The program should also instruct the library
-about if the recoding should be abruptly interrupted when an error is
+whether the recoding should be abruptly interrupted when an error is
 met (so sparing processing when it is known in advance that a wrong
 result would be discarded anyway), or if it should proceed nevertheless.
 Here is how the library groups errors into levels, listed here in order
 of increasing severity.
 
 @table @code
-
 @item RECODE_NO_ERROR
+@vindex RECODE_NO_ERROR
 
 No error was met on previous library calls.
 
 @item RECODE_NOT_CANONICAL
+@vindex RECODE_NOT_CANONICAL
+@cindex non canonical input, error message
 
 The input text was using one of the many alternative codings for some
 phenomenon, but not the one @code{recode} would have canonically generated.
@@ -2095,9 +2293,11 @@ identical.
 
 For example, a @code{Base64} block in which end-of-lines appear elsewhere
 that at every 76 characters is not canonical.  An e-circumflex in @TeX{}
-which is coded @samp{\^@{e@}} instead of @samp{\^e} is not canonical.
+which is coded as @samp{\^@{e@}} instead of @samp{\^e} is not canonical.
 
 @item RECODE_AMBIGUOUS_OUTPUT
+@vindex RECODE_AMBIGUOUS_OUTPUT
+@cindex ambiguous output, error message
 
 It has been discovered that if the reverse recoding was attempted on
 the text output by this recoding, we would not obtain the original text,
@@ -2116,6 +2316,8 @@ ambiguous output is not properly detected, as it is sometimes a difficult
 problem to accomplish this detection, or to do it speedily.
 
 @item RECODE_UNTRANSLATABLE
+@vindex RECODE_UNTRANSLATABLE
+@cindex untranslatable input, error message
 
 One or more input character could not be recoded, because there is just
 no representation for this character in the output charset.
@@ -2127,43 +2329,53 @@ mode might often trigger such an error.  Most @code{UCS-2} codes used to
 represent Asian characters cannot be expressed in various Latin charsets.
 
 @item RECODE_INVALID_INPUT
+@vindex RECODE_INVALID_INPUT
+@cindex invalid input, error message
 
-The input text does comply with the coding it is declared to hold.  So,
+The input text does not comply with the coding it is declared to hold.  So,
 there is no way by which a reverse recoding would reproduce this text,
 because @code{recode} should never produce invalid output.
 
-Here are a few examples.  In strict mode, @code{ASCII} text just may
-not contain characters with the eight bit set.  @code{UTF-8} encodings
+Here are a few examples.  In strict mode, @code{ASCII} text is not allowed
+to contain characters with the eight bit set.  @code{UTF-8} encodings
 ought to be minimal@footnote{The minimality of an @code{UTF-8} encoding
 is guaranteed on output, but currently, it is not checked on input.}.
 
 @item RECODE_SYSTEM_ERROR
+@vindex RECODE_SYSTEM_ERROR
+@cindex system detected problem, error message
 
 The underlying system reported an error while the recoding was going on,
 likely an input/output error.
 (This error symbol is currently unused in the library.)
 
 @item RECODE_USER_ERROR
+@vindex RECODE_USER_ERROR
+@cindex misuse of recoding library, error message
 
 The programmer or user requested something the recoding library is unable
 to provide, or used the API wrongly.
 (This error symbol is currently unused in the library.)
 
 @item RECODE_INTERNAL_ERROR
+@vindex RECODE_INTERNAL_ERROR
+@cindex internal recoding bug, error message
 
 Something really wrong, which should normally never happen, was detected
 within the recoding library.  This might be due to genuine bugs in the
-library, or maybe also, by un-initialised or overwritten arguments to
+library, or maybe due to un-initialised or overwritten arguments to
 the API.
 (This error symbol is currently unused in the library.)
 
 @item RECODE_MAXIMUM_ERROR
+@vindex RECODE_MAXIMUM_ERROR
 
 This error code should never be returned, it is only internally used as
-a sentinel over all possible error codes.
-
+a sentinel for the list of all possible error codes.
 @end table
 
+@cindex error level threshold
+@cindex threshold for error reporting
 One should be able to set the error level threshold for returning failure
 at end of recoding, and also the threshold for immediate interruption.
 If many errors occur while the recoding proceed, which are not severe
@@ -2171,7 +2383,7 @@ enough to interrupt the recoding, then the most severe error is retained,
 while others are forgotten@footnote{Another approach would have been
 to define the level symbols as masks instead, and to give masks to
 threshold setting routines, and to retain all errors---yet I never
-met myself such a need in practice, and so, fear it would be overkill.
+met myself such a need in practice, and so I fear it would be overkill.
 On the other hand, it might be interesting to maintain counters about
 how many times each kind of error occurred.}.  So, in case of an error,
 the possible actions currently are:
@@ -2183,7 +2395,7 @@ the possible actions currently are:
 @end itemize
 
 @noindent
-@xref{Task level}, and particularly the description of fields
+@xref{Task level}, and particularly the description of the fields
 @code{fail_level}, @code{abort_level} and @code{error_so_far}, for more
 information about how errors are handled.
 
@@ -2212,11 +2424,13 @@ so in practice.
 @node Universal, Tabular, Library, Top
 @chapter The universal charset
 
+@cindex ISO 10646
 Standard @w{ISO 10646} defines a universal character set, intended to encompass
 in the long run all languages written on this planet.  It is based on
 wide characters, and offer possibilities for two billion characters
 (@math{2^31}).
 
+@tindex UCS
 This charset was to become available in @code{recode} under the name
 @code{UCS}, with many external surfaces for it.  But in the current
 version, only surfaces of @code{UCS} are offered, each presented as a
@@ -2224,12 +2438,13 @@ genuine charset rather than a surface.  Such surfaces are only meaningful
 for the @code{UCS} charset, so it is not that useful to draw a line
 between the surfaces and the only charset to which they may apply.
 
+@tindex UTF-1
 @code{UCS} stands for Universal Character Set.  @code{UCS-2} and
 @code{UCS-4} are fixed length encodings, using two or four bytes per
 character respectively.  @code{UTF} stands for @code{UCS} Transformation
 Format, and are variable length encodings dedicated to @code{UCS}.
 @code{UTF-1} was based on @w{ISO 2022}, it did not succeed@footnote{It is not
-probable that @code{recode} will support @code{UTF-1} ever.}.  @code{UTF-2}
+probable that @code{recode} will ever support @code{UTF-1}.}.  @code{UTF-2}
 replaced it, it has been called @code{UTF-FSS} (File System Safe) in
 Unicode or Plan9 context, but is better known today as @code{UTF-8}.
 To complete the picture, there is @code{UTF-16} based on 16 bits bytes,
@@ -2237,19 +2452,20 @@ and @code{UTF-7} which is meant for transmissions limited to 7-bit bytes.
 Most often, one might see @code{UTF-8} used for external storage, and
 @code{UCS-2} used for internal storage.
 
+@c FIXME: the manual never explains what the U+NNNN notation means!
 When @code{recode} is producing any representation of @code{UCS},
 it uses the replacement character @code{U+FFFD} for any @emph{valid}
 character which is not representable in the goal charset@footnote{This
 is when the goal charset allows for 16-bits.  For shorter charsets,
-the @code{--strict} (@code{-s}) option decides what happens: either the
+the @samp{--strict} (@samp{-s}) option decides what happens: either the
 character is dropped, or a reversible mapping is produced on the fly.}.
 This happens, for example, when @code{UCS-2} is not capable to echo a
 wide @code{UCS-4} character, or for a similar reason, an @code{UTF-8}
 sequence using more than three bytes.  The replacement character is
 meant to represent an existing character.  So, it is never produced to
 represent an invalid sequence or ill-formed character in the input text.
-In such cases, @code{recode} just get rid of the noise, while taking note
-of the error its usual ways.
+In such cases, @code{recode} just gets rid of the noise, while taking note
+of the error in its usual ways.
 
 Even if @code{UTF-8} is an encoding, really, it is the encoding of a single
 character set, and nothing else.  It is useful to distinguish between an
@@ -2274,12 +2490,15 @@ a charset.  Similar considerations apply for @code{UCS-2}, @code{UCS-4},
 @node UCS-2, UCS-4, Universal, Universal
 @section Universal Character Set, 2 bytes
 
+@tindex UCS-2
+@cindex Unicode
 One surface of @code{UCS} is usable for the subset defined by its first
 sixty thousand characters (in fact, @math{31 * 2^11} codes), and uses
 exactly two bytes per character.  It is a mere dump of the internal
 memory representation which is @emph{natural} for this subset and as such,
 conveys with it endianness problems.
 
+@cindex byte order mark
 A non-empty @code{UCS-2} file normally begins with a so called @dfn{byte
 order mark}, having value @code{0xFEFF}.  The value @code{0xFFFE} is not an
 @code{UCS} character, so if this value is seen at the beginning of a file,
@@ -2290,9 +2509,9 @@ files should stay a simple matter, but it might trigger a diagnostic
 about non canonical input.
 
 By default, when producing an @code{UCS-2} file, @code{recode} always
-output the high order byte before the low order byte.  But this could be
-easily overridden through the @code{21-Permutation} surface.  For example,
-the command:
+outputs the high order byte before the low order byte.  But this could be
+easily overridden through the @code{21-Permutation} surface
+(@pxref{Permutations}).  For example, the command:
 
 @example
 recode u8..u2/21 < @var{input} > @var{output}
@@ -2302,10 +2521,16 @@ recode u8..u2/21 < @var{input} > @var{output}
 asks for an @code{UTF-8} to @code{UCS-2} conversion, with swapped byte
 output.
 
-Use it as a genuine charset.  This charset is available in @code{recode}
-under the name @code{ISO-10646-UCS-2}.  Accepted aliases are @code{UCS-2},
-@code{BMP}, @code{rune} and @code{u2}.
+@tindex ISO-10646-UCS-2, and aliases
+@tindex BMP
+@tindex rune
+@tindex u2
+Use @code{UCS-2} as a genuine charset.  This charset is available in
+@code{recode} under the name @code{ISO-10646-UCS-2}.  Accepted aliases
+are @code{UCS-2}, @code{BMP}, @code{rune} and @code{u2}.
 
+@tindex combined-UCS-2
+@cindex combining characters
 The @code{recode} library is able to combine @code{UCS-2} some sequences
 of codes into single code characters, to represent a few diacriticized
 characters, ligatures or diphtongs which have been included to ease
@@ -2332,10 +2557,15 @@ possible.
 @node UCS-4, UTF-7, UCS-2, Universal
 @section Universal Character Set, 4 bytes
 
+@tindex UCS-4
 Another surface of @code{UCS} uses exactly four bytes per character, and is
 a mere dump of the internal memory representation which is @emph{natural}
 for the whole charset and as such, conveys with it endianness problems.
 
+@tindex ISO-10646-UCS-4, and aliases
+@tindex ISO_10646
+@tindex 10646
+@tindex u4
 Use it as a genuine charset.  This charset is available in @code{recode}
 under the name @code{ISO-10646-UCS-4}.  Accepted aliases are @code{UCS},
 @code{UCS-4}, @code{ISO_10646}, @code{10646} and @code{u4}.
@@ -2343,12 +2573,16 @@ under the name @code{ISO-10646-UCS-4}.  Accepted aliases are @code{UCS},
 @node UTF-7, UTF-8, UCS-4, Universal
 @section Universal Transformation Format, 7 bits
 
-@code{UTF-7} comes from IETF rather than ISO, and is described by @w{RFC 1642},
-in the MIME series.  The @code{UTF-7} encoding is meant to fit @code{UCS-2}
-over channels limited to seven bits per byte.  It proceeds from a mix
-between the spirit of @code{Quoted-Printable} and methods of @code{Base64},
-adapted to Unicode contexts.
+@tindex UTF-7
+@code{UTF-7} comes from IETF rather than ISO, and is described by @w{RFC
+2152}, in the MIME series.  The @code{UTF-7} encoding is meant to fit
+@code{UCS-2} over channels limited to seven bits per byte.  It proceeds
+from a mix between the spirit of @code{Quoted-Printable} and methods of
+@code{Base64}, adapted to Unicode contexts.
 
+@tindex UNICODE-1-1-UTF-7, and aliases
+@tindex TF-7
+@tindex u7
 This charset is available in @code{recode} under the name
 @code{UNICODE-1-1-UTF-7}.  Accepted aliases are @code{UTF-7}, @code{TF-7}
 and @code{u7}.
@@ -2356,21 +2590,22 @@ and @code{u7}.
 @node UTF-8, UTF-16, UTF-7, Universal
 @section Universal Transformation Format, 8 bits
 
+@tindex UTF-8
 Even if @code{UTF-8} does not originally come from IETF, there is now
 @w{RFC 2279} to describe it.  In letters sent on 1995-01-21 and 1995-04-20,
 Markus Kuhn writes:
 
 @quotation
-@code{UTF-8} is an @code{ASCII} compatible multi-byte encoding of
-the @w{ISO 10646} universal character set (@code{UCS}).  @code{UCS} is a
-31-bit superset of all other character set standards.  The first 256
-characters of @code{UCS} are identical to those of @w{ISO 8859-1} (@w{Latin-1}).
-The @code{UCS-2} encoding of UCS is a sequence of bigendian 16-bit
-words, the @code{UCS-4} encoding is a sequence of bigendian 32-bit words.
-The @code{UCS-2} subset of @w{ISO 10646} is also known as ``Unicode''.  As both
-@code{UCS-2} and @code{UCS-4} require heavy modifications to traditional
-@code{ASCII} oriented system designs (e.g. Unix), the @code{UTF-8}
-encoding has been designed for these applications.
+@code{UTF-8} is an @code{ASCII} compatible multi-byte encoding of the @w{ISO
+10646} universal character set (@code{UCS}).  @code{UCS} is a 31-bit superset
+of all other character set standards.  The first 256 characters of @code{UCS}
+are identical to those of @w{ISO 8859-1} (@w{Latin-1}).  The @code{UCS-2}
+encoding of UCS is a sequence of bigendian 16-bit words, the @code{UCS-4}
+encoding is a sequence of bigendian 32-bit words.  The @code{UCS-2} subset
+of @w{ISO 10646} is also known as ``Unicode''.  As both @code{UCS-2}
+and @code{UCS-4} require heavy modifications to traditional @code{ASCII}
+oriented system designs (e.g. Unix), the @code{UTF-8} encoding has been
+designed for these applications.
 
 In @code{UTF-8}, only @code{ASCII} characters are encoded using bytes
 below 128.  All other non-ASCII characters are encoded as multi-byte
@@ -2385,7 +2620,7 @@ easy self-synchronisation of software receiving @code{UTF-8} strings.
 @code{UTF-8} is the most common external surface of @code{UCS}, each
 character uses from one to six bytes, and is able to encode all @math{2^31}
 characters of the @code{UCS}.  It is implemented as a charset, with the
-following properties.
+following properties:
 
 @itemize @bullet
 @item
@@ -2412,11 +2647,10 @@ In a multi-byte character, if you remove all leading @samp{1} bits of the
 first byte of a multi-byte character, and the initial @samp{10} bits of
 all remaining bytes (so keeping 6 bits per byte for those), the remaining
 bits concatenated are the UCS value.
-
 @end itemize
 
 @noindent
-These properties also have a few nice consequences.
+These properties also have a few nice consequences:
 
 @itemize @bullet
 @item
@@ -2426,7 +2660,7 @@ Conversion to/from values is algorithmically simple, and reasonably speedy.
 A sequence of @var{N} bytes can hold characters needing up to 2 + 5@var{N}
 bits in their @code{UCS} representation.  Here, @var{N} is a number between
 1 and 6.  So, @code{UTF-8} is most economical when mapping ASCII (1 byte),
-then @code{UCS-2} (1 to 3 bytes), then @code{UCS-4} (1 to 6 bytes).
+followed by @code{UCS-2} (1 to 3 bytes) and @code{UCS-4} (1 to 6 bytes).
 
 @item
 The lexicographic sorting order of @code{UCS} strings is preserved.
@@ -2434,7 +2668,6 @@ The lexicographic sorting order of @code{UCS} strings is preserved.
 @item
 Bytes with value 254 or 255 never appear, and because of that, these are
 sometimes used when escape mechanisms are needed.
-
 @end itemize
 
 In some case, when little processing is done on a lot of strings, one may
@@ -2444,6 +2677,11 @@ insertion or replacement might require moving the remainder of the string
 in either direction.  In most cases, it is faster and easier to convert
 from @code{UTF-8} to @code{UCS-2} or @code{UCS-4} prior to processing.
 
+@tindex UTF-8, aliases
+@tindex UTF-FSS
+@tindex FSS_UTF
+@tindex TF-8
+@tindex u8
 This charset is available in @code{recode} under the name @code{UTF-8}.
 Accepted aliases are @code{UTF-2}, @code{UTF-FSS}, @code{FSS_UTF},
 @code{TF-8} and @code{u8}.
@@ -2451,11 +2689,12 @@ Accepted aliases are @code{UTF-2}, @code{UTF-FSS}, @code{FSS_UTF},
 @node UTF-16, count-characters, UTF-8, Universal
 @section Universal Transformation Format, 16 bits
 
+@tindex UTF-16, and aliases
 Another external surface of @code{UCS} is also variable length, each
 character using either two or four bytes.  It is usable for the subset
 defined by the first million characters (@math{17 * 2^16}) of @code{UCS}.
 
-Martin J. D@"urst writes (to @file{comp.std.internat}, on 1995-03-28):
+Martin J. D@"urst writes (to @uref{comp.std.internat}, on 1995-03-28):
 
 @quotation
 @code{UTF-16} is another method that reserves two times 1024 codepoints in
@@ -2468,12 +2707,17 @@ into the Base Multilingual Plane of @w{ISO 10646} (with just about 63,000
 positions available, now that 2,000 are gone).
 @end quotation
 
+@tindex Unicode, an alias for UTF-16
+@tindex TF-16
+@tindex u6
 This charset is available in @code{recode} under the name @code{UTF-16}.
 Accepted aliases are @code{Unicode}, @code{TF-16} and @code{u6}.
 
 @node count-characters, dump-with-names, UTF-16, Universal
 @section Frequency count of characters
 
+@tindex count-characters
+@cindex counting characters
 A device may be used to obtain a list of characters in a file, and how many
 times each character appears.  Each count is followed by the @code{UCS-2}
 value of the character and, when known, the @w{RFC 1345} mnemonic for that
@@ -2489,6 +2733,10 @@ original bytes, instead of their @code{UCS-2} equivalent.
 @node dump-with-names, , count-characters, Universal
 @section Fully interpreted UCS dump
 
+@tindex dump-with-names
+@cindex dumping characters, with description
+@cindex character streams, description
+@cindex description of individual characters
 Another device may be used to get fully interpreted dumps of an @code{UCS-2}
 stream of characters, with one @code{UCS-2} character displayed on a full
 output line.  Each line receives the @w{RFC 1345} mnemonic for the character
@@ -2504,7 +2752,7 @@ This @code{dump-with-names} feature has been implemented as a charset rather
 than a surface.  This is surely debatable.  The current implementation
 allows for dumping charsets other than @code{UCS-2}.  For example, the
 command @w{@samp{recode l2..full < @var{input}}} implies a necessary
-conversion from @code{Latin-2} to @code{UCS-2}, as @code{full-dump}
+conversion from @code{Latin-2} to @code{UCS-2}, as @code{dump-with-names}
 is only connected out from @code{UCS-2}.  In such cases, @code{recode}
 does not display the original @code{Latin-2} codes in the dump, only the
 corresponding @code{UCS-2} values.  To give a simpler example, the command
@@ -2514,25 +2762,25 @@ echo 'Hello, world!' | recode us..dump
 @end example
 
 @noindent
-produces the following output.
+produces the following output:
 
 @example
-Mne   UCS2   Description
-
-H     0048   latin capital letter h
-e     0065   latin small letter e
-l     006C   latin small letter l
-l     006C   latin small letter l
-o     006F   latin small letter o
-,     002C   comma
-SP    0020   space
-w     0077   latin small letter w
-o     006F   latin small letter o
-r     0072   latin small letter r
-l     006C   latin small letter l
-d     0064   latin small letter d
-!     0021   exclamation mark
-LF    000A   line feed (lf)
+UCS2   Mne   Description
+
+0048   H     latin capital letter h
+0065   e     latin small letter e
+006C   l     latin small letter l
+006C   l     latin small letter l
+006F   o     latin small letter o
+002C   ,     comma
+0020   SP    space
+0077   w     latin small letter w
+006F   o     latin small letter o
+0072   r     latin small letter r
+006C   l     latin small letter l
+0064   d     latin small letter d
+0021   !     exclamation mark
+000A   LF    line feed (lf)
 @end example
 
 The descriptive comment is given in English and @code{ASCII},
@@ -2561,6 +2809,9 @@ echo -n 0x03C6 | recode u2/x2..dump | tail +3
 @node Tabular, ASCII misc, Universal, Top
 @chapter Tabular sources (@w{RFC 1345})
 
+@cindex RFC 1345
+@cindex character mnemonics, documentation
+@cindex @code{chset} tools
 An important part of the tabular charset knowledge in @code{recode}
 comes from @w{RFC 1345} or, alternatively, from the @code{chset} tools,
 both maintained by Keld Simonsen.  The @w{RFC 1345} document:
@@ -2571,33 +2822,46 @@ Comments no. 1345, Network Working Group, June 1992.
 @end quotation
 
 @noindent
+@cindex deviations from RFC 1345
 defines many character mnemonics and character sets.  The @code{recode}
 library implements most of @w{RFC 1345}, however:
 
 @itemize @bullet
 @item
+@tindex dk-us@r{, not recognised by }recode
+@tindex us-dk@r{, not recognised by }recode
 It does not recognise those charsets which overload character positions:
 @code{dk-us} and @code{us-dk}.  However, see @ref{Mixed}.
 
 @item
+@tindex ANSI_X3.110-1983@r{, not recognised by }recode
+@tindex ISO_6937-2-add@r{, not recognised by }recode
+@tindex T.101-G2@r{, not recognised by }recode
+@tindex T.61-8bit@r{, not recognised by }recode
+@tindex iso-ir-90@r{, not recognised by }recode
 It does not recognise those charsets which combine two characters for
 representing a third: @code{ANSI_X3.110-1983}, @code{ISO_6937-2-add},
 @code{T.101-G2}, @code{T.61-8bit}, @code{iso-ir-90} and
 @code{videotex-suppl}.
 
 @item
+@tindex GB_2312-80@r{, not recognised by }recode
+@tindex JIS_C6226-1978@r{, not recognised by }recode
+@tindex JIS_X0212-1990@r{, not recognised by }recode
+@tindex KS_C_5601-1987@r{, not recognised by }recode
 It does not recognise 16-bits charsets: @code{GB_2312-80},
 @code{JIS_C6226-1978}, @code{JIS_C6226-1983}, @code{JIS_X0212-1990} and
 @code{KS_C_5601-1987}.
 
 @item
+@tindex isoir91
+@tindex isoir92
 It interprets the charset @code{isoir91} as @code{NATS-DANO} (alias
 @code{iso-ir-9-1}), @emph{not} as @code{JIS_C6229-1984-a} (alias
 @code{iso-ir-91}).  It also interprets the charset @code{isoir92}
 as @code{NATS-DANO-ADD} (alias @code{iso-ir-9-2}), @emph{not} as
 @code{JIS_C6229-1984-b} (alias @code{iso-ir-92}).  It might be better
 just avoiding these two alias names.
-
 @end itemize
 
 Keld Simonsen @email{keld@@dkuug.dk} did most of @w{RFC 1345} himself, with
@@ -2607,6 +2871,7 @@ Olle Jaernefors.  Keld typed in almost all of the tables, some have been
 contributed.  A number of people have checked the tables in various
 ways.  The RFC lists a number of people who helped.
 
+@cindex @code{recode}, and RFC 1345
 Keld and the @code{recode} maintainer have an arrangement by which any new
 discovered information submitted by @code{recode} users, about tabular
 charsets, is forwarded to Keld, eventually merged into Keld's work,
@@ -2618,6 +2883,9 @@ Keld has been more than collaborative so far, so there is no reason that
 we act otherwise.  In a word, @code{recode} should be perceived as the
 application of external references, but not as a reference in itself.
 
+@tindex RFC1345@r{, a charset, and its aliases}
+@tindex 1345
+@tindex mnemonic@r{, an alias for RFC1345 charset}
 Internally, @w{RFC 1345} associates which each character an unambiguous
 mnemonic of a few characters, taken from @w{ISO 646}, which is a minimal
 ASCII subset of 83 characters.  The charset made up by these mnemonics
@@ -2637,7 +2905,6 @@ implemented in some future version, however.
 
 @table @code
 @include charset.texi
-
 @end table
 
 @node ASCII misc, IBM and MS, Tabular, Top
@@ -2653,6 +2920,13 @@ implemented in some future version, however.
 @node ASCII, ISO 8859, ASCII misc, ASCII misc
 @section Usual ASCII
 
+@tindex ASCII@r{, an alias for the }ANSI_X3.4-1968@r{ charset}
+@tindex ANSI_X3.4-1968@r{, and its aliases}
+@tindex IBM367
+@tindex US-ASCII
+@tindex cp367
+@tindex iso-ir-6
+@tindex us
 This charset is available in @code{recode} under the name @code{ASCII}.
 In fact, it's true name is @code{ANSI_X3.4-1968} as per @w{RFC 1345},
 accepted aliases being @code{ANSI_X3.4-1986}, @code{ASCII},
@@ -2660,6 +2934,7 @@ accepted aliases being @code{ANSI_X3.4-1986}, @code{ASCII},
 @code{US-ASCII}, @code{cp367}, @code{iso-ir-6} and @code{us}.  The
 shortest way of specifying it in @code{recode} is @code{us}.
 
+@cindex ASCII table, recreating with @code{recode}
 This documentation used to include ASCII tables.  They have been removed
 since the @code{recode} program can now recreate these easily:
 
@@ -2673,17 +2948,18 @@ recode -lh us                   for concise hexadecimal table
 @node ISO 8859, ASCII-BS, ASCII, ASCII misc
 @section ASCII extended by Latin Alphabets
 
+@cindex Latin charsets
 There are many Latin charsets.  The following has been written by Tim
 Lasko @email{lasko@@video.dec.com}, a long while ago:
 
 @quotation
-ISO @w{Latin-1}, or more completely ISO Latin Alphabet No 1, is now
-an international standard as of February 1987 (IS 8859, Part 1).
-For those American USEnet'rs that care, the 8-bit ASCII standard, which
-is essentially the same code, is going through the final administrative
-processes prior to publication.  ISO @w{Latin-1} (IS 8859/1) is actually one
-of an entire family of eight-bit one-byte character sets, all having ASCII
-on the left hand side, and with varying repertoires on the right hand side:
+ISO @w{Latin-1}, or more completely ISO Latin Alphabet No 1, is now an
+international standard as of February 1987 (IS 8859, Part 1).  For those
+American USEnet'rs that care, the 8-bit ASCII standard, which is essentially
+the same code, is going through the final administrative processes prior
+to publication.  ISO @w{Latin-1} (IS 8859/1) is actually one of an entire
+family of eight-bit one-byte character sets, all having ASCII on the left
+hand side, and with varying repertoires on the right hand side:
 
 @itemize @bullet
 @item
@@ -2704,9 +2980,9 @@ Latin-Greek alphabet (right half Greek + symbols - in draft ballot).
 @item
 Latin-Hebrew alphabet (right half Hebrew + symbols - proposed).
 @end itemize
-
 @end quotation
 
+@tindex Latin-1
 The ISO Latin Alphabet 1 is available as a charset in @code{recode} under
 the name @code{Latin-1}.  In fact, it's true name is @code{ISO_8859-1:1987}
 as per @w{RFC 1345}, accepted aliases being @code{CP819}, @code{IBM819},
@@ -2714,6 +2990,7 @@ as per @w{RFC 1345}, accepted aliases being @code{CP819}, @code{IBM819},
 and @code{Latin-1}.  The shortest way of specifying it in @code{recode}
 is @code{l1}.
 
+@cindex Latin-1 table, recreating with @code{recode}
 It is an eight-bit code which coincides with ASCII for the lower half.
 This documentation used to include @w{Latin-1} tables.  They have been removed
 since the @code{recode} program can now recreate these easily:
@@ -2728,9 +3005,12 @@ recode -lh l1                   for concise hexadecimal table
 @node ASCII-BS, flat, ISO 8859, ASCII misc
 @section ASCII 7-bits, @kbd{BS} to overstrike
 
+@tindex ASCII-BS@r{, and its aliases}
+@tindex BS@r{, an alias for }ASCII-BS@r{ charset}
 This charset is available in @code{recode} under the name
 @code{ASCII-BS}, with @code{BS} as an acceptable alias.
 
+@cindex diacritics, with @code{ASCII-BS} charset
 The file is straight ASCII, seven bits only.  According to the definition
 of ASCII, diacritics are applied by a sequence of three characters: the
 letter, one @kbd{BS}, the diacritic mark.  We deviate slightly from this
@@ -2774,9 +3054,12 @@ reversibility is still possible, but there might be difficult cases.
 
 @node flat, , ASCII-BS, ASCII misc
 @section ASCII without diacritics nor underline
+@tindex flat@r{, a charset}
 
 This charset is available in @code{recode} under the name @code{flat}.
 
+@cindex diacritics and underlines, removing
+@cindex removing diacritics and underlines
 This code is ASCII expunged of all diacritics and underlines, as long as
 they are applied using three character sequences, with @kbd{BS} in the
 middle.  Also, despite slightly unrelated, each control character is
@@ -2789,6 +3072,8 @@ Note that charset @code{flat} is a terminal charset.  We can convert
 @node IBM and MS, CDC, ASCII misc, Top
 @chapter Some IBM or Microsoft charsets
 
+@cindex IBM codepages
+@cindex codepages
 The @code{recode} program provides various IBM or Microsoft code pages
 (@pxref{Tabular}).  An easy way to find them all at once out of the
 @code{recode} program itself is through the command:
@@ -2809,24 +3094,27 @@ But also, see few special charsets presented in the incoming sections.
 @node EBCDIC, IBM-PC, IBM and MS, IBM and MS
 @section EBCDIC code
 
+@cindex EBCDIC charsets
 This charset is the IBM's External Binary Coded Decimal for Interchange
 Coding.  This is an eight bits code.  The following three variants were
 implemented in @code{recode} independently of @w{RFC 1345}:
 
 @table @code
-
 @item EBCDIC
+@tindex EBCDIC@r{, a charset}
 In @code{recode}, the @code{us..ebcdic} conversion is identical to @samp{dd
 conv=ebcdic} conversion, and @code{recode} @code{ebcdic..us} conversion is
 identical to @samp{dd conv=ascii} conversion.  This charset also represents
 the way Control Data Corporation relates EBCDIC to 8-bits ASCII.
 
 @item EBCDIC-CCC
+@tindex EBCDIC-CCC
 In @code{recode}, the @code{us..ebcdic-ccc} or @code{ebcdic-ccc..us}
 conversions represent the way Concurrent Computer Corporation (formerly
 Perkin Elmer) relates EBCDIC to 8-bits ASCII.
 
 @item EBCDIC-IBM
+@tindex EBCDIC-IBM
 In @code{recode}, the @code{us..ebcdic-ibm} conversion is @emph{almost}
 identical to the GNU @samp{dd conv=ibm} conversion.  Given the exact
 @samp{dd conv=ibm} conversion table, @code{recode} once said:
@@ -2843,7 +3131,6 @@ So I arbitrarily chose to recode 213 by 74 and 229 by 106.  This makes the
 correction.  In any case, I think that GNU @code{dd} should be amended.
 @code{dd} and @code{recode} should ideally agree on the same correction.
 So, this table might change once again.
-
 @end table
 
 @w{RFC 1345} brings into @code{recode} 15 other EBCDIC charsets, and 21 other
@@ -2864,6 +3151,11 @@ the converted results.
 @node IBM-PC, Icon-QNX, EBCDIC, IBM and MS
 @section IBM's PC code
 
+@tindex IBM-PC
+@cindex MS-DOS charsets
+@tindex MSDOS
+@tindex dos
+@tindex pc
 This charset is available in @code{recode} under the name @code{IBM-PC},
 with @code{dos}, @code{MSDOS} and @code{pc} as acceptable aliases.
 The shortest way of specifying it in @code{recode} is @code{pc}.
@@ -2885,7 +3177,7 @@ recode pc/..l2 < @var{input} > @var{output}
 
 @w{RFC 1345} brings into @code{recode} 44 @samp{IBM} charsets or code pages,
 and also 8 other code pages.  You can get a list of these all these by
-executing:@footnote{On DOS/Windows, stock shells do not know that apostrohes
+executing:@footnote{On DOS/Windows, stock shells do not know that apostrophes
 quote special characters like @kbd{|}, so one need to use double quotes
 instead of apostrophes.}
 
@@ -2894,6 +3186,8 @@ recode -l | egrep -i '(CP|IBM)[0-9]'
 @end example
 
 @noindent
+@cindex CR-LF surface, in IBM-PC charsets
+@tindex IBM819@r{, and CR-LF surface}
 All charset or aliases beginning with letters @samp{CP} or @samp{IBM}
 also have @code{CR-LF} as their implied surface.  The same is true for a
 purely numeric alias in the same family.  For example, all of @code{819},
@@ -2901,6 +3195,7 @@ purely numeric alias in the same family.  For example, all of @code{819},
 @code{ISO-8859-1} does @emph{not} imply a surface, despite it shares the
 same tabular data as @code{819}.
 
+@tindex ibm437
 There are a few discrepancies between this @code{IBM-PC} charset and the
 very similar @w{RFC 1345} charset @code{ibm437}, which have not been analysed
 yet, so the charsets are being kept separate for now.  This might change in
@@ -2920,6 +3215,8 @@ the fuzziness will have to be explained and settle down one day.
 @node Icon-QNX, , IBM-PC, IBM and MS
 @section Unisys' Icon code
 
+@tindex Icon-QNX@r{, and aliases}
+@tindex QNX@r{, an alias for a charset}
 This charset is available in @code{recode} under the name
 @code{Icon-QNX}, with @code{QNX} as an acceptable alias.
 
@@ -2930,10 +3227,12 @@ if eight-bit codes can flow through as part of IBM-PC charset.
 @node CDC, Micros, IBM and MS, Top
 @chapter Charsets for CDC machines
 
+@cindex CDC charsets
+@cindex charsets for CDC machines
 What is now @code{recode} evolved out, through many transformations
-really, from a set of programs which were originally written in Control
-Data Corporation's assembler (@code{COMPASS}), with bits in FORTRAN,
-and later, rewritten in CDC 6000 Pascal.  The CDC heritage shows by the
+really, from a set of programs which were originally written in
+@dfn{COMPASS}, Control Data Corporation's assembler, with bits in FORTRAN,
+and later rewritten in CDC 6000 Pascal.  The CDC heritage shows by the
 fact some old CDC charsets are still supported.
 
 The @code{recode} author used to be familiar with CDC Scope-NOS/BE and
@@ -2963,6 +3262,7 @@ caret notation over Display Code already mapped to ASCII.
 @node Display Code, CDC-NOS, CDC, CDC
 @section Control Data's Display Code
 
+@cindex CDC Display Code, a table
 This code is not available in @code{recode}, but repeated here for
 reference.  This is a 6-bit code used on CDC mainframes.
 
@@ -3006,10 +3306,14 @@ be considered as part of the end of line and not interpreted as @kbd{::}.}.
 @node CDC-NOS, Bang-Bang, Display Code, CDC
 @section ASCII 6/12 from NOS
 
+@tindex CDC-NOS@r{, and its aliases}
+@tindex NOS
 This charset is available in @code{recode} under the name
 @code{CDC-NOS}, with @code{NOS} as an acceptable alias.
 
-This is one of the charset in use on CDC Cyber NOS systems to represent
+@cindex NOS 6/12 code
+@cindex caret ASCII code
+This is one of the charsets in use on CDC Cyber NOS systems to represent
 ASCII, sometimes named @dfn{NOS 6/12} code for coding ASCII.  This code is
 also known as @dfn{caret ASCII}.  It is based on a six bits character set
 in which small letters and control characters are coded using a @kbd{^}
@@ -3044,6 +3348,7 @@ ASCII character.
 @node Bang-Bang, , CDC-NOS, CDC
 @section ASCII ``bang bang''
 
+@tindex Bang-Bang
 This charset is available in @code{recode} under the name @code{Bang-Bang}.
 
 This code, in use on Cybers at Universit@'e de Montr@'eal mainly, served
@@ -3083,7 +3388,8 @@ ASCII character.
 @node Micros, Miscellaneous, CDC, Top
 @chapter Other micro-computer charsets
 
-The @code{NeXT} charset, which use to be especially provided in releases of
+@cindex NeXT charsets
+The @code{NeXT} charset, which used to be especially provided in releases of
 @code{recode} before 3.5, has been integrated since as one @w{RFC 1345} table.
 
 @menu
@@ -3094,6 +3400,8 @@ The @code{NeXT} charset, which use to be especially provided in releases of
 @node Apple-Mac, AtariST, Micros, Micros
 @section Apple's Macintosh code
 
+@tindex Apple-Mac
+@cindex Macintosh charset
 This charset is available in @code{recode} under the name @code{Apple-Mac}.
 The shortest way of specifying it in @code{recode} is @code{ap}.
 
@@ -3102,13 +3410,14 @@ This is an eight bit code.  The file is the data fork only.  This charset
 is fairly old in @code{recode}, its tables were produced a long while ago
 by mere inspection of a printed chart of the Macintosh codes and glyph.
 
-It has @code{LF} as its implied surface.  This means that, if the original
+@cindex CR surface, in Macintosh charsets
+It has @code{CR} as its implied surface.  This means that, if the original
 end of lines have to be preserved while going out of @code{Apple-Mac}, they
 should currently be added back through the usage of a surface on the other
 charset, or better, just never removed.  Here are examples for both cases:
 
 @example
-recode ap..l2/cl < @var{input} > @var{output}
+recode ap..l2/cr < @var{input} > @var{output}
 recode ap/..l2 < @var{input} > @var{output}
 @end example
 
@@ -3120,6 +3429,10 @@ recode -l | grep -i mac
 @end example
 
 @noindent
+@tindex macintosh@r{, a charset, and its aliases}
+@tindex macintosh_ce@r{, and its aliases}
+@tindex mac
+@tindex macce
 Charsets @code{macintosh} and @code{macintosh_ce}, as well as their aliases
 @code{mac} and @code{macce} also have @code{CR} as their implied surface.
 
@@ -3139,6 +3452,7 @@ The first command use the charset prior to @w{RFC 1345} introduction.
 Both methods give different recodings.  These differences are annoying,
 the fuzziness will have to be explained and settle down one day.
 
+@cindex @code{recode}, a Macintosh port
 As a side note, some people ask if there is a Macintosh port of the
 @code{recode} program.  I'm not aware of any.  I presume that if the tool
 fills a need for Macintosh users, someone will port it one of these days?
@@ -3146,6 +3460,7 @@ fills a need for Macintosh users, someone will port it one of these days?
 @node AtariST, , Apple-Mac, Micros
 @section Atari ST code
 
+@tindex AtariST
 This charset is available in @code{recode} under the name @code{AtariST}.
 
 This is the character set used on the Atari ST/TT/Falcon.  This is similar
@@ -3167,7 +3482,7 @@ of lines.  Many of the users who also have access to Unix systems prefer
 
 Even if these charsets were originally added to @code{recode} for
 handling texts written in French, they find other uses.  We did use them
-lot for writing French diacriticised texts in the past, so @code{recode}
+lot for writing French diacriticised texts in the past, so @code{recode}
 knows how to handle these particularly well for French texts.
 
 @menu
@@ -3183,6 +3498,7 @@ knows how to handle these particularly well for French texts.
 @node HTML, LaTeX, Miscellaneous, Miscellaneous
 @section World Wide Web representations
 
+@tindex HTML@r{, a charset}
 This charset is available in @code{recode} under the name @code{HTML},
 with @code{h4} as an acceptable alias.
 @c FIXME - untrue
@@ -3206,7 +3522,7 @@ are translated into special sequences.  However, in practice, people often
 use ampersands and angle brackets in the other charset for introducing
 HTML commands, compromising it: it is not pure HTML, not it is pure
 other charset.  These particular translations can be rather inconvenient,
-they may be specifically inhibited through the command option @code{-d}
+they may be specifically inhibited through the command option @samp{-d}
 (@pxref{Mixed}).
 
 Codes not having a mnemonic entity are output by @code{recode} using the
@@ -3237,31 +3553,33 @@ In addition, there are four entities for syntax-significant ASCII characters:
 @item
 @w{RFC 2070} (HTML-i18n) added entities to cover the whole right
 part of @w{ISO 8859-1}.  The list is conveniently accessible at
-@url{http://www.alis.com:8085/ietf/html/html-latin1.sgml}.  In addition,
+@uref{http://www.alis.com:8085/ietf/html/html-latin1.sgml}.  In addition,
 four i18n-related entities were added: @samp{&zwnj;} (@samp{&#8204;}),
 @samp{&zwj;} (@samp{&#8205;}), @samp{&lrm;} (@samp{&#8206}) and @samp{&rlm;}
 (@samp{&#8207;}).
 
 @item
-HTML 3.2 (@url{http://www.w3.org/TR/REC-html32.html}) took up the full
+@uref{http://www.w3.org/TR/REC-html32.html, HTML 3.2} took up the full
 @w{Latin-1} list but not the i18n-related entities from @w{RFC 2070}.
 
 @item
-HTML 4.0 (@url{http://www.w3.org/TR/REC-html40/}) has the whole @w{Latin-1} list,
+@uref{http://www.w3.org/TR/REC-html40/, HTML 4.0} has the whole
+@w{Latin-1} list,
 a set of entities for symbols, mathematical symbols, and Greek letters,
 and another set for markup-significant and internationalization characters
 comprising the 4 ASCII entities, the 4 i18n-related from @w{RFC 2070} plus
 some more.
-
 @end itemize
 
 When @code{recode} translates to HTML, the translation occurs according
-to @url{http://www.w3.org/TR/REC-html40/sgml/entities.html}.
+to @uref{http://www.w3.org/TR/REC-html40/sgml/entities.html}.
 @c Previously: http://www.uni-passau.de/~ramsch/iso8859-1.html
 It is also assumed that @w{RFC 1866} has an equivalent contents.  When
 translating @emph{from} HTML, @code{recode} accepts some alternative
 special sequences, to be forgiving when files use older HTML tables.
 
+@cindex normilise an HTML file
+@cindex HTML normalization
 The @code{recode} program can be used to @emph{normalise} an HTML file using
 oldish conventions.  For example, it accepts @samp{&AE;}, as this once was a
 valid writing, somewhere.  However, it should always produce @samp{&AElig;}
@@ -3286,6 +3604,10 @@ then @samp{&AE;} should be normalised into @samp{&AElig;} by the operation.
 @node LaTeX, Texinfo, HTML, Miscellaneous
 @section La@TeX{} macro calls
 
+@tindex LaTeX@r{, a charset}
+@tindex ltex
+@cindex La@TeX{} files
+@cindex @TeX{} files
 This charset is available in @code{recode} under the name @code{LaTeX}
 and has @code{ltex} as an alias.  It is used for ASCII files coded to be
 read by La@TeX{} or, in certain cases, by @TeX{}.
@@ -3296,11 +3618,15 @@ occurrences of backslashes @kbd{\} are translated into the string
 in the other charset for introducing @TeX{} commands, compromising it:
 it is not pure @TeX{}, nor it is pure other charset.  This translation
 of backslashes into @samp{\backslash@{@}} can be rather inconvenient,
-it may be inhibited through the command option @code{-d} (@pxref{Mixed}).
+it may be inhibited through the command option @samp{-d} (@pxref{Mixed}).
 
 @node Texinfo, African, LaTeX, Miscellaneous
 @section GNU project documentation files
 
+@tindex Texinfo@r{, a charset}
+@tindex texi
+@tindex ti
+@cindex Texinfo files
 This charset is available in @code{recode} under the name @code{Texinfo}
 and has @code{texi} and @code{ti} for aliases.  It is used by the GNU
 project for its documentation.  Texinfo files may be converted into Info
@@ -3316,9 +3642,20 @@ in correctly following these changes.  So, for now, Texinfo support in
 @node African, Cyrillic, Texinfo, Miscellaneous
 @section African charsets
 
+@cindex African charsets
 Some African character sets are available for a few languages, when these
 are heavily used in countries where French is also currently spoken.
 
+@tindex AFRFUL-102-BPI_OCIL@r{, and aliases}
+@tindex bambara
+@tindex bra
+@tindex ewondo
+@tindex fulfude
+@tindex AFRFUL-103-BPI_OCIL@r{, and aliases}
+@tindex t-bambara
+@tindex t-bra
+@tindex t-ewondo
+@tindex t-fulfude
 One African charset is usable for Bambara, Ewondo and Fulfude, as well
 as for French.  This charset is available in @code{recode} under the name
 @code{AFRFUL-102-BPI_OCIL}.  Accepted aliases are @code{bambara}, @code{bra},
@@ -3326,6 +3663,16 @@ as for French.  This charset is available in @code{recode} under the name
 available under the name @code{AFRFUL-103-BPI_OCIL}.  Accepted aliases
 are @code{t-bambara}, @code{t-bra}, @code{t-ewondo} and @code{t-fulfude}.
 
+@tindex AFRLIN-104-BPI_OCIL
+@tindex lingala
+@tindex lin
+@tindex sango
+@tindex wolof
+@tindex AFRLIN-105-BPI_OCIL
+@tindex t-lingala
+@tindex t-lin
+@tindex t-sango
+@tindex t-wolof
 Another African charset is usable for Lingala, Sango and Wolof, as well
 as for French.  This charset is available in @code{recode} under the
 name @code{AFRLIN-104-BPI_OCIL}.  Accepted aliases are @code{lingala},
@@ -3333,6 +3680,9 @@ name @code{AFRLIN-104-BPI_OCIL}.  Accepted aliases are @code{lingala},
 are available under the name @code{AFRLIN-105-BPI_OCIL}.  Accepted aliases
 are @code{t-lingala}, @code{t-lin}, @code{t-sango} and @code{t-wolof}.
 
+@tindex AFRL1-101-BPI_OCIL
+@tindex t-francais
+@tindex t-fra
 To ease exchange with @code{ISO-8859-1}, there is a charset conveying
 transliterated forms for @w{Latin-1} in a way which is compatible with the other
 African charsets in this series.  This charset is available in @code{recode}
@@ -3342,6 +3692,7 @@ and @code{t-francais}.
 @node Cyrillic, Texte, African, Miscellaneous
 @section Cyrillic charsets
 
+@cindex Cyrillic charsets
 The following Cyrillic charsets are already available in @code{recode}
 through @w{RFC 1345} tables: @code{CP1251} with aliases @code{1251}, @code{
 ms-cyrl} and @code{windows-1251}; @code{CSN_369103} with aliases
@@ -3362,21 +3713,27 @@ to the satisfaction of everybody, and this section will merely disappear.
 
 @table @code
 @item KEYBCS2
+@tindex KEYBCS2
+@tindex Kamenicky
 This charset is available under the name @code{KEYBCS2}, with
 @code{Kamenicky} as an accepted alias.
 
 @item CORK
+@tindex CORK
+@tindex T1
 This charset is available under the name @code{CORK}, with @code{T1}
 as an accepted alias.
 
 @item KOI-8_CS2
+@tindex KOI-8_CS2
 This charset is available under the name @code{KOI-8_CS2}.
-
 @end table
 
 @node Texte, Mule, Cyrillic, Miscellaneous
 @section Easy French conventions
 
+@tindex Texte
+@tindex txte
 This charset is available in @code{recode} under the name @code{Texte}
 and has @code{txte} for an alias.  It is a seven bits code, identical
 to @code{ASCII-BS}, save for French diacritics which are noted using a
@@ -3390,6 +3747,7 @@ displaying eight bit ISO @w{Latin-1} characters.  But not everybody is so
 fortunate.  In a few mailing environments, and sadly enough, it still
 happens that the eight bit is often willing-fully destroyed.
 
+@cindex Easy French
 Easy French has been in use in France for a while.  I only slightly
 adapted it (the diaeresis option) to make it more comfortable to several
 usages in Qu@'ebec originating from Universit@'e de Montr@'eal.  In fact,
@@ -3416,10 +3774,10 @@ There is no attempt at expressing the @kbd{ae} and @kbd{oe} diphthongs.
 French also uses tildes over @kbd{n} and @kbd{a}, but seldomly, and this
 is not represented either.  In some countries, @kbd{:} is used instead
 of @kbd{"} to mark diaeresis.  @code{recode} supports only one convention
-per call, depending on the @code{-c} option of the @code{recode} command.
+per call, depending on the @samp{-c} option of the @code{recode} command.
 French quotes (sometimes called ``angle quotes'') are noted the same way
 English quotes are noted in @TeX{}, @emph{id est} by @kbd{``} and @kbd{''}.
-No effort has been put to preserve Latin ligatures (@kbd{ae}, @kbd{oe})
+No effort has been put to preserve Latin ligatures (@kbd{@ae{}}, @kbd{@oe{}})
 which are representable in several other charsets.  So, these ligatures
 may be lost through Easy French conventions.
 
@@ -3459,7 +3817,7 @@ the single quotes will be mistaken twice for acute accents.  So English
 contractions and suffix possessives could be mangled.
 
 @item
-A double quote or colon, depending on @code{-c} option, which follows a
+A double quote or colon, depending on @samp{-c} option, which follows a
 vowel is interpreted as diaeresis only if it is followed by another letter.
 But there are in French several words that @emph{end} with a diaeresis,
 and the @code{recode} library is aware of them.  There are words ending in
@@ -3469,7 +3827,7 @@ are supposed to be seven words in this case.  So, one is missing.}
 (aigu@"e, ambigu@"e, contigu@"e, exigu@"e, subaigu@"e and suraigu@"e).
 There are also words not ending in ``igue'', but instead, either ending by
 ``i''@footnote{Look at one of the following sentences (the second has to
-be interpreted with the @code{-c} option):
+be interpreted with the @samp{-c} option):
 
 @example
 "Ai"e!  Voici le proble`me que j'ai"
@@ -3483,6 +3841,7 @@ a\"\i,
 @ifinfo
 ai",
 @end ifinfo
+@c FIXME: why not use @dotless{} here?  It works, AFAIK.
 @ignore
 a@"{@dotless{i}},
 @end ignore
@@ -3511,12 +3870,14 @@ for all words ending in ``igue'' as needing a diaerisis, as there are
 counter-examples (becfigue, b@`esigue, bigue, bordigue, bourdigue, brigue,
 contre-digue, digue, d'intrigue, fatigue, figue, garrigue, gigue, igue,
 intrigue, ligue, prodigue, sarigue and zigue).
-
 @end enumerate
 
 @node Mule, , Texte, Miscellaneous
 @section Mule as a multiplexed charset
 
+@tindex Mule@r{, a charset}
+@cindex multiplexed charsets
+@cindex super-charsets
 This version of @code{recode} barely starts supporting multiplexed or
 super-charsets, that is, those encoding methods by which a single text
 stream may contain a combination of more than one constituent charset.
@@ -3533,15 +3894,16 @@ driven from the semantics of what the file contains.  On the other side,
 multiplexed charsets are @emph{designed} to be interpreted fairly precisely,
 and quite independently of any informational context.
 
+@cindex MULE, in Emacs
 The spelling @code{Mule} originally stands for @cite{@emph{mul}tilingual
 @emph{e}nhancement to GNU Emacs}, it is the result of a collective
-effort orchestrated by Handa Ken'ishi since 1993.  When @code{Mule} got
+effort orchestrated by Handa Ken'ichi since 1993.  When @code{Mule} got
 rewritten in the main development stream of GNU Emacs 20, the FSF renamed
 it @code{MULE}, meaning @cite{@emph{mul}tilingual @emph{e}nvironment
 in GNU Emacs}.  Even if the charset @code{Mule} is meant to stay
 internal to GNU Emacs, it sometimes breaks loose in external files,
 and as a consequence, a recoding tool is sometimes needed.  Within Emacs,
-@code{Mule} comes with @code{leim}, which stands for @cite{@emph{l}ibraries
+@code{Mule} comes with @code{Leim}, which stands for @cite{@emph{l}ibraries
 of @emph{e}macs @emph{i}nput @emph{m}ethods}.  One of these libraries is
 named @code{quail}@footnote{Usually, quail means quail egg in Japanese,
 while egg alone is usually chicken egg.  Both quail egg and chicken
@@ -3555,8 +3917,10 @@ Of course, the publication of @code{EGG} has been delayed many times@dots{}
 
 @node Surfaces, Internals, Miscellaneous, Top
 @chapter All about surfaces
+@cindex surface, what it is
 
-The @dfn{trivial surface} consists into using a fixed number of bits
+@cindex trivial surface
+The @dfn{trivial surface} consists of using a fixed number of bits
 (often eight) for each character, the bits together hold the integer
 value of the index for the character in its charset table.  There are
 many kinds of surfaces, beyond the trivial one, all having the purpose
@@ -3578,6 +3942,8 @@ conceptual surfaces have been implemented as @code{recode} charsets,
 instead of as surfaces.  This choice yields to cleaner syntax
 and usage.  @xref{Universal}.
 
+@cindex surfaces, implementation in @code{recode}
+@tindex data@r{, a special charset}
 Surfaces are implemented within @code{recode} as special charsets which may
 only transform to or from the @code{data} special charset.  Clever users
 may use this knowledge for writing surface names in requests exactly as if
@@ -3588,7 +3954,7 @@ the request @samp{data..@var{surface}} merely adds the given @var{surface},
 while the request @samp{@var{surface}..data} removes it.
 
 We are only beginning to experiment with surfaces in @code{recode}, but
-the concept opens the doors to many avenues, it is not clear yet which
+the concept opens the doors to many avenues; it is not clear yet which
 ones are worth pursuing, and which should be abandoned.  This chapter
 presents all surfaces currently available.
 
@@ -3602,7 +3968,10 @@ presents all surfaces currently available.
 
 @node Permutations, End lines, Surfaces, Surfaces
 @section Permuting groups of bytes
+@cindex permutations of groups of bytes
 
+@cindex byte order swapping
+@cindex endiannes, changing
 A permutation is a surface transformation which reorders groups of
 eight-bit bytes.  A @emph{21} permutation exchanges pairs of successive
 bytes.  If the text contains an odd number of bytes, the last byte is
@@ -3613,17 +3982,20 @@ three bytes, @emph{21} if there are two bytes, or merely copied otherwise.
 
 @table @code
 @item 21
+@tindex 21-Permutation
+@tindex swabytes
 This surface is available in @code{recode} under the name
 @code{21-Permutation} and has @code{swabytes} for an alias.
 
 @item 4321
+@tindex 4321-Permutation
 This surface is available in @code{recode} under the name
 @code{4321-Permutation}.
-
 @end table
 
 @node End lines, MIME, Permutations, Surfaces
 @section Representation for end of lines
+@cindex end of line format
 
 The same charset might slightly differ, from one system to another, for
 the single fact that end of lines are not represented identically on all
@@ -3633,6 +4005,7 @@ conventions for representing end of lines are available through surfaces.
 
 @table @code
 @item CR
+@tindex CR@r{, a surface}
 This convention is popular on Apple's Macintosh machines.  When this
 surface is applied, each line is terminated by @kbd{CR}, which has
 @code{ASCII} value 13.  Unless the library is operating in strict mode,
@@ -3646,20 +4019,22 @@ it does not have any aliases.  This is the implied surface for the Apple
 Macintosh related charsets.
 
 @item CR-LF
+@tindex CR-LF@r{, a surface}
 This convention is popular on Microsoft systems running on IBM PCs and
 compatible.  When this surface is applied, each line is terminated by
 a sequence of two characters: one @kbd{CR} followed by one @kbd{LF},
 in that order.
 
+@cindex Ctrl-Z, discarding
 For compatibility with oldish MS-DOS systems, removing a @code{CR-LF}
 surface will discard the first encountered @kbd{C-z}, which has
 @code{ASCII} value 26, and everything following it in the text.
 Adding this surface will not, however, append a @kbd{C-z} to the result.
 
+@tindex cl
 This surface is available in @code{recode} under the name @code{CR-LF}
 and has @code{cl} for an alias.  This is the implied surface for the IBM
 or Microsoft related charsets or code pages.
-
 @end table
 
 Some other charsets might have their own representation for an end of
@@ -3670,35 +4045,45 @@ separately as surfaces.
 
 @node MIME, Dump, End lines, Surfaces
 @section MIME contents encodings
+@cindex MIME encodings
 
-@w{RFC 1521} defines two 7-bit surfaces, meant to prepare 8-bit messages for
+@cindex RFC 2045
+@w{RFC 2045} defines two 7-bit surfaces, meant to prepare 8-bit messages for
 transmission.  Base64 is especially usable for binary entities, while
 Quoted-Printable is especially usable for text entities, in those case
 the lower 128 characters of the underlying charset coincide with ASCII.
 
 @table @code
+@tindex Base64
+@tindex b64
+@tindex 64
 @item Base64
 This surface is available in @code{recode} under the name @code{Base64},
 with @code{b64} and @code{64} as acceptable aliases.
 
 @item Quoted-Printable
+@tindex Quoted-Printable
+@tindex quote-printable
+@tindex QP
 This surface is available in @code{recode} under the name
 @code{Quoted-Printable}, with @code{quote-printable} and @code{QP} as
 acceptable aliases.
-
 @end table
 
 Note that @code{UTF-7}, which may be also considered as a MIME surface,
 is provided as a genuine charset instead, as it necessary relates to
 @code{UCS-2} and nothing else.  @xref{UTF-7}.
 
-A little historical note, also showing the three levels of acceptation of
-Internet standards.  MIME changed from a ``Proposed Standard'' to a ``Draft
-Standard'' in 1993, and only became a ``Full Standard'' during 1996-12.
+A little historical note, also showing the three levels of acceptance of
+Internet standards.  MIME changed from a ``Proposed Standard'' (@w{RFC
+1341--1344}, 1992) to a ``Draft Standard'' (@w{RFC 1521--1523}) in 1993,
+and was @emph{recycled} as a ``Draft Standard'' in 1996-11.  It is not yet a
+``Full Standard''.
 
 @node Dump, Debugging, MIME, Surfaces
 @section Interpreted character dumps
 
+@cindex dumping characters
 Dumps are surfaces meant to express, in ways which are a bit more readable,
 the bit patterns used to represent characters.  They allow the inspection
 or debugging of character streams, but also, they may assist a bit the
@@ -3719,12 +4104,16 @@ type, and so, have identical sizes.
 
 @table @code
 @item Octal-1
+@tindex Octal-1
+@tindex o1
 This surface corresponds to an octal expression of each input byte.
 
 It is available in @code{recode} under the name @code{Octal-1},
 with @code{o1} and @code{o} as acceptable aliases.
 
 @item Octal-2
+@tindex Octal-2
+@tindex o2
 This surface corresponds to an octal expression of each pair of
 input bytes, except for the last pair, which may be short.
 
@@ -3732,6 +4121,8 @@ It is available in @code{recode} under the name @code{Octal-2}
 and has @code{o2} for an alias.
 
 @item Octal-4
+@tindex Octal-4
+@tindex o4
 This surface corresponds to an octal expression of each quadruple of
 input bytes, except for the last quadruple, which may be short.
 
@@ -3739,12 +4130,16 @@ It is available in @code{recode} under the name @code{Octal-4}
 and has @code{o4} for an alias.
 
 @item Decimal-1
+@tindex Decimal-1
+@tindex d1
 This surface corresponds to an decimal expression of each input byte.
 
 It is available in @code{recode} under the name @code{Decimal-1},
 with @code{d1} and @code{d} as acceptable aliases.
 
 @item Decimal-2
+@tindex Decimal-2
+@tindex d2
 This surface corresponds to an decimal expression of each pair of
 input bytes, except for the last pair, which may be short.
 
@@ -3752,6 +4147,8 @@ It is available in @code{recode} under the name @code{Decimal-2}
 and has @code{d2} for an alias.
 
 @item Decimal-4
+@tindex Decimal-4
+@tindex d4
 This surface corresponds to an decimal expression of each quadruple of
 input bytes, except for the last quadruple, which may be short.
 
@@ -3759,12 +4156,16 @@ It is available in @code{recode} under the name @code{Decimal-4}
 and has @code{d4} for an alias.
 
 @item Hexadecimal-1
+@tindex Hexadecimal-1
+@tindex x1
 This surface corresponds to an hexadecimal expression of each input byte.
 
 It is available in @code{recode} under the name @code{Hexadecimal-1},
 with @code{x1} and @code{x} as acceptable aliases.
 
 @item Hexadecimal-2
+@tindex Hexadecimal-2
+@tindex x2
 This surface corresponds to an hexadecimal expression of each pair of
 input bytes, except for the last pair, which may be short.
 
@@ -3772,24 +4173,26 @@ It is available in @code{recode} under the name @code{Hexadecimal-2},
 with @code{x2} for an alias.
 
 @item Hexadecimal-4
+@tindex Hexadecimal-4
+@tindex x4
 This surface corresponds to an hexadecimal expression of each quadruple of
 input bytes, except for the last quadruple, which may be short.
 
 It is available in @code{recode} under the name @code{Hexadecimal-4},
 with @code{x4} for an alias.
-
 @end table
 
 When removing a dump surface, that is, when reading a dump results back
 into a sequence of bytes, the narrower expression for a short last chunk
 is recognised, so dumping is a fully reversible operation.  However, in
-case you want do produce dumps by other means than through @code{recode},
+case you want to produce dumps by other means than through @code{recode},
 beware that for decimal dumps, the library has to rely on the number of
 spaces to establish the original byte size of the chunk.
 
-Despite the library might report reversibility errors, removing a dump
-surface is a rather forgiving process: one may mix bases, group more or
-less numbers per source line, or use shorter chunks elsewhere than at the
+Although the library might report reversibility errors, removing a dump
+surface is a rather forgiving process: one may mix bases, group a variable
+number of data per source line, or use shorter chunks in places other
+than at the
 far end.  Also, source lines not beginning with a number are skipped.  So,
 @code{recode} should often be able to read a whole C header file, wrapping
 the results of a previous dump, and regenerate the original byte string.
@@ -3802,6 +4205,7 @@ These surfaces are only meant for the expert @code{recode} user, and are
 only useful in a few contexts, like for generating binary permutations
 from the recoding or acting on them.
 
+@cindex debugging surfaces
 Debugging surfaces, @emph{when removed}, insert their generated data
 at the beginning of the output stream, and copy all the input stream
 after the generated data, unchanged.  This strange removal constraint
@@ -3817,16 +4221,19 @@ any real input data gets appended after what was generated.
 
 @table @code
 @item test7
+@tindex test7
 When removed, this surface produces 128 single bytes, the first having
 value 0, the second having value 1, and so forth until all 128 values have
 been generated.
 
 @item test8
+@tindex test8
 When removed, this surface produces 256 single bytes, the first having
 value 0, the second having value 1, and so forth until all 256 values have
 been generated.
 
 @item test15
+@tindex test15
 When removed, this surface produces 64509 double bytes, the first having
 value 0, the second having value 1, and so forth until all values have been
 generated, but excluding risky @code{UCS-2} values, like all codes from
@@ -3834,21 +4241,23 @@ the surrogate @code{UCS-2} area (for @code{UTF-16}), the byte order mark,
 and values known as invalid @code{UCS-2}.
 
 @item test16
+@tindex test16
 When removed, this surface produces 65536 double bytes, the first having
 value 0, the second having value 1, and so forth until all 65536 values
 have been generated.
-
 @end table
 
-For an example, the command @samp{recode l5/test8..dump < /dev/null} is a
+As an example, the command @samp{recode l5/test8..dump < /dev/null} is a
 convoluted way to produce an output similar to @samp{recode -lf l5}.  It says
 to generate all possible 256 bytes and interpret them as @code{ISO-8859-9}
 codes, while converting them to @code{UCS-2}.  Resulting @code{UCS-2}
 characters are dumped one per line, accompanied with their explicative name.
 
-@node Internals, , Surfaces, Top
+@node Internals, Concept Index, Surfaces, Top
 @chapter Internal aspects
 
+@cindex @code{recode} internals
+@cindex internals
 The incoming explanations of the internals of @code{recode} should
 help people who want to dive into @code{recode} sources for adding new
 charsets.  Adding new charsets does not require much knowledge about
@@ -3874,6 +4283,7 @@ Autoconf, Automake and @code{libtool} for adjusting configuration matters.
 
 @node Main flow, New charsets, Internals, Internals
 @section Overall organisation
+@cindex @code{recode}, main flow of operation
 
 The @code{recode} mechanics slowly evolved for many years, and it
 would be tedious to explain all problems I met and mistakes I did all
@@ -3886,6 +4296,7 @@ so that each elementary recoding step stays simple, making easier
 to add new ones.  The whole point of @code{recode}, as I see it, is
 providing a comfortable nest for growing new charset conversions.
 
+@cindex single step
 The main @code{recode} driver constructs, while initialising all
 conversion modules, a table giving all the conversion routines
 available (@dfn{single step}s) and for each, the starting charset and
@@ -3901,15 +4312,18 @@ Given a starting code and a goal code, @code{recode} computes the most
 economical route through the elementary recodings, that is, the best
 sequence of conversions that will transform the input charset into the
 final charset.  To speed up execution, @code{recode} looks for
-subsequences of conversions which are simple enough to be merged, it
+subsequences of conversions which are simple enough to be merged, and
 then dynamically creates new single steps to represent these mergings.
 
+@cindex double step
 A @dfn{double step} in @code{recode} is a special concept representing a
 sequence of two single steps, the output of the first single step being the
 special charset @code{UCS-2}, the input of the second single step being
 also @code{UCS-2}.  Special @code{recode} machinery dynamically produces
 efficient, reversible, merge-able single steps out of these double steps.
 
+@cindex recoding steps, statistics
+@cindex average number of recoding steps
 I made some statistics about how many internal recoding steps are required
 between any two charsets chosen at random.  The initial recoding layout,
 before optimisation, always uses between 1 and 6 steps.  Optimisation could
@@ -3928,6 +4342,8 @@ and the expected number of steps decreases by a lesser amount, going from
 
 @node New charsets, New surfaces, Main flow, Internals
 @section Adding new charsets
+@cindex adding new charsets
+@cindex new charsets, how to add
 
 The main part of @code{recode} is written in C, as are most single
 steps.  A few single steps need to recognise sequences of multiple
@@ -3984,9 +4400,10 @@ for the function argument.
 The second function executes the elementary recoding on a whole file.
 There are a few cases when you can spare writing this function:
 
+@c FIXME: functions file_one_to_one and file_one_to_many don't exist!
 @itemize @bullet
-
 @item
+@findex file_one_to_one
 Some single steps do nothing else than a pure copy of the input onto the
 output, in this case, you can use the predefined function
 @code{file_one_to_one}, while having a delayed initialisation for
@@ -4000,17 +4417,17 @@ function @code{file_one_to_one}, while having a delayed initialisation
 for presetting the @code{STEP} field @code{one_to_one} with your table.
 
 @item
+@findex file_one_to_many
 Some single steps are driven by a table which recodes one character into
 a string; if the recoding does nothing else, you can use the predefined
 function @code{file_one_to_many}, while having a delayed initialisation
 for presetting the @code{STEP} field @code{one_to_many} with your table.
-
 @end itemize
 
 If you have a recoding table handy in a suitable format but do not use
 one of the predefined recoding functions, it is still a good idea to use
 a delayed initialisation to save it anyway, because @code{recode} option
-@code{-h} will take advantage of this information when available.
+@samp{-h} will take advantage of this information when available.
 
 Finally, edit @file{Makefile.am} to add the source file name of your routines
 to the @code{C_STEPS} or @code{L_STEPS} macro definition, depending on
@@ -4018,6 +4435,8 @@ the fact your routines is written in C or in Flex.
 
 @node New surfaces, Design, New charsets, Internals
 @section Adding new surfaces
+@cindex adding new surfaces
+@cindex new surfaces, how to add
 
 Adding a new surface is technically quite similar to adding a new charset.
 @xref{New charsets}.  A surface is provided as a set of two
@@ -4025,6 +4444,7 @@ transformations: one from the predefined special charset @code{data} to
 the new surface, meant to apply the surface, the other from the new surface
 to the predefined special charset @code{data}, meant to remove the surface.
 
+@findex declare_step
 Internally in @code{recode}, function @code{declare_step} especially
 recognises when a charset is so related to @code{data}, and then takes
 appropriate actions so that charset gets indeed installed as a surface.
@@ -4034,6 +4454,7 @@ appropriate actions so that charset gets indeed installed as a surface.
 
 @itemize @bullet
 @item Why a shared library?
+@cindex shared library implementation
 
 There are many different approaches to reduce system requirements to
 handle all tables needed in the @code{recode} library.  One of them is to
@@ -4064,7 +4485,7 @@ this cleaned enough, it was easy to use Gordon Matzigkeit's @code{libtool}
 package, and take advantage of the Automake interface to neatly turn the
 non-shared library into a shared one.
 
-Sites linking with the @code{recode} library, while their system does not
+Sites linking with the @code{recode} library, whose system does not
 support any form of shared libraries, might end up with bulky executables.
 Surely, the @code{recode} library will have to be used statically, and
 might not very nicely usable on such systems.  It seems that progress
@@ -4120,6 +4541,7 @@ It will then reflect a fact, rather than a preset dogma.
 
 @item Why not @code{iconv}?
 
+@cindex @code{iconv}
 The @code{iconv} routine and library allows for converting characters
 from an input buffer to an input buffer, synchronously advancing both
 buffer cursors.  If the output buffer is not big enough to receive
@@ -4178,10 +4600,38 @@ they do not fit the simple model we had in mind when we did it.  Instead,
 we should try to stay opened to the difficulties of real life.  There is
 still a lot of complex needs for Asian people, say, that @code{recode}
 does not currently address, while it should.  Not only the doors should
-stay opened, but we should force them wider!
-
+stay open, but we should force them wider!
 @end itemize
 
+@node Concept Index, Option Index, Internals, Top
+@unnumbered Concept Index
+
+@printindex cp
+
+@node Option Index, Library Index, Concept Index, Top
+@unnumbered Option Index
+
+This is an alphabetical list of all command-line options accepted by
+@code{recode}.
+
+@printindex op
+
+@node Library Index, Charset and Surface Index, Option Index, Top
+@unnumbered Library Index
+
+This is an alphabetical index of important functions, data structures,
+and variables in the @code{recode} library.
+
+@printindex fn
+
+@node Charset and Surface Index, , Library Index, Top
+@unnumbered Charset and Surface Index
+
+This is an alphabetical list of all the charsets and surfaces supported
+by @code{recode}, and their aliases.
+
+@printindex tp
+
 @contents
 @bye
 
index 93b91ea11e40eeee26a6694b3cbaeaab08916c9c..6a2be21d353fe7f5edd38b1b61b35460ac3adf66 100644 (file)
@@ -1,3 +1,3 @@
-@set UPDATED 27 April 1999
-@set EDITION 3.5
-@set VERSION 3.5
+@set UPDATED 19 December 1999
+@set EDITION 3.5a
+@set VERSION 3.5a
diff --git a/doc/tables.pl b/doc/tables.pl
deleted file mode 100644 (file)
index febed3f..0000000
+++ /dev/null
@@ -1,1198 +0,0 @@
-#!/usr/bin/perl -w
-# Automatically derive `recode' table files from various sources.
-# Copyright © 1993, 1994, 1997, 1998, 1999 Free Software Foundation, Inc.
-# François Pinard <pinard@iro.umontreal.ca>, 1993.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program 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 General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-use strict;
-
-# Generated file names.
-my $CHARNAME = 'charname.h';
-my $MNEMONIC = 'rfc1345.h';
-my $EXPLODE = 'explode.c';
-my $POOL = 'strip-pool.c';
-my $DATA = 'strip-data.c';
-my $TEXINFO = 'charset.texi';
-
-# Usage clause.
-my $USAGE = <<EOF;
-\`tables.pl\' derives \`recode\' table files from various sources.
-
-Usage: $0 [OPTION]... DATA-FILE...
-
-  -e  produce C source file for explode data ($EXPLODE)
-  -m  produce inclusion file for short mnemonics ($MNEMONIC)
-  -n  produce inclusion file for character names ($CHARNAME)
-  -p  produce C source files for strip data ($POOL and $DATA)
-  -t  produce inclusion file for Texinfo ($TEXINFO)
-  -F  produce French versions for -n or -t
-
-DATA-FILEs may be rfc1345.txt, mnemonic[.,]ds, Unicode maps, or .def files
-from Keld\'s chset* packages.  The digesting order is usually important.
-When \`-F\' and \`-n\' are used, process Alain\'s tables.
-EOF
-
-# Generated copyright clause.
-my $OVERALL_HEADER = <<END_OF_TEXT;
-/* DO NOT MODIFY THIS FILE!  It was generated by \`recode/doc/tables.pl\'.  */
-
-/* Conversion of files between different charsets and surfaces.
-   Copyright © 1999 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by François Pinard <pinard\@iro.umontreal.ca>, 1993, 1997.
-
-   The \`recode\' 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 \`recode\' 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 \`recode\' 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.  */
-END_OF_TEXT
-
-# Ignore any mnemonic whose length is greater than $MAX_MNEMONIC_LENGTH.
-my $MAX_MNEMONIC_LENGTH = 3;
-
-# Character constants.
-my $REPLACEMENT_CHARACTER = 0xFFFD;
-my $NOT_A_CHARACTER = 0xFFFF;
-
-# Change STRIP_SIZE in `src/recode.h' if you change the value here.
-# See the accompanying documentation there, as needed.
-my $STRIP_SIZE = 8;
-\f
-# Argument decoding.
-
-my $French_option = 0;
-my $charname_option = 0;
-my $explode_option = 0;
-my $mnemonic_option = 0;
-my $strip_option = 0;
-my $texinfo_option = 0;
-
-while (@ARGV > 0 && $ARGV[0] =~ /^(-.*)/) {
-    ($French_option = 1, shift, next) if $1 eq '-F';
-    ($charname_option = 1, shift, next) if $1 eq '-n';
-    ($explode_option = 1, shift, next) if $1 eq '-e';
-    ($mnemonic_option = 1, shift, next) if $1 eq '-m';
-    ($strip_option = 1, shift, next) if $1 eq '-p';
-    ($texinfo_option = 1, shift, next) if $1 eq '-t';
-    die $USAGE;
-}
-die $USAGE if @ARGV < 1;
-
-if ($explode_option) {
-    &produce_explode_init ($EXPLODE);
-} elsif ($strip_option) {
-    &produce_strip_init ($DATA);
-}
-
-# Prepare to read various tables.
-
-my $charset_ordinal = 0;
-my $discard_charset = 0;
-my $alias_count = 0;
-my $description = '';
-
-# Read all data tables.
-
-my $INPUT;
-foreach (@ARGV) {
-    $INPUT = $_;
-    open INPUT, $INPUT or die "Cannot read $INPUT\n";
-    warn "Reading $INPUT\n";
-    while (<INPUT>) {
-       next if /^$/;
-
-       if (/^\#    Name:/) {
-           &digest_unimap;
-           last;
-       }
-
-       next if /^\#/;
-
-       if (/^escape_char/) {
-           &digest_mnemonics;
-           last;
-       }
-
-       if (/^Network Working Group +K\. Simonsen$/) {
-           if ($charname_option && ! $French_option) {
-               $_ = <INPUT> until /^   3rd field is the long descriptive/;
-               &digest_rfc1345_names;
-           }
-           if ($explode_option || $strip_option) {
-               $_ = <INPUT> until /^5\.  CHARSET TABLES$/;
-               &digest_rfc1345_tables;
-           }
-           last;
-       }
-
-       if (/^;Titre :/) {
-           if ($charname_option && $French_option) {
-               $_ = <INPUT> until /^; SOUSCRIT/;
-               $_ = <INPUT> until /^ *$/;
-               &digest_french_names;
-           }
-           last;
-       }
-
-       if (/^&referenceset$/) {
-           $_ = <INPUT> until /^$/;
-           &digest_rfc1345_tables;
-           last;
-       }
-
-       if (/^   Repertoire according to ISO\/IEC 10646-1:1993$/) {
-           $_ = <INPUT> until /^   Plane 000$/;
-           &digest_iso10646_def;
-           last;
-       }
-
-       die "$INPUT:$.: Data file with unknown contents\n";
-    }
-    close INPUT;
-}
-
-if ($explode_option) {
-    &produce_explode_term ($EXPLODE);
-} elsif ($strip_option) {
-    &produce_strip_term ($DATA, $POOL);
-}
-if ($charname_option) {
-    &produce_charname ($French_option ? "fr-$CHARNAME" : $CHARNAME);
-}
-if ($mnemonic_option) {
-    &produce_mnemonic ($MNEMONIC);
-}
-if ($texinfo_option) {
-    &produce_texinfo ($French_option ? "fr-$TEXINFO" : $TEXINFO);
-}
-
-exit 0;
-\f
-# Data readers.
-
-## ----------------------------------------- ##
-## Read in Keld's list of 10646 characters.  ##
-## ----------------------------------------- ##
-
-my $row;
-my $cell;
-
-sub digest_iso10646_def {
-    my ($code, $mnemonic, $charname, $flag);
-
-    while (<INPUT>) {
-       next if /^$/;
-
-       next if /^ $/;          # happens three times
-       next if /^   \.\.\./;
-       next if /^   Presentation forms$/;
-       next if /^   naming: first vertical /;
-
-       if (/^   row ([0-9][0-9][0-9])$/ && $1 < 256) {
-           $row = $1;
-           $cell = 0;
-           next;
-       }
-
-       if (/^   cell 00$/) {
-           $cell = 0;
-           next;
-       }
-
-       if (/^   cell ([0-9][0-9][0-9])$/ && $1 < 256) {
-           $cell = $1;
-           next;
-       }
-
-       if (/^   ([^ ]+)/) {
-#          s/^   // unless /^   [A-Z][A-Z][A-Z]/;
-           next unless /^   [A-Z][A-Z][A-Z]/;
-       }
-
-       if (/^   ([^ ].*)/) {
-           warn "$INPUT:$.: Over 256 cells in row $row\n" if $cell == 256;
-           $cell++;
-           next;
-       }
-
-       if (/^([^ ])  ([^ ].*)/ || /^([^ ][^ ]+) ([^ ].*)/) {
-           warn "$INPUT:$.: Over 256 cells in row $row\n" if $cell == 256;
-           &declare_mnemonic ($1, 256*$row + $cell++);
-           next;
-       }
-
-       warn "$INPUT:$.: Unrecognised line\n";
-    }
-}
-
-## -------------------------- ##
-## Read in a mnemonics file.  ##
-## -------------------------- ##
-
-sub digest_mnemonics {
-    my ($mnemonic, $ucs2);
-
-    while (<INPUT>) {
-       if (/^<([^ \t\n]+)>\t<U(....)>/) {
-           ($mnemonic, $ucs2) = ($1, hex $2);
-           $mnemonic =~ s,/(.),$1,g;
-           &declare_mnemonic ($mnemonic, $ucs2);
-       }
-    }
-}
-
-## ------------------------------------------------------------------- ##
-## Read the text of RFC 1345, saving all character names it declares.  ##
-## ------------------------------------------------------------------- ##
-
-my %ucs2;                      # num. value of a character, given its mnemonic
-my %charname;                  # name of character, given its numerical value
-my %code;                      # frequency of each word, then its crypt code
-my $max_length;                        # maximum printable length of a character name
-
-sub digest_rfc1345_names {
-    sub read_line {
-       my $line;
-
-       while (defined ($line = <INPUT>)) {     # FIXME?
-           next if $line =~ /^Simonsen/ .. $line =~ /^RFC 1345/;
-           last if $line =~ /^4.  CHARSETS/;
-           next if $line =~ /^$/;
-           if ($line =~ s/^ //) {
-               chop $line;
-               return $line;
-           }
-       }
-       '';
-    }
-
-    $max_length = 0;
-
-    # Read the character comments.  Count words in charnames.
-
-    my $next;
-    for ($_ = &read_line; $_; $_ = $next) {
-       # Look ahead one line and merge it if it should.
-
-       $next = &read_line;
-       if ($next =~ /^             *( .*)/) {
-           $_ .= $1;
-           $next = &read_line;
-       }
-
-       # Separate fields and save needed information.
-
-       if (/([^ ]+) +[0-9a-f]+ +(.*)/) {
-           my $mnemo = $1;
-           my $text = lc $2;
-
-           if (defined $ucs2{$mnemo}) {
-               $charname{$ucs2{$mnemo}} = $text;
-               if (length $text > $max_length) {
-                   $max_length = length $text;
-               }
-
-               my $word;
-               foreach $word (split (/ /, $text)) {
-                   $code{$word}++;
-               }
-           } elsif (length $mnemo <= $MAX_MNEMONIC_LENGTH) {
-               warn "$INPUT:$.: No known UCS-2 code for \`$mnemo'\n";
-           }
-       } elsif (!/ +e000/) {
-           warn "$INPUT:$.: What about <<$_>>?\n";
-       }
-    }
-}
-
-sub digest_french_names {
-    my $ucs;
-    my $text;
-
-    $max_length = 0;
-
-    $ucs = 0x0000;
-    foreach $text (('nul (nul)',                                       # 0000
-                   'début d\'en-tête (soh)',                           # 0001
-                   'début de texte (stx)',                             # 0002
-                   'fin de texte (etx)',                               # 0003
-                   'fin de transmission (eot)',                        # 0004
-                   'demande (enq)',                                    # 0005
-                   'accusé de réception positif (ack)',                # 0006
-                   'sonnerie (bel)',                                   # 0007
-                   'espace arrière (bs)',                              # 0008
-                   'tabulation horizontale (ht)',                      # 0009
-                   'interligne (lf)',                                  # 000A
-                   'tabulation verticale (vt)',                        # 000B
-                   'page suivante (ff)',                               # 000C
-                   'retour de chariot (cr)',                           # 000D
-                   'hors code (so)',                                   # 000E
-                   'en code (si)',                                     # 000F
-                   'échappement transmission (dle)',                   # 0010
-                   'commande d\'appareil un (dc1)',                    # 0011
-                   'commande d\'appareil deux (dc2)',                  # 0012
-                   'commande d\'appareil trois (dc3)',                 # 0013
-                   'commande d\'appareil quatre (dc4)',                # 0014
-                   'accusé de réception négatif (nak)',                # 0015
-                   'synchronisation (syn)',                            # 0016
-                   'fin de transmission de bloc (etb)',                # 0017
-                   'annulation (can)',                                 # 0018
-                   'fin de support (em)',                              # 0019
-                   'caractère de substitution (sub)',                  # 001A
-                   'échappement (esc)',                                # 001B
-                   'séparateur de fichier (fs)',                       # 001C
-                   'séparateur de groupe (gs)',                        # 001D
-                   'séparateur d\'article (rs)',                       # 001E
-                   'séparateur de sous-article (us)')) {               # 001F
-       $charname{$ucs++} = $text;
-       if (length $text > $max_length) {
-           $max_length = length $text;
-       }
-       foreach my $word (split (/ /, $text)) {
-           $code{$word}++;
-       }
-    }
-
-    $ucs = 0x007F;
-    foreach $text (('suppression (del)',                               # 007F
-                   'caractère de bourre (pad)',                        # 0080
-                   'octet supérieur prédéfini (hop)',                  # 0081
-                   'arrêt permis ici (bph)',                           # 0082
-                   'aucun arrêt ici (nbh)',                            # 0083
-                   'index (ind)',                                      # 0084
-                   'à la ligne (nel)',                                 # 0085
-                   'début de zone sélectionnée (ssa)',                 # 0086
-                   'fin de zone sélectionnée (esa)',                   # 0087
-                   'arrêt de tabulateur horizontal (hts)',             # 0088
-                   'tabulateur horizontal avec justification (htj)',   # 0089
-                   'arrêt de tabulateur vertical (vts)',               # 008A
-                   'interligne partiel vers le bas (pld)',             # 008B
-                   'interligne partiel vers le haut (plu)',            # 008C
-                   'index inversé (ri)',                               # 008D
-                   'remplacement unique deux (ss2)',                   # 008E
-                   'remplacement unique trois (ss3)',                  # 008F
-                   'chaîne de commande d\'appareil (dcs)',             # 0090
-                   'usage privé un (pu1)',                             # 0091
-                   'usage privé deux (pu2)',                           # 0092
-                   'mise en mode transmission (sts)',                  # 0093
-                   'annulation du caractère précédent (cch)',          # 0094
-                   'message en attente (mw)',                          # 0095
-                   'début de zone protégée (sga)',                     # 0096
-                   'fin de zone protégée (ega)',                       # 0097
-                   'début de chaîne (sos)',                            # 0098
-                   'introducteur de caractère graphique unique (sgci)',# 0099
-                   'introducteur de caractère unique (sci)',           # 009A
-                   'introducteur de séquence de commande (csi)',       # 009B
-                   'fin de chaîne (st)',                               # 009C
-                   'commande de système d\'exploitation (osc)',        # 009D
-                   'message privé (pm)',                               # 009E
-                   'commande de progiciel (apc)')) {                   # 009F
-       $charname{$ucs++} = $text;
-       if (length $text > $max_length) {
-           $max_length = length $text;
-       }
-       foreach my $word (split (/ /, $text)) {
-           $code{$word}++;
-       }
-    }
-
-    while (<INPUT>) {
-       chomp;
-       s/ +$//;
-       if (/^([0-9A-F]{4}) ([^\(]+)( \(.*\))?$/) {
-           $ucs = hex $1;
-           ($text = $2) =~ tr/A-ZÀÂÇÈÉÊÎÏÑÔÖÛ/a-zàâçèéêîïñôöû/;
-           $text =~ s/ +\*$//;
-
-           $charname{$ucs} = $text;
-           if (length $2 > $max_length) {
-               $max_length = length $2;
-           }
-           foreach my $word (split (/ /, $text)) {
-               $code{$word}++;
-           }
-       } else {
-           warn "$INPUT:$.: What about $1 ?\n";
-       }
-    }
-}
-
-## ------------------------------------------------------------ ##
-## Read the text of RFC 1345, saving all charsets it declares.  ##
-## UCS-2 mnemonics files should have been read in already.      ##
-## ------------------------------------------------------------ ##
-
-my %used;
-my @table;
-my $codedim;
-my $code;
-my $list;
-my $body;
-
-my @declare_alias;
-my %implied_surface;
-my $charset;
-my $hashname;
-
-sub digest_rfc1345_tables {
-    # Informal canonical order of presentation.
-    my ($CHARSET, $REM, $ALIAS, $ESC, $BITS, $CODE) = (1, 2, 3, 4, 5, 6);
-    my $status;
-
-    while (<INPUT>) {
-       next if /^Simonsen/ .. /^RFC 1345/;
-       next if /^$/;
-       last if /^ACKNOWLEDGEMENTS$/;
-       next unless s/^  ?//;
-
-       # Recognize `&charset'.
-
-       if (/^&charset (.*)/) {
-           # Before beginning a new charset, process the previous one.
-           my $incoming_charset = $1;
-           &complete_charset;
-
-           $charset = $incoming_charset;
-
-           # Prepare for processing a new charset: save the charset
-           # name for further declaration; announce this charset in
-           # the array initialization section; and initialize its
-           # processing.
-
-           warn sprintf ("  %d) %s\n", $charset_ordinal + 1, $charset);
-           $status = $CHARSET;
-
-           $description = "\n/* $charset\n";
-
-           $hashname = lc $charset;
-           $hashname =~ s/[^a-z0-9]//g;
-           if ($used{$hashname}) {
-               warn "$INPUT:$.: Duplicate of $used{$hashname} (discarded)\n";
-               $discard_charset = 1;
-               next;
-           }
-           $used{$hashname} = $charset;
-
-           $alias_count = 0;
-           @table = ($NOT_A_CHARACTER) x 256;
-           $codedim = 0;
-           $code = 0;
-           $list = '';
-           $body = '';
-
-           if ($charset =~ /^(CP|IBM)([0-9]+)$/) {
-               $implied_surface{$2} = 'crlf';
-               $implied_surface{"CP$2"} = 'crlf';
-               $implied_surface{"IBM$2"} = 'crlf';
-               push (@declare_alias, "$charset,$charset");
-               $alias_count++;
-#FIXME           } elsif ($charset =~ /^windows-([0-9]+)$/) {
-#FIXME               $implied_surface{$1} = 'crlf';
-#FIXME               $implied_surface{"CP$1"} = 'crlf';
-#FIXME               $implied_surface{"IBM$1"} = 'crlf';
-#FIXME               push (@declare_alias, "$charset,$charset");
-#FIXME               $alias_count++;
-           } elsif ($charset =~ /^macintosh(_ce)?$/) {
-               $implied_surface{$charset} = 'cr';
-               push (@declare_alias, "$charset,$charset");
-               $alias_count++;
-           }
-           next;
-       }
-
-       # Recognize other `&' directives.
-
-       if (/^&rem (.*)/ && ! /^&rem &alias/) {
-           # Keld now prefers `&rem' to be allowed everywhere.
-           #warn "$INPUT:$.: \`&rem' out of sequence\n" if $status > $REM;
-           #$status = $REM;
-
-           if ($texinfo_option) {
-               # Save C comments for Texinfo.
-
-               my $string = $1;
-               $string = (uc $1) . $2 if $string =~ /^([a-z])(.*)/;
-               $string .= '.' if $string !~ /\.$/;
-               $string =~ s/@/@@/g;
-               $body .= $string . "\n";
-           }
-           next;
-       }
-
-       if (/^(&rem )?&alias (.*)/) {
-           warn "$INPUT:$.: \`&alias' out of sequence\n" if $status > $ALIAS;
-           $status = $ALIAS;
-
-           # Save synonymous charset names for later declarations.
-
-           my $alias = $2;
-           if ($alias =~ s/ +$//) {
-               warn "$INPUT:$.: Spurious trailing whitespace\n";
-           }
-           $description .= "   $alias\n";
-
-           $hashname = lc $alias;
-           $hashname =~ s/[^a-z0-9]//g;
-           if ($used{$hashname} && $used{$hashname} ne $charset) {
-               warn "$INPUT:$.: Duplicate of $used{$hashname}\n";
-               next;
-           }
-           $used{$hashname} = $charset;
-
-           $list .= ',' if $list;
-           $list .= $alias;
-
-           if ($alias =~ /^(CP|IBM)([0-9]+)$/) {
-               $implied_surface{$2} = 'crlf';
-               $implied_surface{"CP$2"} = 'crlf';
-               $implied_surface{"IBM$2"} = 'crlf';
-           } elsif ($alias =~ /^mac(ce)?$/) {
-               $implied_surface{$alias} = 'cr';
-           }
-           push (@declare_alias, "$alias,$charset");
-           $alias_count++;
-           next;
-       }
-
-       if (/^&g[0-4]esc/) {
-           warn "$INPUT:$.: \`&esc' out of sequence\n" if $status > $ESC;
-           $status = $ESC;
-
-           next;
-       }
-
-       if (/^&bits ([0-9]+)$/) {
-           warn "$INPUT:$.: \`&bits' out of sequence\n" if $status > $BITS;
-           $status = $BITS;
-
-           if ($1 > 8) {
-               warn "$INPUT:$.: \`&bits $1' not accepted (charset discarded)\n";
-               $discard_charset = 1;
-           }
-           next;
-       }
-
-       if (/^&code (.*)/) {
-           warn "$INPUT:$.: \`&code' out of sequence\n" if $status > $CODE;
-           $status = $CODE;
-
-           # Save the code position.
-
-           $code = $1;
-           next;
-       }
-
-       # Other lines cause the charset to be discarded.
-
-       if (/^&([^ ]+)/) {
-           unless ($discard_charset) {
-               warn "$INPUT:$.: \`&$1' not accepted (charset discarded)\n";
-               $discard_charset = 1;
-           }
-       }
-
-       next if $discard_charset;
-
-       # Save all other tokens into the double table.
-
-       if ($explode_option || $strip_option) {
-           my $token;
-           foreach $token (split) {
-               if ($token eq '??') {
-                   $table[$code] = $NOT_A_CHARACTER;
-               } elsif ($token eq '__') {
-                   $table[$code] = $REPLACEMENT_CHARACTER;
-               } elsif (defined $ucs2{$token}) {
-                   $table[$code] = $ucs2{$token};
-                   if (length $token > $codedim) {
-                       $codedim = length $token;
-                   }
-               } else {
-                   warn "$INPUT:$.: Unknown mnemonic for $code: $token\n";
-                   $table[$code] = $REPLACEMENT_CHARACTER;
-               }
-               $code++;
-           }
-       }
-    }
-
-    # Push the last charset out.
-    &complete_charset;
-}
-
-## ---------------------------------------------------------------- ##
-## Read a Unicode map, as found in ftp://ftp.unicode.com/MAPPINGS.  ##
-## ---------------------------------------------------------------- ##
-
-sub digest_unimap {
-    my @name;
-
-    if (/^\# +Name: +([^ ]+) to Unicode table$/) {
-       @name = split (/_/, $1);
-       $charset = shift @name;
-       $description = "\n/* $charset\n";
-
-       $hashname = lc $charset;
-       $hashname =~ s/[^a-z0-9]//g;
-       if ($used{$hashname}) {
-           warn "$INPUT:$.: \`$hashname' duplicates \`$used{$hashname}'"
-               . " (charset discarded)\n";
-           $discard_charset = 1;
-           next;
-       }
-       $used{$hashname} = $charset;
-
-       $alias_count = 0;
-       @table = ($NOT_A_CHARACTER) x 256;
-       $codedim = 0;
-       $code = 0;
-       $list = '';
-       $body = '';
-    }
-    return if $discard_charset;
-
-    my $alias;
-    while ($alias = shift @name) {
-       $description .= "   $alias\n";
-
-       $hashname = lc $alias;
-       $hashname =~ s/[^a-z0-9]//g;
-       if ($used{$hashname} && $used{$hashname} ne $charset) {
-           warn "$INPUT:$.: \`$hashname' duplicates \`$used{$hashname}'\n";
-           next;
-       }
-       $used{$hashname} = $charset;
-
-       $list .= ',' if $list;
-       $list .= $alias;
-       push (@declare_alias, "$alias,$charset");
-       $alias_count++;
-    }
-
-    while (<INPUT>) {
-       next if /^$/;
-       next if /^\#/;
-       next if /^0x([0-9A-F]+)\t\t\#UNDEFINED$/;
-       last if /\032/;         # old MS-DOS C-Z !! :-)
-
-       if (/^0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#/) {
-           $table[hex $1] = hex $2;
-       } else {
-           warn "$INPUT:$.: Unrecognised input line\n";
-       }
-    }
-
-    &complete_charset;
-}
-\f
-# Reader services.
-
-## ---------------------------------------------------------------- ##
-## Declare a correspondence between a mnemonic and an UCS-2 value.  ##
-## ---------------------------------------------------------------- ##
-
-my $table_length = 0;
-my %mnemonic;
-
-sub declare_mnemonic {
-    my ($mnemonic, $ucs2) = @_;
-
-    return if length $mnemonic > $MAX_MNEMONIC_LENGTH;
-
-    if ($mnemonic_option) {
-       if (defined $mnemonic{$ucs2}) {
-           if ($mnemonic{$ucs2} ne $mnemonic) {
-               warn sprintf ("$INPUT:$.: U+%04X \`%s' known as \`%s'\n",
-                             $ucs2, $mnemonic, $mnemonic{$ucs2});
-               $mnemonic{$ucs2} = $mnemonic
-                   if length $mnemonic < length $mnemonic{$ucs2};
-           }
-       } else {
-           $mnemonic{$ucs2} = $mnemonic;
-           $table_length++;
-       }
-    }
-
-    if ($charname_option || $explode_option || $strip_option) {
-       if (defined $ucs2{$mnemonic}) {
-           if ($ucs2{$mnemonic} ne $ucs2) {
-               warn sprintf ("$INPUT:$.: `%s' U+%04X known as U+%04X\n",
-                             $mnemonic, $ucs2, $ucs2{$mnemonic});
-               $cell = $ucs2{$mnemonic} - 256*$row;
-           }
-       } else {
-           $ucs2{$mnemonic} = $ucs2;
-       }
-    }
-}
-
-## ---------------------------------------------------------- ##
-## Print all accumulated information for the charset.  If the ##
-## charset should be discarded, adjust tables.                ##
-## ---------------------------------------------------------- ##
-
-my %list;
-my %body;
-my @declare_charset;
-my @strip;
-
-sub complete_charset {
-    my $count;
-
-    if ($discard_charset) {
-       while ($alias_count-- > 0) {
-           pop @declare_alias;
-       }
-       $discard_charset = 0;
-       $description = '';
-    }
-    return unless $description;
-
-    if ($texinfo_option) {
-       # Save the documentation.
-
-       $list{$charset} = $list;
-       $body{$charset} = $body;
-    }
-
-    if ($explode_option) {
-       # Make introductory C comments.
-
-       print OUTPUT $description;
-       print OUTPUT "*/\n";
-
-       # Make the table for this charset.
-
-       print OUTPUT "\n";
-       print OUTPUT
-           "static const unsigned short data_$charset_ordinal\[\] =\n";
-       print OUTPUT "  {\n";
-       for ($code = 0; $code < 256; $code++) {
-           if ($code != $table[$code]) {
-               printf OUTPUT
-                   "    %3d, 0x%.4X, DONE,\n", $code, $table[$code];
-           }
-       }
-       print OUTPUT "    DONE\n";
-       print OUTPUT "  };\n";
-
-       # Register the table.
-
-       push (@declare_charset, $charset);
-    }
-
-    if ($strip_option) {
-       # Make introductory C comments.
-
-       print OUTPUT $description;
-       print OUTPUT "*/\n";
-
-       # Make the table for this charset.
-
-       print OUTPUT "\n";
-       print OUTPUT
-           "static struct strip_data data_$charset_ordinal =\n";
-       print OUTPUT "  {\n";
-       print OUTPUT "    ucs2_data_pool,\n";
-       print OUTPUT "    {\n";
-       $count = 0;
-       for ($code = 0; $code < 256; $code += $STRIP_SIZE) {
-           if ($count % 12 == 0) {
-               print OUTPUT ",\n" if $count != 0;
-               print OUTPUT '      ';
-           } else {
-               print OUTPUT ', ';
-           }
-
-           @strip = @table[$code .. $code + $STRIP_SIZE - 1];
-           printf OUTPUT '%4d', &pool_index;
-           $count++;
-       }
-       print OUTPUT "\n";
-       print OUTPUT "    }\n";
-       print OUTPUT "  };\n";
-
-       # Register the table.
-
-       push (@declare_charset, $charset);
-    }
-
-    $charset_ordinal++;
-    $description = '';
-}
-
-## ---------------------------------------------------------------- ##
-## Return the pool index for @strip.  Add to the pool as required.  ##
-## ---------------------------------------------------------------- ##
-
-my %pool;
-my $pool;
-my $pool_refs;
-my $pool_size;
-
-sub pool_index {
-    my $strip = join ('', map (sprintf ('%04X', $_), @strip));
-
-    $pool_refs++;
-
-    if (! defined $pool{$strip}) {
-       $pool{$strip} = $pool_size;
-       $pool .= $strip;
-       $pool_size += @strip;
-    }
-    $pool{$strip};
-}
-\f
-# Table writers.
-
-## -------------------------------------------- ##
-## Write a compressed list of character names.  ##
-## -------------------------------------------- ##
-
-sub produce_charname {
-    my ($output_name) = @_;
-    my (@word, @ucs2, $count, $singles, $char1, $char2, $word, $ucs2, $code);
-
-    open OUTPUT, ">$output_name" or die "Cannot write $output_name\n";
-    warn "Writing $output_name\n";
-    print OUTPUT $OVERALL_HEADER;
-
-    # Establish a mild compression scheme.  Words @word[0] to
-    # @word[$singles-1] will be represented by a single byte running from
-    # 1 to $singles.  All remaining words will be represented by two
-    # bytes, the first one running slowly from $singles+1 to 255, the
-    # second cycling faster from 1 to 255.
-
-    print STDERR '  sorting words...';
-    @word = sort descending keys %code;
-    printf STDERR " %d of them\n", 0 + @word;
-    $count = 0 + @word;
-    $singles = int ((255 * 255 - $count) / 254);
-
-    # Transmit a few values for further usage by the C code.
-
-    print STDERR '  sorting names...';
-    @ucs2 = sort { $a <=> $b } keys %charname;
-    printf STDERR " %d of them\n", 0 + @ucs2;
-
-    print OUTPUT "\n";
-    printf OUTPUT "#define NUMBER_OF_SINGLES %d\n", $singles;
-    printf OUTPUT "#define MAX_CHARNAME_LENGTH %d\n", $max_length;
-    printf OUTPUT "#define NUMBER_OF_CHARNAMES %d\n", (0 + @ucs2);
-
-    # Establish a mild compression scheme (one or two bytes per word).
-
-    warn "  writing words\n";
-    print OUTPUT "\n";
-    print OUTPUT "static const char *const word[$count] =\n";
-    print OUTPUT "  {\n";
-
-    $char1 = 1;
-    $char2 = 1;
-
-    my $counter;
-    for ($counter = 0; $counter < $singles; $counter++) {
-       $word = $word[$counter];
-       $word =~ s/\"/\\\"/;
-       printf OUTPUT "    %-28s/* \\%0.3o */\n", "\"$word\",", $char1;
-       $code{$word[$counter]} = $char1;
-       $char1++;
-    }
-
-    for (; $counter < $count; $counter++) {
-       $word = $word[$counter];
-       $word =~ s/\"/\\\"/;
-       printf OUTPUT
-           "    %-28s/* \\%0.3o\\%0.3o */\n", "\"$word\",", $char1, $char2;
-       $code{$word[$counter]} = 256 * $char1 + $char2;
-       if ($char2 == 255) {
-           $char1++;
-           $char2 = 1;
-       } else {
-           $char2++;
-       }
-    }
-    print OUTPUT "  };\n";
-
-    warn "  writing names\n";
-    print OUTPUT "\n";
-    print OUTPUT "struct charname\n";
-    print OUTPUT "  {\n";
-    print OUTPUT "    recode_ucs2 code;\n";
-    print OUTPUT "    const char *crypted;\n";
-    print OUTPUT "  };\n";
-
-    print OUTPUT "\n";
-    print OUTPUT
-       "static const struct charname charname[NUMBER_OF_CHARNAMES] =\n";
-    print OUTPUT "  {\n";
-
-    foreach $ucs2 (@ucs2) {
-       printf OUTPUT "    {0x%04X, \"", $ucs2;
-       foreach $word (split (' ', $charname{$ucs2})) {
-           $code = $code{$word};
-           print "??? $word\n" unless defined $code;
-           if ($code < 256) {
-               printf OUTPUT "\\%0.3o", $code;
-           } else {
-               printf OUTPUT "\\%0.3o\\%0.3o", int ($code / 256), $code % 256;
-           }
-       }
-       print OUTPUT "\"},\n";
-    }
-
-    print OUTPUT "  };\n";
-    close OUTPUT;
-}
-
-## ------------------------------------------- ##
-## Write an UCS-2 to RFC 1345 mnemonic table.  ##
-## ------------------------------------------- ##
-
-sub produce_mnemonic {
-    my ($output_name) = @_;
-    my ($count, $ucs2, $string, %inverse);
-
-    open OUTPUT, ">$output_name" or die "Cannot create $output_name\n";
-    warn "Writing $output_name\n";
-
-    print OUTPUT $OVERALL_HEADER;
-    print OUTPUT "\n";
-    print OUTPUT "#define TABLE_LENGTH $table_length\n";
-    print OUTPUT "#define MAX_MNEMONIC_LENGTH $MAX_MNEMONIC_LENGTH\n";
-    print OUTPUT "\n";
-    print OUTPUT "struct entry\n";
-    print OUTPUT "  {\n";
-    print OUTPUT "    recode_ucs2 code;\n";
-    print OUTPUT "    const char *rfc1345;\n";
-    print OUTPUT "  };\n";
-    print OUTPUT "\n";
-    print OUTPUT "static const struct entry table[TABLE_LENGTH] =\n";
-    print OUTPUT "  {\n";
-    $count = 0;
-    foreach $ucs2 (sort {$a <=> $b} keys %mnemonic) {
-       $string = $mnemonic{$ucs2};
-       $inverse{$string} = $count;
-       $string =~ s/([\"])/\\$1/g;
-       printf OUTPUT
-           "    /* %4d */ {0x%04X, \"%s\"},\n", $count, $ucs2, $string;
-       $count++;
-    }
-    print OUTPUT "  };\n";
-    print OUTPUT "\n";
-    print OUTPUT "static const unsigned short inverse[TABLE_LENGTH] =\n";
-    print OUTPUT '  {';
-    $count = 0;
-    foreach $string (sort keys %inverse) {
-       if ($count % 10 == 0) {
-           print OUTPUT ',' if $count != 0;
-           printf OUTPUT "\n    /* %4d */ ", $count;
-       } else {
-           print OUTPUT ', ';
-       }
-       printf OUTPUT '%4d', $inverse{$string};
-       $count++;
-    }
-    print OUTPUT "\n";
-    print OUTPUT "  };\n";
-
-    close OUTPUT;
-}
-
-## ------------------------------- ##
-## Write the explode source file.  ##
-## ------------------------------- ##
-
-sub produce_explode_init {
-    my ($output_name) = @_;
-
-    # Prepare the production of tables.
-
-    open OUTPUT, ">$output_name";
-    warn "Starting $output_name\n";
-    print OUTPUT $OVERALL_HEADER;
-    print OUTPUT "\n";
-    print OUTPUT "#include \"common.h\"\n";
-}
-
-# [...] Table fragments will be produced while reading data tables.
-
-sub produce_explode_term {
-    my ($output_name) = @_;
-    my ($count, $string);
-
-    # Print the collectable initialization function.
-
-    warn "Completing $output_name\n";
-    print OUTPUT "\n";
-    print OUTPUT "bool\n";
-    printf OUTPUT "module_explodes (struct recode_outer *outer)\n";
-    print OUTPUT "{\n";
-    $count = 0;
-    while ($string = shift @declare_charset) {
-       print OUTPUT
-           "  if (!declare_explode_data (outer, &data_$count, \"$string\"))\n";
-       print OUTPUT "    return false;\n";
-       $count++;
-    }
-    print OUTPUT "\n";
-    while ($string = shift @declare_alias) {
-       $string =~ s/,/", "/;
-       print OUTPUT "  if (!declare_alias (outer, \"$string\"))\n";
-       print OUTPUT "    return false;\n";
-    }
-    print OUTPUT "\n";
-    print OUTPUT "  return true;\n";
-    print OUTPUT "}\n";
-    close OUTPUT;
-}
-
-## --------------------------------- ##
-## Write the pool and index tables.  ##
-## --------------------------------- ##
-
-sub produce_strip_init {
-    my ($output_name) = @_;
-
-    # Prepare the production of tables.
-
-    $pool_size = 0;
-    $pool_refs = 0;
-    %pool = ();
-    $pool = '';
-
-    open OUTPUT, ">$output_name";
-    warn "Starting $output_name\n";
-    print OUTPUT $OVERALL_HEADER;
-    print OUTPUT "\n";
-    print OUTPUT "#include \"common.h\"\n";
-}
-
-# [...] Table fragments will be produced while reading data tables.
-
-sub produce_strip_term {
-    my ($output_name, $pool_name) = @_;
-    my ($count, $string);
-
-    # Give memory statistics.
-
-    warn sprintf ("Table memory = %d bytes (pool %d, refs %d)\n",
-                 $pool_size * 2 + $pool_refs * 2,
-                 $pool_size * 2, $pool_refs * 2);
-
-    # Print the collectable initialization function.
-
-    warn "Completing $output_name\n";
-    print OUTPUT "\n";
-    print OUTPUT "bool\n";
-    printf OUTPUT "module_strips (struct recode_outer *outer)\n";
-    print OUTPUT "{\n";
-    print OUTPUT "  RECODE_SYMBOL symbol;\n";
-    print OUTPUT "\n";
-    $count = 0;
-    while ($string = shift @declare_charset) {
-       print OUTPUT
-           "  if (!declare_strip_data (outer, &data_$count, \"$string\"))\n";
-       print OUTPUT "    return false;\n";
-       $count++;
-    }
-    print OUTPUT "\n";
-    while ($string = shift @declare_alias) {
-       my ($alias, $charset) = $string =~ /^(.*),(.*)$/;
-       if (defined $implied_surface{$alias}) {
-           print OUTPUT "  if (symbol = declare_alias (outer, \"$alias\", \"$charset\"), !symbol)\n";
-           print OUTPUT "    return false;\n";
-           print OUTPUT "  if (!declare_implied_surface (outer, symbol, outer->$implied_surface{$alias}_surface))\n";
-           print OUTPUT "    return false;\n";
-       } else {
-           print OUTPUT "  if (!declare_alias (outer, \"$alias\", \"$charset\"))\n";
-           print OUTPUT "    return false;\n";
-       }
-    }
-    print OUTPUT "\n";
-    print OUTPUT "  return true;\n";
-    print OUTPUT "}\n";
-    close OUTPUT;
-
-    # Write the pool file.
-
-    open OUTPUT, ">$pool_name" or die "Cannot create $pool_name\n";
-    warn "Writing $pool_name\n";
-    print OUTPUT $OVERALL_HEADER;
-    print OUTPUT "\n";
-    print OUTPUT "#include \"common.h\"\n";
-    print OUTPUT "\n";
-    print OUTPUT "const recode_ucs2 ucs2_data_pool[$pool_size] =\n";
-    print OUTPUT '  {';
-    for ($count = 0; $count < $pool_size; $count++) {
-       if ($count % 8 == 0) {
-           print OUTPUT ',' if $count != 0;
-           printf OUTPUT "\n    /* %4d */ ", $count;
-       } else {
-           print OUTPUT ', ';
-       }
-       print OUTPUT '0x', substr ($pool, $count * 4, 4);
-    }
-    print OUTPUT "\n";
-    print OUTPUT "  };\n";
-    close OUTPUT;
-}
-
-## ------------------------------ ##
-## Write the documentation file.  ##
-## ------------------------------ ##
-
-sub produce_texinfo {
-    my ($output_name) = @_;
-    my ($charset, @list, $string);
-
-    open OUTPUT, ">$output_name" or die "Cannot create $output_name\n";
-    warn "Writing $output_name\n";
-    for $charset (sort keys %body) {
-       print OUTPUT "\n\@item $charset\n";
-       @list = sort (split (/,/, $list{$charset}));
-       if (@list == 1) {
-           print OUTPUT
-               '@code{', $list[0], "} is an alias for this charset.\n";
-       } elsif (@list > 0) {
-           $string = '@code{' . join ('}, @code{', @list) . '}';
-           $string =~ s/,([^,]+)$/ and$1/;
-           print OUTPUT $string, " are aliases for this charset.\n";
-       }
-       print OUTPUT $body{$charset};
-    }
-    close OUTPUT;
-}
-\f
-# Writer services.
-
-# Comparison routine for descending sort on frequencies.
-
-sub descending {
-    my $result = $code{$b} - $code{$a};
-
-    $result == 0 ? $a cmp $b : $result;
-}
diff --git a/doc/tables.py b/doc/tables.py
new file mode 100755 (executable)
index 0000000..09eabb0
--- /dev/null
@@ -0,0 +1,1305 @@
+#!/usr/bin/python
+#                                                    -*- coding: latin-1 -*-
+# Automatically derive `recode' table files from various sources.
+# Copyright © 1993, 1994, 1997, 1998, 1999 Free Software Foundation, Inc.
+# François Pinard <pinard@iro.umontreal.ca>, 1993.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+"""\
+`tables.py' derives `recode' table files from various sources.
+
+Usage: python tables.py [OPTION]... DATA-FILE...
+
+  -e  produce C source file for explode data (explode.c)
+  -m  produce inclusion file for short mnemonics (rfc1345.h)
+  -n  produce inclusion file for character names (charname.h)
+  -p  produce C source files for strip data (strip-pool.c and strip-data.c)
+  -t  produce inclusion file for Texinfo (charset.texi)
+  -F  produce French versions for -n or -t
+
+DATA-FILEs may be rfc1345.txt, mnemonic[.,]ds, Unicode maps, or .def files
+from Keld's chset* packages.  The digesting order is usually important.
+When `-F' and `-n' are used, process Alain's tables.
+"""
+
+import re, string, sys
+
+# Generated file names.
+CHARNAME = 'charname.h'
+MNEMONIC = 'rfc1345.h'
+EXPLODE = 'explode.c'
+POOL = 'strip-pool.c'
+DATA = 'strip-data.c'
+TEXINFO = 'charset.texi'
+
+# Generated copyright clause.
+OVERALL_HEADER = """\
+/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.py'.  */
+
+/* Conversion of files between different charsets and surfaces.
+   Copyright © 1999 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by François Pinard <pinard@iro.umontreal.ca>, 1993, 1997.
+
+   The `recode' 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 `recode' 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 `recode' 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.  */
+"""
+
+# Ignore any mnemonic whose length is greater than MAX_MNEMONIC_LENGTH.
+MAX_MNEMONIC_LENGTH = 3
+
+# Character constants.
+REPLACEMENT_CHARACTER = 0xFFFD
+NOT_A_CHARACTER = 0xFFFF
+
+# Change STRIP_SIZE in `src/recode.h' if you change the value here.
+# See the accompanying documentation there, as needed.
+STRIP_SIZE = 8
+\f
+# Main driver.
+
+def warn(format, *args):
+    sys.stderr.write('%s:%s: %s\n' % (input_name, line_count, format % args))
+
+def die(format, *args):
+    sys.stderr.write('%s:%s: %s\n' % (input_name, line_count, format % args))
+    raise 'Fatal'
+
+def main(*arguments):
+    global input_name
+    global line_count
+    global input
+
+    global alias_count
+    global charset_ordinal
+    global comment
+    global discard_charset
+
+    global charname_option
+    global explode_option
+    global mnemonic_option
+    global strip_option
+    global texinfo_option
+
+    import getopt
+
+    # Argument decoding.
+    French_option = 0
+    charname_option = 0
+    explode_option = 0
+    mnemonic_option = 0
+    strip_option = 0
+    texinfo_option = 0
+    options, arguments = getopt.getopt(arguments, 'Femnpt')
+    for option, value in options:
+        if option == '-F': French_option = 1
+        elif option == '-e': explode_option = 1
+        elif option == '-m': mnemonic_option = 1
+        elif option == '-n': charname_option = 1
+        elif option == '-p': strip_option = 1
+        elif option == '-t': texinfo_option = 1
+    if not arguments:
+        raise __doc__
+
+    if explode_option:
+        produce_explode_init(EXPLODE)
+    elif strip_option:
+        produce_strip_init(DATA)
+
+    # Prepare to read various tables.
+
+    charset_ordinal = 0
+    discard_charset = 0
+    alias_count = 0
+    comment = ''
+
+    # Read all data tables.
+
+    for input_name in arguments:
+        input = open(input_name)
+        line_count = 0
+        sys.stderr.write("Reading %s\n" % input_name)
+        while 1:
+            line = input.readline()
+            line_count = line_count + 1
+            if not line:
+                break
+            if re.match('$', line):
+                continue
+
+            if re.match('\#    Name:', line):
+                digest_unimap()
+                break
+
+            if re.match('\#', line):
+                continue
+
+            if re.match('escape_char', line):
+                digest_mnemonics()
+                break
+
+            if re.match('Network Working Group +K\. Simonsen$', line):
+                if charname_option and not French_option:
+                    while not re.match('   3rd field is the long descriptive',
+                                       line):
+                        line = input.readline()
+                        line_count = line_count + 1
+                    digest_rfc1345_names()
+                if explode_option or strip_option:
+                    while not re.match('5\.  CHARSET TABLES$', line):
+                        line = input.readline()
+                        line_count = line_count + 1
+                    digest_rfc1345_tables()
+                break
+
+            if re.match(';Titre :', line):
+                if charname_option and French_option:
+                    while not re.match('; SOUSCRIT', line):
+                        line = input.readline()
+                        line_count = line_count + 1
+                    while not re.match(' *$', line):
+                        line = input.readline()
+                        line_count = line_count + 1
+                    digest_french_names()
+                break
+
+            if re.match('&referenceset$', line):
+                while not re.match('$', line):
+                    line = input.readline()
+                    line_count = line_count + 1
+                digest_rfc1345_tables()
+                break
+
+            if re.match('   Repertoire according to ISO/IEC 10646-1:1993$',
+                        line):
+                while not re.match('   Plane 000$', line):
+                    line = input.readline()
+                    line_count = line_count + 1
+                digest_iso10646_def()
+                break
+
+            die("Data file with unknown contents")
+
+        input.close()
+
+    if explode_option:
+        produce_explode_term(EXPLODE)
+    elif strip_option:
+        produce_strip_term(DATA, POOL)
+    if charname_option:
+        if French_option:
+            produce_charname('fr-%s' % CHARNAME)
+        else:
+            produce_charname(CHARNAME)
+    if mnemonic_option:
+        produce_mnemonic(MNEMONIC)
+    if texinfo_option:
+        if French_option:
+            produce_texinfo('fr-%s' % TEXINFO)
+        else:
+            produce_texinfo(TEXINFO)
+\f
+# Data readers.
+
+## ----------------------------------------- ##
+## Read in Keld's list of 10646 characters.  ##
+## ----------------------------------------- ##
+
+def digest_iso10646_def():
+    global line_count
+    global row, cell
+
+    while 1:
+        line = input.readline()
+        line_count = line_count + 1
+        if not line:
+            break
+        if re.match('$', line):
+            continue
+        if re.match(' $', line):
+            continue                    # happens three times
+        if re.match('   \.\.\.', line):
+            continue
+        if re.match('   Presentation forms$', line):
+            continue
+        if re.match('   naming: first vertical ', line):
+            continue
+
+        match = re.match('   row ([0-9][0-9][0-9])$', line)
+        if match and int(match.group(1)) < 256:
+            row = int(match.group(1))
+            cell = 0
+            continue
+
+        if re.match('   cell 00$', line):
+            cell = 0
+            continue
+
+        match = re.match('   cell ([0-9][0-9][0-9])$', line)
+        if match and int(match.group(1)) < 256:
+            cell = int(match.group(1))
+            continue
+
+        match = re.match('   ([^ ]+)', line)
+        if match:                       # FIXME: $1 n'a pas de sens!
+            # s/^   // unless /^   [A-Z][A-Z][A-Z]/;
+            if not re.match('   [A-Z][A-Z][A-Z]', line):
+                continue
+
+        match = re.match('   ([^ ].*)', line)
+        if match:                       # FIXME: $1 n'a pas de sens!
+            if cell == 256:
+                warn("Over 256 cells in row %d", row)
+            cell = cell + 1
+            continue
+
+        match = (re.match('([^ ])  ([^ ].*)', line)
+                 or re.match('([^ ][^ ]+) ([^ ].*)', line))
+        if match:                       # FIXME: $2 n'a pas de sens!
+            if cell == 256:
+                warn("Over 256 cells in row %d", row)
+            declare_mnemonic(match.group(1), 256*row + cell)
+            cell = cell + 1
+            continue
+
+        warn("Unrecognised line")
+
+## -------------------------- ##
+## Read in a mnemonics file.  ##
+## -------------------------- ##
+
+def digest_mnemonics():
+    global line_count
+
+    while 1:
+        line = input.readline()
+        line_count = line_count + 1
+        if not line:
+            break
+        match = re.match('<([^ \t\n]+)>\t<U(....)>', line)
+        if match:
+            mnemonic = re.sub('/(.)', r'\1', match.group(1))
+            ucs2 = string.atoi(match.group(2), 16)
+            declare_mnemonic(mnemonic, ucs2)
+
+## ------------------------------------------------------------------- ##
+## Read the text of RFC 1345, saving all character names it declares.  ##
+## ------------------------------------------------------------------- ##
+
+# Numeric value of a character, given its mnemonic.
+ucs2_map = {}
+
+# Name of character, given its numerical value.
+charname_map = {}
+
+# Frequency of each word, then its crypt code.
+code_map = {}
+
+# Maximum printable length of a character name.
+max_length = 0
+
+def digest_rfc1345_names():
+    global max_length
+
+    def read_line():
+        global line_count
+
+        skip = 0
+        while 1:
+            line = input.readline()
+            line_count = line_count + 1
+            if not line:
+                break
+            if re.match('Simonsen', line):
+                skip = 1
+                continue
+            if skip:
+                if re.match('RFC 1345', line):
+                    skip = 0
+                continue
+            if re.match('4.  CHARSETS', line):
+                break
+            if re.match('$', line):
+                continue
+            if line[0] == ' ':
+                return string.lstrip(line[:-1])
+        return None
+
+    max_length = 0
+
+    # Read the character descriptions.  Count words in charnames.
+
+    line = read_line()
+    while line:
+       # Look ahead one line and merge it if it should.
+
+        next = read_line()
+        while next:
+            match = re.match('             *( .*)', next)
+            if not match:
+                break
+            line = line + match.group(1)
+            next = read_line()
+
+       # Separate fields and save needed information.
+
+        match = re.search('([^ ]+) +[0-9a-f]+ +(.*)', line)
+        if match:
+            mnemo = match.group(1)
+            text = string.lower(match.group(2))
+
+            if ucs2_map.has_key(mnemo):
+                charname_map[ucs2_map[mnemo]] = text
+                if len(text) > max_length:
+                    max_length = len(text)
+                for word in string.split(text):
+                    if code_map.has_key(word):
+                        code_map[word] = code_map[word] + 1
+                    else:
+                        code_map[word] = 1
+            elif len(mnemo) <= MAX_MNEMONIC_LENGTH:
+                warn("No known UCS-2 code for `%s'", mnemo)
+        elif not re.search(' +e000', line):
+            warn("What about `%s'?", line)
+
+        line = next
+
+def digest_french_names():
+    global line_count
+    global max_length
+
+    max_length = 0
+    ucs = 0x0000
+
+    for text in (
+        "nul (nul)",                                        # 0000
+        "début d'en-tête (soh)",                            # 0001
+        "début de texte (stx)",                             # 0002
+        "fin de texte (etx)",                               # 0003
+        "fin de transmission (eot)",                        # 0004
+        "demande (enq)",                                    # 0005
+        "accusé de réception positif (ack)",                # 0006
+        "sonnerie (bel)",                                   # 0007
+        "espace arrière (bs)",                              # 0008
+        "tabulation horizontale (ht)",                      # 0009
+        "interligne (lf)",                                  # 000A
+        "tabulation verticale (vt)",                        # 000B
+        "page suivante (ff)",                               # 000C
+        "retour de chariot (cr)",                           # 000D
+        "hors code (so)",                                   # 000E
+        "en code (si)",                                     # 000F
+        "échappement transmission (dle)",                   # 0010
+        "commande d'appareil un (dc1)",                     # 0011
+        "commande d'appareil deux (dc2)",                   # 0012
+        "commande d'appareil trois (dc3)",                  # 0013
+        "commande d'appareil quatre (dc4)",                 # 0014
+        "accusé de réception négatif (nak)",                # 0015
+        "synchronisation (syn)",                            # 0016
+        "fin de transmission de bloc (etb)",                # 0017
+        "annulation (can)",                                 # 0018
+        "fin de support (em)",                              # 0019
+        "caractère de substitution (sub)",                  # 001A
+        "échappement (esc)",                                # 001B
+        "séparateur de fichier (fs)",                       # 001C
+        "séparateur de groupe (gs)",                        # 001D
+        "séparateur d'article (rs)",                        # 001E
+        "séparateur de sous-article (us)",                  # 001F
+        ):
+        charname_map[ucs] = text
+        ucs = ucs + 1
+        if len(text) > max_length:
+            max_length = len(text)
+        for word in string.split(text):
+            if code_map.has_key(word):
+                code_map[word] = code_map[word] + 1
+            else:
+                code_map[word] = 1
+
+    ucs = 0x007F
+    for text in (
+        "suppression (del)",                                # 007F
+        "caractère de bourre (pad)",                        # 0080
+        "octet supérieur prédéfini (hop)",                  # 0081
+        "arrêt permis ici (bph)",                           # 0082
+        "aucun arrêt ici (nbh)",                            # 0083
+        "index (ind)",                                      # 0084
+        "à la ligne (nel)",                                 # 0085
+        "début de zone sélectionnée (ssa)",                 # 0086
+        "fin de zone sélectionnée (esa)",                   # 0087
+        "arrêt de tabulateur horizontal (hts)",             # 0088
+        "tabulateur horizontal avec justification (htj)",   # 0089
+        "arrêt de tabulateur vertical (vts)",               # 008A
+        "interligne partiel vers <= bas (pld)",             # 008B
+        "interligne partiel vers <= haut (plu)",            # 008C
+        "index inversé (ri)",                               # 008D
+        "remplacement unique deux (ss2)",                   # 008E
+        "remplacement unique trois (ss3)",                  # 008F
+        "chaîne de commande d'appareil (dcs)",              # 0090
+        "usage privé un (pu1)",                             # 0091
+        "usage privé deux (pu2)",                           # 0092
+        "mise en mode transmission (sts)",                  # 0093
+        "annulation du caractère précédent (cch)",          # 0094
+        "message en attente (mw)",                          # 0095
+        "début de zone protégée (sga)",                     # 0096
+        "fin de zone protégée (ega)",                       # 0097
+        "début de chaîne (sos)",                            # 0098
+        "introducteur de caractère graphique unique (sgci)",# 0099
+        "introducteur de caractère unique (sci)",           # 009A
+        "introducteur de séquence de commande (csi)",       # 009B
+        "fin de chaîne (st)",                               # 009C
+        "commande de système d'exploitation (osc)",         # 009D
+        "message privé (pm)",                               # 009E
+        "commande de progiciel (apc)",                      # 009F
+        ):
+        charname_map[ucs] = text
+        ucs = ucs + 1
+        if len(text) > max_length:
+            max_length = len(text)
+        for word in string.split(text):
+            if code_map.has_key(word):
+                code_map[word] = code_map[word] + 1
+            else:
+                code_map[word] = 1
+
+    fold_table = range(256)
+    for before, after in map(None,
+                             'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÂÇÈÉÊÎÏÑÔÖÛ',
+                             'abcdefghijklmnopqrstuvwxyzàâçèéêîïñôöû'):
+        fold_table[ord(before)] = ord(after)
+    folding = string.join(map(chr, fold_table), '')
+
+    while 1:
+        line = input.readline()
+        line_count = line_count + 1
+        if not line:
+            break
+        if line[-1] == '\n':
+            line = line[:-1]
+        line = string.rstrip(line)
+        match = re.match('([0-9A-F]{4}) ([^\(]+)( \(.*\))?$', line)
+        if match:
+            ucs = string.atoi(match.group(1), 16)
+            text = string.translate(match.group(2), folding)
+
+            charname_map[ucs] = re.sub(r' +\*$', '', text, 1)
+            if len(match.group(2)) > max_length:
+                max_length = len(match.group(2))
+            for word in string.split(text):
+                if code_map.has_key(word):
+                    code_map[word] = code_map[word] + 1
+                else:
+                    code_map[word] = 1
+        else:
+            warn("What about `%s'?", line)
+
+## ------------------------------------------------------------ ##
+## Read the text of RFC 1345, saving all charsets it declares.  ##
+## UCS-2 mnemonics files should have been read in already.      ##
+## ------------------------------------------------------------ ##
+
+used_map = {}
+table = []
+
+#codedim
+#code
+#list
+
+declare_alias = []
+implied_surface = {}
+#hashname
+
+def digest_rfc1345_tables():
+    global alias_count
+    global aliases
+    global charset
+    global line_count
+    global comment
+    global discard_charset
+    global remark
+    global table
+
+    # Informal canonical order of presentation.
+    CHARSET, REM, ALIAS, ESC, BITS, CODE = range(6)
+
+    skip = 0
+    while 1:
+        line = input.readline()
+        line_count = line_count + 1
+        if not line:
+            break
+        if re.match('Simonsen', line):
+            skip = 1
+            continue
+        if skip:
+            if re.match('RFC 1345', line):
+                skip = 0
+            continue
+        if re.match('$', line):
+            continue
+        if re.match('ACKNOWLEDGEMENTS$', line):
+            break
+
+        line, count = re.subn('^  ?', '', line)
+        if not count:
+            continue
+
+       # Recognize `&charset'.
+
+        match = re.match('&charset (.*)', line)
+        if match:
+           # Before beginning a new charset, process the previous one.
+            complete_charset()
+            charset = match.group(1)
+
+           # Prepare for processing a new charset: save the charset
+           # name for further declaration; announce this charset in
+           # the array initialization section; and initialize its
+           # processing.
+
+            sys.stderr.write("  %d) %s\n" % (charset_ordinal + 1, charset))
+            status = CHARSET
+
+            comment = '\n/* %s\n' % charset
+
+            hashname = re.sub('[^a-z0-9]', '', string.lower(charset))
+            if used_map.has_key(hashname):
+                warn("Duplicate of %s (discarded)", used_map[hashname])
+                discard_charset = 1
+                continue
+            used_map[hashname] = charset
+
+            alias_count = 0
+            table = [NOT_A_CHARACTER] * 256
+            codedim = 0
+            code = 0
+            aliases = []
+            remark = []
+
+            match = re.match('(CP|IBM)([0-9]+)$', charset)
+            if match:
+                implied_surface[match.group(2)] = 'crlf'
+                implied_surface['CP' + match.group(2)] = 'crlf'
+                implied_surface['IBM' + match.group(2)] = 'crlf'
+                declare_alias.append((charset, charset))
+                alias_count = alias_count + 1
+                continue
+
+#FIXME:            match = re.match('windows-([0-9]+)$', charset)
+#FIXME:            if match:
+#FIXME:                  implied_surface[match.group(1)] = 'crlf'
+#FIXME:                  implied_surface['CP' + match.group(1)] = 'crlf'
+#FIXME:                  implied_surface['IBM' + match.group(1)] = 'crlf'
+#FIXME:                  declare_alias.append((charset, charset))
+#FIXME:                  alias_count = alias_count + 1
+#FIXME:                  continue
+
+            match = re.match('macintosh(_ce)?$', charset)
+            if match:
+                implied_surface[charset] = 'cr'
+                declare_alias.append((charset, charset))
+                alias_count = alias_count + 1
+                continue
+
+            continue
+
+       # Recognize other `&' directives.
+
+        match = re.match('&rem (.*)', line)
+        if match and not re.match('&rem &alias', line):
+           # Keld now prefers `&rem' to be allowed everywhere.
+           #if status > REM:
+           #    warn("`&rem' out of sequence")
+           #status = REM;
+
+            if texinfo_option:
+               # Save remarks for Texinfo.
+                text = match.group(1)
+                remark.append(text)
+            continue
+
+        match = re.match('(&rem )?&alias (.*)', line)
+        if match:
+            if status > ALIAS:
+                warn("`&alias' out of sequence")
+            status = ALIAS
+
+           # Save synonymous charset names for later declarations.
+
+            alias = match.group(2)
+            if alias[-1] == ' ':
+                warn("Spurious trailing whitespace")
+                alias = string.rstrip(alias)
+            comment = comment + '   %s\n' % alias
+
+            hashname = re.sub('[^a-z0-9]', '', string.lower(alias))
+            if used_map.has_key(hashname) and used_map[hashname] != charset:
+                warn("Duplicate of %s", used_map[hashname])
+                continue
+            used_map[hashname] = charset
+
+            aliases.append(alias)
+
+            match = re.match('(CP|IBM)([0-9]+)$', alias)
+            if match:
+                implied_surface[match.group(2)] = 'crlf'
+                implied_surface['CP' + match.group(2)] = 'crlf'
+                implied_surface['IBM' + match.group(2)] = 'crlf'
+            elif re.match('mac(ce)?$', alias):
+                implied_surface[alias] = 'cr'
+            declare_alias.append((alias, charset))
+            alias_count = alias_count + 1
+            continue
+
+        if re.match('&g[0-4]esc', line):
+            if status > ESC:
+                warn("`&esc' out of sequence")
+            status = ESC
+            continue
+
+        match = re.match('&bits ([0-9]+)$', line)
+        if match:
+            if status > BITS:
+                warn("`&bits' out of sequence")
+            status = BITS
+
+            if int(match.group(1)) > 8:
+                warn("`&bits %s' not accepted (charset discarded)",
+                     match.group(1))
+                discard_charset = 1
+            continue
+
+        match = re.match('&code (.*)', line)
+        if match:
+            if status > CODE:
+                warn("`&code' out of sequence")
+            status = CODE
+
+           # Save the code position.
+
+            code = int(match.group(1))
+            continue
+
+       # Other lines cause the charset to be discarded.
+
+        match = re.match('&([^ ]+)', line)
+        if match:
+            if not discard_charset:
+                warn("`&%s' not accepted (charset discarded)", match.group(1))
+                discard_charset = 1
+
+        if discard_charset:
+            continue
+
+       # Save all other tokens into the double table.
+
+        if explode_option or strip_option:
+            for token in string.split(line):
+                if token == '??':
+                    table[code] = NOT_A_CHARACTER
+                elif token == '__':
+                    table[code] = REPLACEMENT_CHARACTER
+                elif ucs2_map.has_key(token):
+                    table[code] = ucs2_map[token]
+                    if len(token) > codedim:
+                        codedim = len(token)
+                else:
+                    warn("Unknown mnemonic for code: %s", token)
+                    table[code] = REPLACEMENT_CHARACTER
+                code = code + 1
+
+    # Push the last charset out.
+    complete_charset()
+
+## ---------------------------------------------------------------- ##
+## Read a Unicode map, as found in ftp://ftp.unicode.com/MAPPINGS.  ##
+## ---------------------------------------------------------------- ##
+
+def digest_unimap():
+    global alias_count
+    global aliases
+    global charset
+    global comment
+    global discard_charset
+    global line_count
+    global remark
+    global table
+
+    match = re.match('# +Name: +([^ ]+) to Unicode table$', line)
+    if match:
+        name = string.split(match.group(1))
+        charset = name[0]
+        del name[0]
+        comment = '\n/* %s\n' % charset
+
+        hashname = re.sub('[^a-z0-9]', '', string.lower(charset))
+        if used_map[hashname]:
+            warn("`%s' duplicates `%s' (charset discarded)",
+                 hashname, used_map[hashname])
+            discard_charset = 1
+            return
+        used_map[hashname] = charset
+
+        alias_count = 0
+        table = [NOT_A_CHARACTER] * 256
+        codedim = 0
+        code = 0
+        aliases = []
+        remark = []
+    if discard_charset:
+        return
+
+    for alias in name:
+        comment = comment + '   %s\n' % alias
+
+        hashname = re.sub('[^a-z0-9]', '', string.lower(alias))
+        if used_map[hashname] and used_map[hashname] != charset:
+            warn("`%s' duplicates `%s'", hashname, used_map[hashname])
+            continue
+        used_map[hashname] = charset
+
+        aliases.append(alias)
+        declare_alias.append((alias, charset))
+        alias_count = alias_count + 1
+
+    while 1:
+        line = input.readline()
+        line_count = line_count + 1
+        if not line:
+            break
+        if re.match('$', line):
+            continue
+        if re.match('#', line):
+            continue
+        if re.match('0x([0-9A-F]+)\t\t#UNDEFINED$', line):
+            continue
+        if re.search('\032', line):
+            # Old MS-DOS C-z !!
+            break
+
+        match = re.match('0x([0-9A-F]+)\t0x([0-9A-F]+)\t\#', line)
+        if match:
+            table[string.atoi(match.group(1), 16)] \
+                                              = string.atoi(match.group(2), 16)
+        else:
+            warn("Unrecognised input line")
+
+    complete_charset()
+\f
+# Reader services.
+
+## ---------------------------------------------------------------- ##
+## Declare a correspondence between a mnemonic and an UCS-2 value.  ##
+## ---------------------------------------------------------------- ##
+
+table_length = 0
+mnemonic_map = {}
+
+def declare_mnemonic(mnemonic, ucs2):
+    global table_length
+
+    if len(mnemonic) > MAX_MNEMONIC_LENGTH:
+        return
+
+    if mnemonic_option:
+        if mnemonic_map.has_key(ucs2):
+            if mnemonic_map[ucs2] != mnemonic:
+                warn("U+%04X `%s' known as `%s'",
+                     ucs2, mnemonic, mnemonic_map[ucs2])
+                if len(mnemonic) < len(mnemonic_map[ucs2]):
+                    mnemonic_map[ucs2] = mnemonic
+
+        else:
+            mnemonic_map[ucs2] = mnemonic
+            table_length = table_length + 1
+
+    if charname_option or explode_option or strip_option:
+        if ucs2_map.has_key(mnemonic):
+            if ucs2_map[mnemonic] != ucs2:
+                warn("`%s' U+%04X known as U+%04X",
+                     mnemonic, ucs2, ucs2_map[mnemonic])
+                #FIXME: ??? cell = ucs2_map[mnemonic] - 256*row
+        else:
+            ucs2_map[mnemonic] = ucs2
+
+## ---------------------------------------------------------- ##
+## Print all accumulated information for the charset.  If the ##
+## charset should be discarded, adjust tables.                ##
+## ---------------------------------------------------------- ##
+
+aliases_map = {}
+remark_map = {}
+declare_charset = []
+
+def complete_charset():
+    global alias_count
+    global charset_ordinal
+    global comment
+    global discard_charset
+
+    if discard_charset:
+        while alias_count > 0:
+            del declare_alias[-1]
+            alias_count = alias_count - 1
+        discard_charset = 0
+        comment = ''
+    if not comment:
+        return
+
+    if texinfo_option:
+
+       # Save the documentation.
+        aliases.sort()
+        aliases_map[charset] = aliases
+        remark_map[charset] = remark
+
+    if explode_option:
+        write = output.write
+
+       # Make introductory C comments.
+        write(comment)
+        write('*/\n')
+
+       # Make the table for this charset.
+        write('\n')
+        write('static const unsigned short data_%d[] =\n' % charset_ordinal)
+        write('  {\n')
+        for code in range(256):
+            if code != table[code]:
+                write('    %3d, 0x%.4X, DONE,\n' % (code, table[code]))
+        write('    DONE\n')
+        write('  };\n')
+
+       # Register the table.
+        declare_charset.append(charset)
+
+    if strip_option:
+        write = output.write
+
+       # Make introductory C comments.
+        write(comment)
+        write('*/\n')
+
+       # Make the table for this charset.
+        write('\n')
+        write('static struct strip_data data_%d =\n' % charset_ordinal)
+        write('  {\n')
+        write('    ucs2_data_pool,\n')
+        write('    {\n')
+        count = 0
+        for code in range(0, 256, STRIP_SIZE):
+            if count % 12 == 0:
+                if count != 0:
+                    write(',\n')
+                write('      ')
+            else:
+                write(', ')
+            write('%4d' % pool_index(table[code:code+STRIP_SIZE]))
+            count = count + 1
+        write('\n')
+        write('    }\n')
+        write('  };\n')
+
+       # Register the table.
+        declare_charset.append(charset)
+
+    charset_ordinal = charset_ordinal + 1
+    comment = ''
+
+## --------------------------------------------------------------- ##
+## Return the pool index for strip.  Add to the pool as required.  ##
+## --------------------------------------------------------------- ##
+
+def pool_index(strip):
+    global strips
+    global pool_refs
+    global pool_size
+
+    def format(item):
+        return '%04X' % item
+
+    pool_refs = pool_refs + 1
+    text = string.join (map(format, strip), '')
+    if not strip_map.has_key(text):
+        strip_map[text] = pool_size
+        pool_size = pool_size + STRIP_SIZE
+        strips.append(text)
+    return strip_map[text]
+\f
+# Table writers.
+
+## -------------------------------------------- ##
+## Write a compressed list of character names.  ##
+## -------------------------------------------- ##
+
+def produce_charname(output_name):
+    global output
+
+    output = open(output_name, 'w')
+    sys.stderr.write("Writing %s\n" % output_name)
+
+    write = output.write
+    write(OVERALL_HEADER)
+
+    # Establish a mild compression scheme.  Words word[0:singles] will be
+    # represented by a single byte running from 1 to singles.  All remaining
+    # words will be represented by two bytes, the first one running slowly
+    # from singles+1 to 255, the second cycling faster from 1 to 255.
+
+    def presort_word(word):
+        return -code_map[word], word
+
+    def postsort_word(pair):
+        return pair[1]
+
+    sys.stderr.write('  sorting words...')
+    pairs = map(presort_word, code_map.keys())
+    pairs.sort()
+    words = map(postsort_word, pairs)
+    pairs = None
+    sys.stderr.write(' %d of them\n' % len(words))
+
+    count = len(words)
+    singles = (255 * 255 - count) / 254
+
+    # Transmit a few values for further usage by the C code.
+
+    sys.stderr.write('  sorting names...')
+    ucs2_table = charname_map.keys()
+    ucs2_table.sort()
+    sys.stderr.write(' %d of them\n' % len(ucs2_table))
+
+    write('\n')
+    write('#define NUMBER_OF_SINGLES %d\n' % singles)
+    write('#define MAX_CHARNAME_LENGTH %d\n' % max_length)
+    write('#define NUMBER_OF_CHARNAMES %d\n' % len(ucs2_table))
+
+    # Establish a mild compression scheme (one or two bytes per word).
+
+    sys.stderr.write("  writing words\n")
+    write('\n')
+    write('static const char *const word[%d] =\n' % count)
+    write('  {\n')
+
+    char1 = 1
+    char2 = 1
+
+    for counter in range(singles):
+        word = words[counter]
+        write('    %-28s/* \\%0.3o */\n'
+              % ('"%s",' % re.sub('"', r'\"', word), char1))
+        code_map[words[counter]] = char1
+        char1 = char1 + 1
+
+    for counter in range(singles, count):
+        word = words[counter]
+        write('    %-28s/* \\%0.3o\\%0.3o */\n'
+              % ('"%s",' % re.sub('"', r'\"', word, 1), char1, char2))
+        code_map[words[counter]] = 256 * char1 + char2
+        if char2 == 255:
+            char1 = char1 + 1
+            char2 = 1
+        else:
+            char2 = char2 + 1
+    write('  };\n')
+
+    sys.stderr.write("  writing names\n")
+    write('\n')
+    write('struct charname\n')
+    write('  {\n')
+    write('    recode_ucs2 code;\n')
+    write('    const char *crypted;\n')
+    write('  };\n')
+
+    write('\n')
+    write('static const struct charname charname[NUMBER_OF_CHARNAMES] =\n')
+    write('  {\n')
+
+    for ucs2 in ucs2_table:
+        write('    {0x%04X, "' % ucs2)
+        for word in string.split(charname_map[ucs2]):
+            if code_map.has_key(word):
+                code = code_map[word]
+                if code < 256:
+                    write('\\%0.3o' % code)
+                else:
+                    write('\\%0.3o\\%0.3o' % (code / 256, code % 256))
+            else:
+                sys.stderr.write('??? %s\n' % word)
+        write('"},\n')
+
+    write('  };\n')
+    output.close()
+
+## ------------------------------------------- ##
+## Write an UCS-2 to RFC 1345 mnemonic table.  ##
+## ------------------------------------------- ##
+
+def produce_mnemonic(output_name):
+    global output
+
+    inverse_map = {}
+
+    output = open(output_name, 'w')
+    sys.stderr.write("Writing %s\n" % output_name)
+
+    write = output.write
+    write(OVERALL_HEADER)
+    write('\n')
+    write('#define TABLE_LENGTH %d\n' % table_length)
+    write('#define MAX_MNEMONIC_LENGTH %d\n' % MAX_MNEMONIC_LENGTH)
+    write('\n')
+    write('struct entry\n')
+    write('  {\n')
+    write('    recode_ucs2 code;\n')
+    write('    const char *rfc1345;\n')
+    write('  };\n')
+
+    write('\n')
+    write('static const struct entry table[TABLE_LENGTH] =\n')
+    write('  {\n')
+    count = 0
+    indices = mnemonic_map.keys()
+    indices.sort()
+    for ucs2 in indices:
+        text = mnemonic_map[ucs2]
+        inverse_map[text] = count
+        write('    /* %4d */ {0x%04X, "%s"},\n'
+              % (count, ucs2, re.sub(r'([\"])', r'\\\1', text)))
+        count = count + 1
+    write('  };\n')
+
+    write('\n')
+    write('static const unsigned short inverse[TABLE_LENGTH] =\n')
+    write('  {')
+    count = 0
+    keys = inverse_map.keys()
+    keys.sort()
+    for text in keys:
+        if count % 10 == 0:
+            if count != 0:
+                write(',')
+            write('\n    /* %4d */ ' % count)
+        else:
+            write(', ')
+        write('%4d' % inverse_map[text])
+        count = count + 1
+    write('\n')
+    write('  };\n')
+
+    output.close()
+
+## ------------------------------- ##
+## Write the explode source file.  ##
+## ------------------------------- ##
+
+def produce_explode_init(output_name):
+    global output
+
+    # Prepare the production of tables.
+    output = open(output_name, 'w')
+    sys.stderr.write("Starting %s\n" % output_name)
+
+    write = output.write
+    write(OVERALL_HEADER)
+
+    write('\n')
+    write('#include "common.h"\n')
+
+    # Table fragments will be produced while reading data tables.
+
+def produce_explode_term(output_name):
+
+    # Print the collectable initialization function.
+    sys.stderr.write("Completing %s\n" % output_name)
+
+    write = output.write
+    write('\n')
+    write('bool\n')
+    write('module_explodes (struct recode_outer *outer)\n')
+    write('{\n')
+    count = 0
+    while declare_charset:
+        write('  if (!declare_explode_data (outer, &data_%d, "%s"))\n'
+              % (count, declare_charset[0]))
+        write('    return false;\n')
+        del declare_charset[0]
+        count = count + 1
+    write('\n')
+    while declare_alias:
+       write('  if (!declare_alias (outer, "%s", "%s"))\n' % declare_alias[0])
+        write('    return false;\n')
+        del declare_alias[0]
+    write('\n')
+    write('  return true;\n')
+    write('}\n')
+
+    output.close()
+
+## --------------------------------- ##
+## Write the pool and index tables.  ##
+## --------------------------------- ##
+
+def produce_strip_init(output_name):
+    global output
+    global pool_refs
+    global pool_size
+    global strips
+    global strip_map
+
+    # Prepare the production of tables.
+    pool_size = 0
+    pool_refs = 0
+    strip_map = {}
+    strips = []
+
+    output = open(output_name, 'w')
+    sys.stderr.write("Starting %s\n" % output_name)
+
+    write = output.write
+    write(OVERALL_HEADER)
+    write('\n')
+    write('#include \"common.h\"\n')
+
+    # Table fragments will be produced while reading data tables.
+
+def produce_strip_term(output_name, pool_name):
+    global output
+
+    # Give memory statistics.
+    sys.stderr.write('Table memory = %d bytes (pool %d, refs %d)\n'
+                     % (pool_size * 2 + pool_refs * 2,
+                        pool_size * 2,
+                        pool_refs * 2))
+
+    # Print the collectable initialization function.
+    sys.stderr.write("Completing %s\n" % output_name)
+    write = output.write
+
+    write('\n')
+    write('bool\n')
+    write('module_strips (struct recode_outer *outer)\n')
+    write('{\n')
+    write('  RECODE_SYMBOL symbol;\n')
+    write('\n')
+    count = 0
+    while declare_charset:
+        write('  if (!declare_strip_data (outer, &data_%d, "%s"))\n'
+              % (count, declare_charset[0]))
+        write('    return false;\n')
+        del declare_charset[0]
+        count = count + 1
+    write('\n')
+    while declare_alias:
+        alias, charset = declare_alias[0]
+        if implied_surface.has_key(alias):
+            write('  if (symbol = declare_alias (outer, "%s", "%s"), !symbol)\n'
+                  % declare_alias[0])
+           write('    return false;\n')
+           write('  if (!declare_implied_surface (outer, symbol, outer->%s_surface))\n'
+                  % implied_surface[alias])
+           write('    return false;\n')
+        else:
+           write('  if (!declare_alias (outer, "%s", "%s"))\n'
+                  % declare_alias[0])
+           write('    return false;\n')
+        del declare_alias[0]
+    write('\n')
+    write('  return true;\n')
+    write('}\n')
+
+    output.close()
+
+    # Write the pool file.
+
+    output = open(pool_name, 'w')
+    sys.stderr.write("Writing %s\n" % pool_name)
+
+    write = output.write
+    write(OVERALL_HEADER)
+    write('\n')
+    write('#include \"common.h\"\n')
+    write('\n')
+    write('const recode_ucs2 ucs2_data_pool[%d] =\n' % pool_size)
+    write('  {')
+    count = 0
+    for strip in strips:
+        for pos in range(0, STRIP_SIZE * 4, 4):
+            if count % 8 == 0:
+                if count != 0:
+                    write(',')
+                write('\n    /* %4d */ ' % count)
+            else:
+                write(', ')
+            write('0x' + strip[pos:pos+4])
+            count = count + 1
+    write('\n')
+    write('  };\n')
+
+    output.close()
+
+## ------------------------------ ##
+## Write the documentation file.  ##
+## ------------------------------ ##
+
+def produce_texinfo(output_name):
+    global output
+
+    output = open(output_name, 'w')
+    sys.stderr.write("Writing %s\n" % output_name)
+    write = output.write
+
+    charsets = remark_map.keys()
+    charsets.sort()
+    for charset in charsets:
+        write('\n@item %s\n' % charset)
+       write('@tindex %s@r{, aliases and source}\n' % charset)
+        aliases = aliases_map[charset]
+        if aliases:
+            if len(aliases) == 1:
+                if aliases[0]:                # FIXME: pourquoi parfois vide ??
+                    write('@tindex %s\n' % aliases[0])
+                    write('@code{%s} is an alias for this charset.\n'
+                          % aliases[0])
+            else:
+                for alias in aliases:
+                    write('@tindex %s\n' % alias)
+                write('@code{%s} and @code{%s} are aliases for this charset.\n'
+                      % (string.join(aliases[:-1], '}, @code{'), aliases[-1]))
+        for line in remark_map[charset]:
+            match = re.match('([a-z])(.*)', line)
+            if match:
+                line = string.upper(match.group(1)) + match.group(2)
+            write(re.sub('@', '@@', line))
+            if line[-1] != '.':
+                write('.')
+            write('\n')
+
+    output.close()
+
+if __name__ == '__main__':
+    apply(main, tuple(sys.argv[1:]))
index 93b91ea11e40eeee26a6694b3cbaeaab08916c9c..6a2be21d353fe7f5edd38b1b61b35460ac3adf66 100644 (file)
@@ -1,3 +1,3 @@
-@set UPDATED 27 April 1999
-@set EDITION 3.5
-@set VERSION 3.5
+@set UPDATED 19 December 1999
+@set EDITION 3.5a
+@set VERSION 3.5a
similarity index 74%
rename from po/ChangeLog
rename to i18n/ChangeLog
index 66ba2b4d1067162bbf1ca5c744981d02db7b35ca..95c751ebc2db25ba219b5c72ce5d3a93e76f26ab 100644 (file)
@@ -1,4 +1,25 @@
-1999-06-01  Fran\e.A\8eçois Pinard  <pinard@iro.umontreal.ca>
+1999-12-14  Fran\e.A\8eçois Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am: New file.
+       * Makefile.in.in, POTFILES.in, cat-id-tbl.c, stamp-cat-id: Deleted.
+
+1999-12-13  Fran\8eçois Pinard  <pinard@iro.umontreal.ca>
+
+       * de.po, pl.po, sv.po: Updated.
+
+1999-11-27  Fran\8eçois Pinard  <pinard@iro.umontreal.ca>
+
+       * it.po: New file.
+
+1999-06-22  Fran\8eçois Pinard  <pinard@iro.umontreal.ca>
+
+       * el.po: New file.
+
+1999-06-14  Fran\8eçois Pinard  <pinard@iro.umontreal.ca>
+
+       * de.po: Updated.
+\f
+1999-06-01  Fran\8eçois Pinard  <pinard@iro.umontreal.ca>
 
        * da.po, es.po, fr.po: Updated.
 
diff --git a/i18n/Makefile.am b/i18n/Makefile.am
new file mode 100644 (file)
index 0000000..6897a08
--- /dev/null
@@ -0,0 +1,75 @@
+# Makefile for PO directories.
+# François Pinard <pinard@iro.umontreal.ca>, 1998.
+
+AUTOMAKE_OPTIONS = gnits
+
+localedir = $(prefix)/share/locale
+
+ALL_POFILES = @ALL_POFILES@
+ALL_MOFILES = @ALL_MOFILES@
+MOFILES = @MOFILES@
+
+EXTRA_DIST = $(PACKAGE).pot $(ALL_POFILES) $(ALL_MOFILES)
+
+MSGFMT = msgfmt
+MSGMERGE = msgmerge
+XGETTEXT = xgettext
+
+SUFFIXES = .po .pox .mo
+
+.po.pox:
+       $(MAKE) $(PACKAGE).pot
+       $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
+
+.po.mo:
+       file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \
+         && rm -f $$file && $(MSGFMT) -o $$file $<
+
+all: $(ALL_MOFILES)
+
+install-data-local: $(MOFILES)
+if USE_NLS
+       files='$(MOFILES)'; \
+       for file in $$files; do \
+         base=`basename $$file`; \
+         langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \
+         $(mkinstalldirs) $$langdir; \
+         echo " $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo"; \
+         $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo; \
+       done
+endif
+
+uninstall-local:
+if USE_NLS
+       files='$(MOFILES)'; \
+       for file in $$files; do \
+         base=`basename $$file`; \
+         langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \
+         rm -f $$langdir/$(PACKAGE).mo; \
+       done
+endif
+
+MAINTAINER_CLEAN = $(PACKAGE).pot $(MOFILES)
+
+$(srcdir)/$(PACKAGE).pot: $(top_srcdir)/stamp-pot
+       $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
+         --add-comments --keyword=_ --keyword=N_ `cat $(top_srcdir)/stamp-pot`
+       test ! -f $(PACKAGE).po || ( rm -f $@ && mv $(PACKAGE).po $@ )
+
+update-po: Makefile
+       $(MAKE) $(PACKAGE).pot
+       files='$(ALL_MOFILES)'; \
+       for file in $$files; do \
+         base=`basename $$file`; \
+         lang=`echo $$base | sed 's/\.mo$$//'`; \
+         mv $(srcdir)/$$lang.po $(srcdir)/$$lang.old.po; \
+         echo "$$lang:"; \
+         cd $(srcdir) \
+           && if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
+             rm -f $$lang.old.po; \
+           else \
+             echo "msgmerge for $$file failed!"; \
+             rm -f $$lang.po; \
+             mv $$lang.old.po $$lang.po; \
+           fi; \
+       done
diff --git a/i18n/Makefile.in b/i18n/Makefile.in
new file mode 100644 (file)
index 0000000..24dc5e4
--- /dev/null
@@ -0,0 +1,281 @@
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Makefile for PO directories.
+# François Pinard <pinard@iro.umontreal.ca>, 1998.
+
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = ..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+AS = @AS@
+AT_TESTPATH = @AT_TESTPATH@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CPP = @CPP@
+DATADIRNAME = @DATADIRNAME@
+DLLTOOL = @DLLTOOL@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+GENCAT = @GENCAT@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GT_NO = @GT_NO@
+GT_YES = @GT_YES@
+INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
+INSTOBJEXT = @INSTOBJEXT@
+INTLDEPS = @INTLDEPS@
+INTLLIBS = @INTLLIBS@
+INTLOBJS = @INTLOBJS@
+LEX = @LEX@
+LIBOBJS = @LIBOBJS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+OBJDUMP = @OBJDUMP@
+PACKAGE = @PACKAGE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+U = @U@
+USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+l = @l@
+
+AUTOMAKE_OPTIONS = gnits
+
+localedir = $(prefix)/share/locale
+
+ALL_POFILES = @ALL_POFILES@
+ALL_MOFILES = @ALL_MOFILES@
+MOFILES = @MOFILES@
+
+EXTRA_DIST = $(PACKAGE).pot $(ALL_POFILES) $(ALL_MOFILES)
+
+MSGFMT = msgfmt
+MSGMERGE = msgmerge
+XGETTEXT = xgettext
+
+SUFFIXES = .po .pox .mo
+
+MAINTAINER_CLEAN = $(PACKAGE).pot $(MOFILES)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = ../config.h
+CONFIG_CLEAN_FILES = 
+CFLAGS = @CFLAGS@
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON =  ChangeLog Makefile.am Makefile.in
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = tar
+GZIP_ENV = --best
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .mo .po .pox
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+       cd $(top_srcdir) && $(AUTOMAKE) --gnits --include-deps i18n/Makefile
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+tags: TAGS
+TAGS:
+
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+
+subdir = i18n
+
+distdir: $(DISTFILES)
+       @for file in $(DISTFILES); do \
+         d=$(srcdir); \
+         if test -d $$d/$$file; then \
+           cp -pr $$/$$file $(distdir)/$$file; \
+         else \
+           test -f $(distdir)/$$file \
+           || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+           || cp -p $$d/$$file $(distdir)/$$file || :; \
+         fi; \
+       done
+info-am:
+info: info-am
+dvi-am:
+dvi: dvi-am
+check-am: all-am
+check: check-am
+installcheck-am:
+installcheck: installcheck-am
+install-exec-am:
+install-exec: install-exec-am
+
+install-data-am: install-data-local
+install-data: install-data-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-am
+uninstall-am: uninstall-local
+uninstall: uninstall-am
+all-am: Makefile
+all-redirect: all-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs:
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
+       -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+mostlyclean-am:  mostlyclean-generic
+
+mostlyclean: mostlyclean-am
+
+clean-am:  clean-generic mostlyclean-am
+
+clean: clean-am
+
+distclean-am:  distclean-generic clean-am
+       -rm -f libtool
+
+distclean: distclean-am
+
+maintainer-clean-am:  maintainer-clean-generic distclean-am
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-am
+
+.PHONY: tags distdir info-am info dvi-am dvi check check-am \
+installcheck-am installcheck install-exec-am install-exec \
+install-data-local install-data-am install-data install-am install \
+uninstall-local uninstall-am uninstall all-redirect all-am all \
+installdirs mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+.po.pox:
+       $(MAKE) $(PACKAGE).pot
+       $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
+
+.po.mo:
+       file=$(srcdir)/`echo $* | sed 's,.*/,,'`.mo \
+         && rm -f $$file && $(MSGFMT) -o $$file $<
+
+all: $(ALL_MOFILES)
+
+install-data-local: $(MOFILES)
+@USE_NLS_TRUE@ files='$(MOFILES)'; \
+@USE_NLS_TRUE@ for file in $$files; do \
+@USE_NLS_TRUE@   base=`basename $$file`; \
+@USE_NLS_TRUE@   langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \
+@USE_NLS_TRUE@   $(mkinstalldirs) $$langdir; \
+@USE_NLS_TRUE@   echo " $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo"; \
+@USE_NLS_TRUE@   $(INSTALL_DATA) $(srcdir)/$$file $$langdir/$(PACKAGE).mo; \
+@USE_NLS_TRUE@ done
+
+uninstall-local:
+@USE_NLS_TRUE@ files='$(MOFILES)'; \
+@USE_NLS_TRUE@ for file in $$files; do \
+@USE_NLS_TRUE@   base=`basename $$file`; \
+@USE_NLS_TRUE@   langdir=$(localedir)/`echo $$base | sed 's/\.mo$$//'`/LC_MESSAGES; \
+@USE_NLS_TRUE@   rm -f $$langdir/$(PACKAGE).mo; \
+@USE_NLS_TRUE@ done
+
+$(srcdir)/$(PACKAGE).pot: $(top_srcdir)/stamp-pot
+       $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
+         --add-comments --keyword=_ --keyword=N_ `cat $(top_srcdir)/stamp-pot`
+       test ! -f $(PACKAGE).po || ( rm -f $@ && mv $(PACKAGE).po $@ )
+
+update-po: Makefile
+       $(MAKE) $(PACKAGE).pot
+       files='$(ALL_MOFILES)'; \
+       for file in $$files; do \
+         base=`basename $$file`; \
+         lang=`echo $$base | sed 's/\.mo$$//'`; \
+         mv $(srcdir)/$$lang.po $(srcdir)/$$lang.old.po; \
+         echo "$$lang:"; \
+         cd $(srcdir) \
+           && if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
+             rm -f $$lang.old.po; \
+           else \
+             echo "msgmerge for $$file failed!"; \
+             rm -f $$lang.po; \
+             mv $$lang.old.po $$lang.po; \
+           fi; \
+       done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
similarity index 100%
rename from po/da.gmo
rename to i18n/da.mo
similarity index 100%
rename from po/da.po
rename to i18n/da.po
diff --git a/i18n/de.mo b/i18n/de.mo
new file mode 100644 (file)
index 0000000..fb6f027
Binary files /dev/null and b/i18n/de.mo differ
similarity index 78%
rename from po/de.po
rename to i18n/de.po
index 88858c2bd4909944b3be013ea5f9b1e356e1e78c..413f2055939daeb45db4ccacd372db9f902e21c3 100644 (file)
--- a/po/de.po
@@ -5,9 +5,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: recode 3.4l\n"
+"Project-Id-Version: recode 3.5\n"
 "POT-Creation-Date: 1999-05-18 08:46-0400\n"
-"PO-Revision-Date: 1999-01-10 21:49+01:00\n"
+"PO-Revision-Date: 1999-09-14 22:51+01:00\n"
 "Last-Translator: Daniel Naber <dnaber@mini.gt.owl.de>\n"
 "Language-Team: German <de@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,10 +16,8 @@ msgstr ""
 
 #. Dump all characters.
 #: src/debug.c:287
-msgid ""
-"UCS2   Mne   Description\n"
-"\n"
-msgstr ""
+msgid "UCS2   Mne   Description\n\n"
+msgstr "UCS2   Mne   Beschreibung\n\n"
 
 #: src/main.c:140
 msgid "No error"
@@ -31,16 +29,15 @@ msgstr "Keine g
 
 #: src/main.c:146
 msgid "Ambiguous output"
-msgstr "Nicht-eindeutiges Format"
+msgstr "Mehrdeutige Ausgabe"
 
 #: src/main.c:149
-#, fuzzy
 msgid "Untranslatable input"
 msgstr "Nicht übersetzbare Eingabe"
 
 #: src/main.c:152
 msgid "Invalid input"
-msgstr "Ungültiges Format"
+msgstr "Ungültige Eingabe"
 
 #: src/main.c:155
 msgid "System detected problem"
@@ -55,7 +52,6 @@ msgid "Internal recoding bug"
 msgstr "Interner Umkodierungsfehler"
 
 #: src/main.c:206
-#, fuzzy
 msgid ""
 "This program is free software; you can redistribute it and/or modify\n"
 "it under the terms of the GNU General Public License as published by\n"
@@ -86,8 +82,7 @@ msgstr ""
 "\"GNU General Public License\" können weitere Einzelheiten nachgelesen\n"
 "werden.\n"
 "\n"
-"Sie sollten mit diesem Programm eine Kopie der \"GNU General Public "
-"License\"\n"
+"Sie sollten mit diesem Programm eine Kopie der \"GNU General Public License\"\n"
 "erhalten haben;  wenn nicht, schreiben Sie an die Free Software Foundation,\n"
 "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 
@@ -97,20 +92,15 @@ msgid "Try `%s %s' for more information.\n"
 msgstr "`%s %s' zeigt weitere Informationen.\n"
 
 #: src/main.c:235
-msgid ""
-"Free `recode' converts files between various character sets and surfaces.\n"
+msgid "Free `recode' converts files between various character sets and surfaces.\n"
 msgstr ""
 "`recode' konvertiert Dateien zwischen diversen Zeichensätzen und\n"
 "-formaten.\n"
 
 #: src/main.c:239
 #, c-format
-msgid ""
-"\n"
-"Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
-msgstr ""
-"\n"
-"Aufruf: %s [OPTION]... [ [ZEISATZ] | ANFRAGE [DATEI]... ]\n"
+msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
+msgstr "\nAufruf: %s [OPTION]... [ [ZEISATZ] | ANFRAGE [DATEI]... ]\n"
 
 #: src/main.c:242
 msgid ""
@@ -128,8 +118,7 @@ msgid ""
 "\n"
 "Listings:\n"
 "  -l, --list[=FORMAT]        list one or all known charsets\n"
-"  -k, --known=PAIRS          restrict charsets according to known PAIRS "
-"list\n"
+"  -k, --known=PAIRS          restrict charsets according to known PAIRS list\n"
 "  -h, --header[=[LN/]NAME]   write table NAME on stdout using LN, then exit\n"
 "  -F, --freeze-tables        write out a C module holding all tables\n"
 "  -T, --find-subsets         report all charsets being subset of others\n"
@@ -139,14 +128,11 @@ msgid ""
 msgstr ""
 "\n"
 "Auflistungen:\n"
-"  -l, --list[=FORMAT]        Einen oder alle bekannten Zeichensätze "
-"auflisten\n"
-"  -k, --known=PAARE          Zeichensätze auf Liste bekannter PAARE "
-"beschränken\n"
+"  -l, --list[=FORMAT]        Einen oder alle bekannten Zeichensätze auflisten\n"
+"  -k, --known=PAARE          Zeichensätze auf Liste bekannter PAARE beschränken\n"
 "  -h, --header[=[LN/]NAME]   LN-Code für Tabelle NAME ausgeben\n"
 "  -F, --freeze-tables        Ein C-Modul mit allen Tabellen ausgeben\n"
-"  -T, --find-subsets         Alle Zeichensätze ausgeben, die Untermengen "
-"von\n"
+"  -T, --find-subsets         Alle Zeichensätze ausgeben, die Untermengen von\n"
 "                              anderen Zeichensätzen sind\n"
 "  -C, --copyright            Copyright und Kopierbedingungen anzeigen\n"
 "      --help                 Diese Hilfe anzeigen\n"
@@ -165,23 +151,18 @@ msgid ""
 msgstr ""
 "\n"
 "Funktionsmodi:\n"
-"  -v, --verbose           Reihenfolge der Umkodierungsschritte und "
-"Fortschritt\n"
+"  -v, --verbose           Reihenfolge der Umkodierungsschritte und Fortschritt\n"
 "                           anzeigen\n"
-"  -q, --quiet, --silent   Keine Meldungen über nicht umkehrbare "
-"Umkodierungen\n"
-"  -f, --force             Umkodierung vornehmen, auch wenn sie nicht "
-"umkehrbar ist\n"
-"  -t, --touch             Nach der Umkodierung ein 'touch' auf die "
-"umkodierte\n"
+"  -q, --quiet, --silent   Keine Meldungen über nicht umkehrbare Umkodierungen\n"
+"  -f, --force             Umkodierung vornehmen, auch wenn sie nicht umkehrbar ist\n"
+"  -t, --touch             Nach der Umkodierung ein 'touch' auf die umkodierte\n"
 "                           Datei ausführen\n"
 "  -i, --sequence=files    Für Zwischenschritte temporäre Dateien anlegen\n"
 "      --sequence=memory   Für Zwischenschritte Speicherpuffer verwenden\n"
 
 #: src/main.c:273
 msgid "  -p, --sequence=pipe     use pipe machinery for sequencing passes\n"
-msgstr ""
-"  -p, --sequence=pipe     benutze \"pipe\" für Abarbeitung der Schritte\n"
+msgstr "  -p, --sequence=pipe     benutze \"pipe\" für Abarbeitung der Schritte\n"
 
 #: src/main.c:278
 msgid "  -p, --sequence=pipe     same as -i (on this system)\n"
@@ -200,88 +181,70 @@ msgid ""
 msgstr ""
 "\n"
 "Feineinstellungen:\n"
-"  -s, --strict           Strikte Abbildung benutzen, auch bei "
-"Zeichenverlust\n"
-"  -d, --diacritics       Nur Akzente/Umlaute umkodieren (z.B. für "
-"HTML/LaTeX)\n"
+"  -s, --strict           Strikte Abbildung benutzen, auch bei Zeichenverlust\n"
+"  -d, --diacritics       Nur Akzente/Umlaute umkodieren (z.B. für HTML/LaTeX)\n"
 "  -S, --source[=LN]      Bei LN nur Zeichenketten und Kommentare umkodieren\n"
-"  -c, --colons           benutze ':' statt '\"' für Umlaute (z.B. 'fu:r' "
-"statt\n"
+"  -c, --colons           benutze ':' statt '\"' für Umlaute (z.B. 'fu:r' statt\n"
 "                          ('fu\"r')\n"
-"  -g, --graphics         'Linienzeichen' des IBMPC-Zeichensatzes durch "
-"ähnliche\n"
+"  -g, --graphics         'Linienzeichen' des IBMPC-Zeichensatzes durch ähnliche\n"
 "                         ASCII-Zeichen darstellen\n"
-"  -x, --ignore=ZEISATZ   ZEISATZ bei der Wahl der Kodierungsschritte "
-"ignorieren\n"
+"  -x, --ignore=ZEISATZ   ZEISATZ bei der Wahl der Kodierungsschritte ignorieren\n"
 
 #: src/main.c:294
-#, fuzzy
 msgid ""
 "\n"
 "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n"
 "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n"
 msgstr ""
 "\n"
-"Die Option -l ohne FORMAT und ZEISATZ  listet alle Zeichensätze und "
-"-formate\n"
-"auf. FORMAT ist `decimal', `octal', `hexadecimal' oder `full' (können durch "
-"den\n"
-"Anfangsbuchstaben abgekürzt werden), für ZEISATZ wird die Voreinstellung "
-"`%s'\n"
-"benutzt\n"
+"Die Option -l ohne FORMAT und ZEISATZ listet alle Zeichensätze und -formate\n"
+"auf. FORMAT ist `decimal', `octal', `hexadecimal' oder `full' (können durch den\n"
+"Anfangsbuchstaben abgekürzt werden)\n"
 
 #: src/main.c:302
 #, c-format
-msgid ""
-"Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
+msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
 msgstr ""
+"Wenn die Umgebungsvariable DEFAULT_CHARSET nicht gesetzt ist,\n"
+"gilt für ZEISATZ ist die Voreinstellung `%s'.\n"
 
 #: src/main.c:308
 msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n"
 msgstr ""
+"Für ZEISATZ existiert keine Voreinstellung, bitte die Umgebungsvariable\n"
+"DEFAULT_CHARSET setzen.\n"
 
 #: src/main.c:313
 msgid ""
 "With -k, possible before charsets are listed for the given after CHARSET,\n"
-"both being tabular charsets, with PAIRS of the form "
-"`BEF1:AFT1,BEF2:AFT2,...'\n"
+"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n"
 "and BEFs and AFTs being codes are given as decimal numbers.\n"
 msgstr ""
 "Mit '-k' werden mögliche 'Vorher'-Zeichensätze für den 'Nachher'-ZEISATZ\n"
-"ausgegeben, mit PAAREn der Form 'VOR1:NACH1,VOR2:NACH2,...', wobei die VORs "
-"und\n"
+"ausgegeben, mit PAAREn der Form 'VOR1:NACH1,VOR2:NACH2,...', wobei die VORs und\n"
 "NACHs Kodes sind. Alle Kodes werden als Dezimalzahlen angegeben.\n"
 
 #: src/main.c:318
-#, fuzzy
-msgid ""
-"LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
+msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
 msgstr ""
-"LN ist eine Programmiersprache, z.B. `c' oder `perl', wobei `c' die\n"
+"LN ist eine Programmiersprache, z.B. `c', `perl' oder `po', wobei `c' die\n"
 "Voreinstellung ist.\n"
 
 #: src/main.c:321
-#, fuzzy
 msgid ""
 "\n"
-"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is "
-"ENCODING[..ENCODING]...\n"
-"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like "
-"BEFORE..AFTER,\n"
+"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n"
+"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n"
 "with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual\n"
-"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a "
-"/\n"
+"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n"
 "with an empty surface name means no surfaces at all.  See the manual.\n"
 msgstr ""
 "\n"
-"ANFRAGE ist UNTERANFRAGE[,UNTERANFRAGE]...; UNTERANFRAGE ist "
-"KODIERUNG[..KODIERUNG]...\n"
-"KODIERUNG ist [ZEISATZ][/[SURFACE]]...; ANFRAGE ist meistens "
-"VORHER..NACHHER,\n"
+"ANFRAGE ist UNTERANFRAGE[,UNTERANFRAGE]...; UNTERANFRAGE ist KODIERUNG[..KODIERUNG]...\n"
+"KODIERUNG ist [ZEISATZ][/[SURFACE]]...; ANFRAGE ist meistens VORHER..NACHHER,\n"
 "wobei VORHER und NACHHER Zeichensätze sind. Ohne ZEISATZ wird der übliche\n"
 "Zeichensatz benutzt; ohne [/SURFACE]... wird das für ZEISATZ übliche Format\n"
-"angenommen; ein / ohne Angabe eines Formats heisst, dass kein Format "
-"angenommen\n"
+"angenommen; ein / ohne Angabe eines Formats heisst, dass kein Format angenommen\n"
 "wird. Siehe Anleitung.\n"
 
 #: src/main.c:329
@@ -299,17 +262,13 @@ msgstr ""
 "Standardausgabe ausgegeben.\n"
 
 #: src/main.c:335
-msgid ""
-"\n"
-"Report bugs to <recode-bugs@iro.umontreal.ca>.\n"
-msgstr ""
-"\n"
-"Berichte über Programmfehler bitte an <recode-bugs@iro.umontreal.ca>.\n"
+msgid "\nReport bugs to <recode-bugs@iro.umontreal.ca>.\n"
+msgstr "\nBerichte über Programmfehler bitte an <recode-bugs@iro.umontreal.ca>.\n"
 
 #: src/main.c:431
 #, c-format
 msgid "Ambiguous sequence `%s'"
-msgstr "Nicht eindeutige Folge `%s'"
+msgstr "Mehrdeutige Folge `%s'"
 
 #: src/main.c:435
 #, c-format
@@ -330,7 +289,7 @@ msgstr "Unbekannter Zeichensatz `%s'"
 #: src/main.c:561
 #, c-format
 msgid "Ambiguous format `%s'"
-msgstr "Nicht eindeutiges Format `%s'"
+msgstr "Mehrdeutiges Format `%s'"
 
 #: src/main.c:565
 #, c-format
@@ -338,13 +297,8 @@ msgid "Unknown format `%s'"
 msgstr "Unbekanntes Format `%s'"
 
 #: src/main.c:622
-#, fuzzy
-msgid ""
-"\n"
-"Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
-msgstr ""
-"\n"
-"Copyright (C) 1990, 92, 93, 94, 96, 1997 Free Software Foundation, Inc.\n"
+msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+msgstr "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
 
 #: src/main.c:626
 msgid ""
@@ -357,17 +311,13 @@ msgstr ""
 "Nutzbarkeit oder Tauglichkeit zu einem anderen Zweck.\n"
 
 #: src/main.c:630
-msgid ""
-"\n"
-"Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
-msgstr ""
-"\n"
-"Geschrieben von Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+msgid "\nWritten by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+msgstr "\nGeschrieben von Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
 
 #: src/main.c:775
 #, c-format
 msgid "Deprecated syntax, please prefer `%s'"
-msgstr "Veralteter Syntax, bitte `%s' benutzen"
+msgstr "Veraltete Syntax, bitte `%s' benutzen"
 
 #: src/main.c:781
 #, c-format
@@ -396,18 +346,18 @@ msgstr "%s fehlgeschlagen: %s in %s..%s"
 #: src/main.c:954
 #, c-format
 msgid "%s in %s..%s"
-msgstr "%s in %s..%s"
+msgstr "%s bei %s..%s"
 
 #: src/names.c:317
 #, c-format
 msgid "Charset %s already exists and is not %s"
-msgstr "Zeichensatz `%s' existiert bereits und ist nicht `%s'"
+msgstr "Zeichensatz %s existiert bereits und ist nicht %s"
 
 #: src/names.c:819
 #, c-format
 msgid "Cannot list `%s', no names available for this charset"
 msgstr ""
-"Kann `%s' nicht anzeigen, keine \"10646\"-Namen für diesen Zeichensatz\n"
+"Kann `%s' nicht anzeigen, keine Namen für diesen Zeichensatz\n"
 " verfügbar"
 
 #. code counter
@@ -416,24 +366,24 @@ msgstr ""
 #. insert a while line before printing
 #. Print the long table according to explode data.
 #: src/names.c:974 src/names.c:1020
-#, fuzzy, c-format
+#, c-format
 msgid "Dec  Oct Hex   UCS2  Mne  %s\n"
-msgstr "Dec  Oct Hex   Mne   UCS2   %s\n"
+msgstr "Dec  Oct Hex   UCS2  Mne  %s\n"
 
 #: src/names.c:1039
 #, c-format
 msgid "Sorry, no names available for `%s'"
-msgstr "Tut mir leid, aber es sind für `%s' keine \"10646\"-Namen verfügbar"
+msgstr "Tut mir leid, aber es sind für `%s' keine Namen verfügbar"
 
 #: src/outer.c:95
 #, c-format
 msgid "Resurfacer set more than once for `%s'"
-msgstr ""
+msgstr "`Resurfacer' für `%s' mehr als einmal gesetzt."
 
 #: src/outer.c:102
 #, c-format
 msgid "Unsurfacer set more than once for `%s'"
-msgstr ""
+msgstr "`Unsurfacer' für `%s' mehr als einmal gesetzt."
 
 #: src/recode.c:115 src/recode.c:127
 msgid "Virtual memory exhausted"
@@ -442,12 +392,12 @@ msgstr "Virtueller Speicher voll"
 #: src/recode.c:155
 #, c-format
 msgid "Codes %3d and %3d both recode to %3d"
-msgstr "Die Kodes '%3d' und '%3d' werden beide konvertiert zu '%3d'"
+msgstr "Die Kodes %3d und %3d werden beide konvertiert zu %3d"
 
 #: src/recode.c:169
 #, c-format
 msgid "No character recodes to %3d"
-msgstr "Kein Zeichen wird zu '%3d' umkodiert"
+msgstr "Kein Zeichen wird zu %3d umkodiert"
 
 #: src/recode.c:170
 msgid "Cannot invert given one-to-one table"
@@ -465,8 +415,7 @@ msgstr "Paar Nr. %d: { %3d, %3d } steht in Konflikt mit { %3d, %3d }"
 
 #: src/recode.c:272
 msgid "Cannot complete table from set of known pairs"
-msgstr ""
-"Kann die Tabelle aus der Menge der bekannten Paare nicht vervollständigen"
+msgstr "Kann die Tabelle aus der Menge der bekannten Paare nicht vervollständigen"
 
 #: src/recode.c:492
 msgid "Identity recoding, not worth a table"
@@ -478,14 +427,14 @@ msgstr "Umkodierung ist f
 
 #. Print the header of the header file.
 #: src/recode.c:531
-#, fuzzy, c-format
+#, c-format
 msgid "%sConversion table generated mechanically by Free `%s' %s"
-msgstr "   Konvertierung automatisch generiert von »GNU %s %s«.\n"
+msgstr "%sKonvertierung automatisch generiert von »GNU %s %s«"
 
 #: src/recode.c:533
-#, fuzzy, c-format
+#, c-format
 msgid "%sfor sequence %s.%s"
-msgstr "Unbekannte Folge '%s'"
+msgstr "%sfür Folge %s.%s"
 
 #: src/recode.c:724
 msgid "No table to print"
@@ -493,71 +442,70 @@ msgstr "Keine Tabelle auszugeben"
 
 #: src/request.c:35
 msgid "reversible"
-msgstr ""
+msgstr "umkehrbar"
 
 #: src/request.c:37
-#, fuzzy, c-format
+#, c-format
 msgid "%s to %s"
-msgstr "%s in %s..%s"
+msgstr "%s nach %s"
 
 #: src/request.c:38 src/request.c:40
 msgid "byte"
-msgstr ""
+msgstr "byte"
 
 #: src/request.c:39 src/request.c:41
 msgid "ucs2"
-msgstr ""
+msgstr "ucs2"
 
 #: src/request.c:39 src/request.c:41
 msgid "variable"
-msgstr ""
+msgstr "variabel"
 
 #: src/request.c:112
 msgid "*Unachievable*"
-msgstr ""
+msgstr "*unmöglich*"
 
 #: src/request.c:114
 msgid "*mere copy*"
-msgstr ""
+msgstr "*einface Kopie*"
 
 #: src/request.c:244
-#, fuzzy
 msgid "Virtual memory exhausted!"
-msgstr "Virtueller Speicher voll"
+msgstr "Virtueller Speicher voll!"
 
 #: src/request.c:263
 msgid "Step initialisation failed"
-msgstr ""
+msgstr "Schrittinitialisierung fehlgeschlagen"
 
 #: src/request.c:270
 msgid "Step initialisation failed (unprocessed options)"
-msgstr ""
+msgstr "Schrittinitialisierung fehlgeschlagen (nichtbeachtete Optionen)"
 
 #: src/request.c:566
 #, c-format
 msgid "Request: %s\n"
-msgstr ""
+msgstr "Anfrage: %s\n"
 
 #: src/request.c:702
 #, c-format
 msgid "Shrunk to: %s\n"
-msgstr ""
+msgstr "Geschrumpft zu: %s\n"
 
 #: src/request.c:806 src/request.c:912
 #, c-format
 msgid "Unrecognised surface name `%s'"
-msgstr ""
+msgstr "Unbekannter `surface' Name `%s'"
 
 #: src/request.c:884
 #, c-format
 msgid "No way to recode from `%s' to `%s'"
-msgstr ""
+msgstr "Keine Möglichkeit, von `%s' nach `%s' umzukodieren"
 
 #: src/request.c:992
 msgid "Expecting `..' in request"
-msgstr ""
+msgstr "In der Anfrage wird `..' erwartet"
 
 #: src/task.c:751 src/task.c:915
 #, c-format
 msgid "Child process wait status is 0x%0.2x"
-msgstr ""
+msgstr "Wartezustand des Kindprozesses ist 0x%0.2x"
diff --git a/i18n/el.mo b/i18n/el.mo
new file mode 100644 (file)
index 0000000..cc98c99
Binary files /dev/null and b/i18n/el.mo differ
diff --git a/i18n/el.po b/i18n/el.po
new file mode 100644 (file)
index 0000000..7b96292
--- /dev/null
@@ -0,0 +1,497 @@
+# Greek messages for GNU recode
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Simos Xenitellis <S.Xenitellis@rhbnc.ac.uk>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU recode 3.4r\n"
+"POT-Creation-Date: 1999-05-18 08:46-0400\n"
+"PO-Revision-Date: 1999-06-13 01:30+0000\n"
+"Last-Translator: Simos Xenitellis <S.Xenitellis@rhbnc.ac.uk>\n"
+"Language-Team: Greek <nls@tux.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-7\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+# src/debug.c:287
+#. Dump all characters.
+msgid "UCS2   Mne   Description\n\n"
+msgstr "UCS2   Mne   ÐåñéãñáöÞ\n\n"
+
+# src/main.c:157
+msgid "No error"
+msgstr "ÊáíÝíá óöÜëìá"
+
+# src/main.c:160
+msgid "Non canonical input"
+msgstr "Ìç êáíïíéêïðïéçìÝíç åßóïäïò"
+
+# src/main.c:163
+msgid "Ambiguous output"
+msgstr "ÁóáöÞò Ýîïäïò"
+
+# src/main.c:166
+msgid "Untranslatable input"
+msgstr "Ìç ìåôáöñÜóéìç åßóïäïò"
+
+# src/main.c:169
+msgid "Invalid input"
+msgstr "Ìç Ýãêõñç åßóïäïò"
+
+# src/main.c:172
+msgid "System detected problem"
+msgstr "Ôï óýóôçìá äéáðßóôùóå ðñüâëçìá"
+
+# src/main.c:175
+msgid "Misuse of recoding library"
+msgstr "ÊáêÞ ÷ñÞóç ôçò âéâëéïèÞêçò recode"
+
+# src/main.c:178
+msgid "Internal recoding bug"
+msgstr "Åóùôåñéêü óöÜëìá (recoding)"
+
+# src/main.c:454
+msgid ""
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2, or (at your option)\n"
+"any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software Foundation,\n"
+"Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+msgstr ""
+"Áõôü ôï ðñüãñáììá åßíáé åëåýèåñï ëïãéóìéêüÒ ìðïñåßôå íá ôï áíáäéáíåßìåôå\n"
+"êáé/Þ íá ôï ôñïðïðïéÞóåôå óýìöùíá ìå ôïõò êáíüíåò ôçò ÃåíéêÞò Äçìüóéáò\n"
+"¶äåéáò GNU üðùò åêäßäåôáé áðü ôï Free Software FoundationÒ åßôå ôçí\n"
+"Ýêäïóç 2 åßôå (êáôÜ ôçí ðñïôßìçóÞ óáò) ïðïéáóäÞðïôå ìåôáãåíÝóôåñçò Ýêäïóçò.\n"
+"\n"
+"Áõôü ôï ðñüãñáììá äéáíÝìåôáé ìå ôçí åëðßäá üôé èá åßíáé ÷ñÞóéìï,\n"
+"áëëÜ ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÛÇÓÇ; ÷ùñßò ïýôå Ýììåóç åããýçóç\n"
+"ËÅÉÔÏÕÑÃÉÊÏÔÇÔÁÓ Þ ÊÁÔÁËËÇËÏÔÇÔÁÓ ÃÉÁ ÅÍÁ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ.\n"
+"Áíáöåñèåßôå óôï GNU General Public License ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.\n"
+"\n"
+"Èá ðñÝðåé íá Ý÷åôáé ëÜâåé Ýíá áíôßãñáöï ôçò ÃåíéêÞò Äçìüóéáò ¶äåéáò GNU\n"
+"ìáæß ìå áõôü ôï ðñüãñáììáÒ åÜí ü÷é, ãñÜøôå óôï Free Software Foundation,\n"
+"Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+# src/main.c:479
+#, c-format
+msgid "Try `%s %s' for more information.\n"
+msgstr "ÄïêéìÜóôå `%s %s' ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.\n"
+
+# src/main.c:483
+msgid "Free `recode' converts files between various character sets and surfaces.\n"
+msgstr "Ôï åëåýèåñï `recode' ìåôáôñÝðåé áñ÷åßá ìåôáîý ðïéêßëùí óõíüëùí ÷áñáêôÞñùí êáé åðéöáíåéþí.\n"
+
+# src/main.c:486
+#, c-format
+msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
+msgstr "\n×ñÞóç: %s [ÅÐÉËÏÃÇ]... [ [ÓÕÍÏËÏ×ÁÑÁÊÔ¹ÑÙÍ] | ÁÉÔÇÓÇ [ÁÑ×ÅÉÏ]...\n"
+
+# src/main.c:489
+msgid ""
+"\n"
+"If a long option shows an argument as mandatory, then it is mandatory\n"
+"for the equivalent short option also.  Similarly for optional arguments.\n"
+msgstr ""
+"\n"
+"Áí ìéá ìáêñÜ åðéëïãÞ áíáöÝñåé ìéá ðáñÜìåôñï óáí õðï÷ñåùôéêÞ, ôüôå åßíáé\n"
+"õðï÷ñåùôéêÞ êáé ãéá ôçí áíôßóôïé÷ç óýíôïìç åðéëïãÞ åðßóçò. Ôï ßäéï\n"
+"êáé ãéá ôéò ðñïáéñåôéêÝò ðáñáìÝôñïõò.\n"
+
+# src/main.c:494
+msgid ""
+"\n"
+"Listings:\n"
+"  -l, --list[=FORMAT]        list one or all known charsets\n"
+"  -k, --known=PAIRS          restrict charsets according to known PAIRS list\n"
+"  -h, --header[=[LN/]NAME]   write table NAME on stdout using LN, then exit\n"
+"  -F, --freeze-tables        write out a C module holding all tables\n"
+"  -T, --find-subsets         report all charsets being subset of others\n"
+"  -C, --copyright            display Copyright and copying conditions\n"
+"      --help                 display this help and exit\n"
+"      --version              output version information and exit\n"
+msgstr ""
+"\n"
+"Åìöáíßóåéò:\n"
+"  -l, --list[=ÌÏÑÖÇ]         åìöÜíéóç Ýíá Þ üëá ôá ãíùóôÜ óýíïëá ÷áñáêôÞñùí\n"
+"  -k, --known=ÆÅÕÃÇ          ðåñéïñéóìüò ôùí óõíüëùí ÷áñáêôÞñùí óýìöùíá ìå\n"
+"                               ôç ëßóôá áðü ãíùóôÜ ÆÅÕÃÇ.  -h, --header[=[LN/]ÏÍÏÌÁ]  åìöÜíéóç ôïõ ðßíáêá ÏÍÏÌÁ óôçí êáíïíéêÞ Ýîïäï\n"
+"                               ìå ÷ñÞóç ôïõ LN, ìåôÜ Ýîïäïò\n"
+"  -F, --freeze-tables        åìöÜíéóç óå êþäéêá C ìå üëïõò ôïõò ðßíáêåò\n"
+"  -T, --find-subsets         áíáöïñÜ üëùí ôùí óõíüëùí ÷áñáêôÞñùí ðïõ åßíáé\n"
+"                               õðïóýíïëá óå Üëëá\n"
+"  -C, --copyright            åìöÜíéóç ôïõ Copyright êáé êáíüíùí áíôéãñáöÞò\n"
+"      --help                 åìöÜíéóç áõôÞò ôçò âïÞèåéáò êáé Ýîïäïò\n"
+"      --version              åìöÜíéóç ðëçñïöïñéþí Ýêäïóçò êáé Ýîïäïò\n"
+
+# src/main.c:506
+msgid ""
+"\n"
+"Operation modes:\n"
+"  -v, --verbose           explain sequence of steps and report progress\n"
+"  -q, --quiet, --silent   inhibit messages about irreversible recodings\n"
+"  -f, --force             force recodings even when not reversible\n"
+"  -t, --touch             touch the recoded files after replacement\n"
+"  -i, --sequence=files    use intermediate files for sequencing passes\n"
+"      --sequence=memory   use memory buffers for sequencing passes\n"
+msgstr ""
+"\n"
+"ÊáôáóôÜóåéò ëåéôïõñãßáò:\n"
+"  -v, --verbose           áíáöïñÜ äéáäï÷Þò âçìÜôùí êáé ðñïüäïõ\n"
+"  -q, --quiet, --silent   áðüêñõøç ìçíõìÜôùí ìç-áíôéóôñåðôþí ìåôáôñïðþí\n"
+"  -f, --force             åðéâïëÞ ìåôáôñïðþí áêüìá êáé áí åßíáé ìç áíôéóôñåðôÝò\n"
+"  -t, --touch             åíçìÝñùóç ôçò çìåñïìçíßáò ôùí ìåôáôñåðïìÝíùí áñ÷åßùí\n"
+"                          ìåôÜ ôçí áíôéêáôÜóôáóç\n"
+"  -i, --sequence=files    ÷ñÞóç åíäéÜìåóùí áñ÷åßùí óôá äéáäï÷éêÜ ðåñÜóìáôá\n"
+"      --sequence=memory   ÷ñÞóç åíôáìéåõôþí ìíÞìçò óôá äéáäï÷éêÜ ðåñÜóìáôá\n"
+
+# src/main.c:517
+msgid "  -p, --sequence=pipe     use pipe machinery for sequencing passes\n"
+msgstr "  -p, --sequence=pipe     ÷ñÞóç óùëÞíùóçò óôá äéáäï÷éêÜ ðåñÜóìáôá\n"
+
+# src/main.c:521
+msgid "  -p, --sequence=pipe     same as -i (on this system)\n"
+msgstr "  -p, --sequence=pipe     ôï ßäéï ìå -i (óå áõôü ôï óýóôçìá)\n"
+
+# src/main.c:525
+msgid ""
+"\n"
+"Fine tuning:\n"
+"  -s, --strict           use strict mappings, even loose characters\n"
+"  -d, --diacritics       convert only diacritics or alike for HTML/LaTeX\n"
+"  -S, --source[=LN]      limit recoding to strings and comments as for LN\n"
+"  -c, --colons           use colons instead of double quotes for diaeresis\n"
+"  -g, --graphics         approximate IBMPC rulers by ASCII graphics\n"
+"  -x, --ignore=CHARSET   ignore CHARSET while choosing a recoding path\n"
+msgstr ""
+"\n"
+"Ñõèìßóåéò:\n"
+"  -s, --strict           ÷ñÞóç áõóôçñþí óõó÷åôßóåùí, áêüìá êáé åëåýèåñùí ÷áñáêôÞñùí\n"
+"  -d, --diacritics       ìåôáôñïðÞ ìüíï äéáêñéôéêþí Þ ðáñüìïéùí ãéá HTML/LaTeX\n"
+"  -S, --source[=LN]      ðåñéïñéóìüò ìåôáôñïðþí óå áëöáñéèìçôéêÜ êáé ó÷üëéá\n"
+"                           êÜôá ôï LN\n"
+"  -c, --colons           ÷ñÞóç êïëþíùí áíôß äéðëþí åéóáãùãéêþí ãéá ôç äéáßñåóç\n"
+"  -g, --graphics         ðñïóÝããéóç êáíüíùí IBMPC ìå ASCII ãñáöéêÜ\n"
+"  -x, --ignore=ÐÉÍ×ÁÑ    áãíüçóç ðßíáêá ÷áñáêôÞñùí (ÐÉÍ×ÁÑ) óôçí åðéëïãÞ ìïíïðáôéïý ìåôáôñïðþí\n"
+
+# src/main.c:294
+msgid ""
+"\n"
+"Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n"
+"FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n"
+msgstr ""
+"\n"
+"Ç åðéëïãÞ -l ÷ùñßò ÌÏÑÖÇ, ïýôå ÐÉÍ×ÁÑ, áðáñéèìåß ôïõò äéáèÝóéìïõò ðßíáêåò\n"
+"÷áñáêôÞñùí êáé åðéöÜíåéåò. ÌÏÑÖÇ åßíáé `decimal', `octal', `hexadecimal'\n"
+"Þ `full' (Þ Ýíá áðü ôá `dohf').\n"
+
+# src/main.c:302
+#, c-format
+msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
+msgstr ""
+"Åêôüò êáé áí Ý÷åé ïñéóôåß ç ìåôáâëçôÞ ðåñéâÜëëïíôïò DEFAULT_CHARSET,\n"
+"ï ðßíáêáò ÷áñáêôÞñùí (CHARSET) åßíáé åî'ïñéóìïý `%s'.\n"
+
+# src/main.c:308
+msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n"
+msgstr ""
+"O ÐÉÍ×ÁÑ (ðßíáêáò ÷áñáêôÞñùí Þ CHARSET) äåí Ý÷åé åî' ïñéóìïý ôéìÞ,\n"
+"ïñßóôå ôç ìåôáâëçôÞ ðåñéâÜëëïíôïò DEFAULT_CHARSET.\n"
+
+# src/main.c:540
+msgid ""
+"With -k, possible before charsets are listed for the given after CHARSET,\n"
+"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n"
+"and BEFs and AFTs being codes are given as decimal numbers.\n"
+msgstr ""
+"Ìå -k, ðéèáíïß ðñïçãïýìåíïé ðßíáêåò ÷áñáêôÞñùí åìöáíßæïíôáé ãéá ôï äïèÝí\n"
+"åðüìåíï ðßíáêá ÷áñáêôÞñùí (CHARSET), üíôáò êáé ôá äýï óå ìïñöÞ ðåäßùí,\n"
+"óå ÆÅÕÃÇ ôçò ìïñöÞò `ÐÑÏÇÃ1:ÅÐÏÌÅÍ1,ÐÑÏÇÃ1:ÅÐÏÌÅÍ2,...'\n"
+"êáé ôá ÐÑÏÇàêáé ÅÐÏÌÅÍ, üíôáò êùäéêïß, äßíïíôáé ùò áñéèìïß.\n"
+
+# src/main.c:318
+msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
+msgstr "LN åßíáé ìéá ãëþóóá, ìðïñåß íá åßíáé `c', `perl' Þ `po'Ò åî'ïñéóìïý åßíáé `c'.\n"
+
+# src/main.c:321
+msgid ""
+"\n"
+"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n"
+"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n"
+"with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual\n"
+"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n"
+"with an empty surface name means no surfaces at all.  See the manual.\n"
+msgstr ""
+"\n"
+"ÁÉÔÇÓÇ åßíáé ÕÐÏÁÉÔÇÓÇ[,ÕÐÏÁÉÔÇÓÇ]...Ò ÕÐÏÁÉÔÇÓÇ åßíáé ÊÙÄÉÊÏÐÏÉÇÓÇ[...ÊÙÄÉÊÏÐÏÉÇÓÇ]...\n"
+"ÊÙÄÉÊÏÐÏÉÇÓÇ åßíáé [ÐÉÍ×ÁÑ][/[ÅÐÉÖÁÍÅÉÁ]]...Ò ÁÉÔÇÓÇ óõíÞèùò ìïéÜæåé ìå ÐÑÏÇÃÏÕÌÅÍÏ...ÅÐÏÌÅÍÏ,\n"
+"ìå ÐÑÏÇÃÏÕÌÅÍÏ êáé ÅÐÏÌÅÍÏ íá åßíáé ðßíáêåò ÷áñáêôÞñùí. ¸íáò ÐÉÍ×ÁÑ ðïõ\n"
+"Ý÷åé ðáñáëçöèåß, õðïäçëþíåé ôï óõíÞèåò ðßíáêá ÷áñáêôÞñùíÒ Ýíá [/ÅÐÉÖÁÍÅÉÁ]...\n"
+"ðïõ Ý÷åé ðáñáëçöèåß, óçìáßíåé ôéò õðïäçëùìÝíåò åðéöÜíåéåò ôïõ ÐÉÍ×ÁÑÒ Ýíá /\n"
+"÷ùñßò üíïìá åðéöÜíåéáò óçìáßíåé ÷ùñßò êáèüëïõ åðéöÜíåéåò. ÊïéôÜîôå ôï åã÷åéñßäéï.\n"
+
+# src/main.c:556
+msgid ""
+"\n"
+"If none of -i and -p are given, presume -p if no FILE, else -i.\n"
+"Each FILE is recoded over itself, destroying the original.  If no\n"
+"FILE is specified, then act as a filter and recode stdin to stdout.\n"
+msgstr ""
+"\n"
+"Áí êáíÝíá áðü ôá -i êáé -p äå äßäïíôáé, èåþñçóå -p áí äåí õðÜñ÷åé ÁÑ×ÅÉÏ, áëëéþò -i.\n"
+"ÊÜèå ÁÑ×ÅÉÏ ìåôáôñÝðåôáé ðÜíù óôïí åáõôü ôïõ, êáôáóôñÝöïíôáò ôï ðñùôüôõðï.\n"
+"Áí êáíÝíá ÁÑ×ÅÉÏ äåí Ý÷åé ïñéóôåß, ôüôå öÝñóïõ óáí ößëôñï êáé ìåôÝôñåøå\n"
+"ôçí êáíïíéêÞ åßóïäï óôçí êáíïíéêÞ Ýîïäï.\n"
+
+# src/main.c:562
+msgid "\nReport bugs to <recode-bugs@iro.umontreal.ca>.\n"
+msgstr "\nÁíáöÝñáôå óöÜëìáôá óôï <recode-bugs@iro.umontreal.ca>.\n"
+
+# src/main.c:659
+#, c-format
+msgid "Ambiguous sequence `%s'"
+msgstr "ÁóáöÞò óõìâïëïóåéñÜ `%s'"
+
+# src/main.c:663
+#, c-format
+msgid "Unknown sequence `%s'"
+msgstr "¶ãíùóôç óõìâïëïóåéñÜ `%s'"
+
+# src/main.c:693 src/main.c:747
+#, c-format
+msgid "Ambiguous language `%s'"
+msgstr "ÁóáöÞò ãëþóóá `%s'"
+
+# src/main.c:697 src/main.c:751
+#. -1
+#, c-format
+msgid "Unknown language `%s'"
+msgstr "¶ãíùóôç ãëþóóá `%s'"
+
+# src/main.c:785
+#, c-format
+msgid "Ambiguous format `%s'"
+msgstr "ÁóáöÞò ìïñöÞ `%s'"
+
+# src/main.c:789
+#, c-format
+msgid "Unknown format `%s'"
+msgstr "¶ãíùóôç ìïñöÞ `%s'"
+
+# src/main.c:622
+msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+msgstr "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+
+# src/main.c:850
+msgid ""
+"This is free software; see the source for copying conditions.  There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Áõôü åßíáé åëåýèåñï ëïãéóìéêüÒ äåßôå ôï ðçãáßï êþäéêá ãéá ôïõò êáíüíåò áíôéãñáöÞò.\n"
+"ÄÅÍ õðÜñ÷åé åããýçóçÒ ïýôå áêüìá ãéá ×ÑÇÓÉÌÏÔÇÔÁ Þ ÊÁÔÁËËÇËÏÔÇÔÁ ÃÉÁ ÅÍÁ\n"
+"ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ.\n"
+
+# src/main.c:854
+msgid "\nWritten by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+msgstr "\nÃñáììÝíï áðü ôïí Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+
+# src/main.c:999
+#, c-format
+msgid "Deprecated syntax, please prefer `%s'"
+msgstr "Ìç óõíéóôþìåíç óýíôáîç, ðáñáêáëþ ðñïôéìßóôå `%s'"
+
+# src/main.c:1005
+#, c-format
+msgid "Erroneous request `%s'"
+msgstr "ÅóöáëìÝíç áßôçóç `%s'"
+
+# src/main.c:1098
+#, c-format
+msgid "Recoding %s..."
+msgstr "ÌåôáôñïðÞ ôïõ %s..."
+
+# src/main.c:1108
+msgid " done\n"
+msgstr " Ýãéíå\n"
+
+# src/main.c:1142
+#, c-format
+msgid " failed: %s in %s..%s\n"
+msgstr " áðÝôõ÷å: %s óå %s..%s\n"
+
+# src/main.c:1149
+#, c-format
+msgid "%s failed: %s in %s..%s"
+msgstr "%s áðÝôõ÷å: %s óå %s..%s"
+
+# src/main.c:1172
+#, c-format
+msgid "%s in %s..%s"
+msgstr "%s óå %s..%s"
+
+# src/names.c:259
+#, c-format
+msgid "Charset %s already exists and is not %s"
+msgstr "Ï ðßíáêáò ÷áñáêôÞñùí %s õðÜñ÷åé Þäç êáé äåí åßíáé ôï %s"
+
+# src/names.c:754
+#, c-format
+msgid "Cannot list `%s', no names available for this charset"
+msgstr "Áäõíáìßá åìöÜíéóçò ôïõ `%s', äåí õðÜñ÷ïõí ïíüìáôá äéáèÝóéìá ãéá áõôüí ôïí ðßíáêá ÷áñáêôÞñùí"
+
+# src/names.c:974 src/names.c:1020
+#. code counter
+#. expected value for code counter
+#. UCS-2 translation
+#. insert a while line before printing
+#. Print the long table according to explode data.
+#, c-format
+msgid "Dec  Oct Hex   UCS2  Mne  %s\n"
+msgstr "Dec  Oct Hex   UCS2  Mne  %s\n"
+
+# src/names.c:847
+#, c-format
+msgid "Sorry, no names available for `%s'"
+msgstr "Óõãíþìç, äåí õðÜñ÷ïõí äéáèÝóéìá ïíüìáôá ãéá ôï `%s'"
+
+# src/outer.c:95
+#, c-format
+msgid "Resurfacer set more than once for `%s'"
+msgstr "Ï åðáíáôïðïèåôçôÞò åðéöÜíåéáò Ý÷åé ôåèåß ðåñéóóüôåñï áðü ìéá öïñÜ ãéá ôï `%s'"
+
+# src/outer.c:102
+#, c-format
+msgid "Unsurfacer set more than once for `%s'"
+msgstr "Ï áíôéôïðïèåôçôÞò åðéöÜíåéáò Ý÷åé ôåèåß ðåñéóóüôåñï áðü ìéá öïñÜ ãéá ôï `%s'"
+
+# src/recode.c:117 src/recode.c:129
+msgid "Virtual memory exhausted"
+msgstr "Ç éäåáôÞ ìíÞìç åîáíôëÞèçêå"
+
+# src/recode.c:157
+#, c-format
+msgid "Codes %3d and %3d both recode to %3d"
+msgstr "Êáé ïé äýï êùäéêïß %3d êáé %3d ìåôáôñÝðïíôáé óå %3d"
+
+# src/recode.c:171
+#, c-format
+msgid "No character recodes to %3d"
+msgstr "ÊáíÝíáò ÷áñáêôÞñáò äåí ìåôáôñÝðåôáé óå %3d"
+
+# src/recode.c:172
+msgid "Cannot invert given one-to-one table"
+msgstr "Áäõíáìßá áíôéóôñïöÞò äïèÝíôïò 1-1 ðßíáêá"
+
+# src/recode.c:226 src/recode.c:238
+#, c-format
+msgid "Following diagnostics for `%s' to `%s'"
+msgstr "Áêïëïõèïýí äéáãíùóôéêÜ ãéá `%s' óå `%s'"
+
+# src/recode.c:231 src/recode.c:243
+#, c-format
+msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>"
+msgstr "Áñéèì. æåýãïõò %d: <%3d, %3d> óõãêñïýåôáé ìå <%3d, %3d>"
+
+# src/recode.c:274
+msgid "Cannot complete table from set of known pairs"
+msgstr "Áäõíáìßá óõìðëÞñùóçò ðßíáêá áðü ôï óýíïëï ãíùóôþí æåõãþí"
+
+# src/recode.c:504
+msgid "Identity recoding, not worth a table"
+msgstr "ÌçäáìçíÞ ìåôáôñïðÞ, äåí ÷ñåéÜæåôáé ðßíáêá"
+
+# src/recode.c:512
+msgid "Recoding is too complex for a mere table"
+msgstr "Ç ìåôáôñïðÞ åßíáé ðïëý ðåñßðëïêç ãéá Ýíá ìüíï ðßíáêá"
+
+# src/recode.c:544
+#. Print the header of the header file.
+#, c-format
+msgid "%sConversion table generated mechanically by Free `%s' %s"
+msgstr "%sÐßíáêáò ìåôáôñïðÞò äçìéïõñãÞèçêå ìç÷áíéêÜ áðü ôï Åëåýèåñï `%s' %s"
+
+# src/recode.c:546
+#, c-format
+msgid "%sfor sequence %s.%s"
+msgstr "%sãéá äéáäï÷Þ %s.%s"
+
+# src/recode.c:736
+msgid "No table to print"
+msgstr "ÊáíÝíáò ðßíáêáò ãéá åêôýðùóç"
+
+# src/request.c:35
+msgid "reversible"
+msgstr "áíôéóôñåðôü"
+
+# src/request.c:37
+#, c-format
+msgid "%s to %s"
+msgstr "%s óå %s"
+
+# src/request.c:38 src/request.c:40
+msgid "byte"
+msgstr "byte"
+
+# src/request.c:39 src/request.c:41
+msgid "ucs2"
+msgstr "ucs2"
+
+# src/request.c:39 src/request.c:41
+msgid "variable"
+msgstr "ìåôáâëçôÞ"
+
+# src/request.c:112
+msgid "*Unachievable*"
+msgstr "*Ìç êáôïñèùôü*"
+
+# src/request.c:114
+msgid "*mere copy*"
+msgstr "*áðëÞ áíôéãñáöÞ*"
+
+# src/request.c:244
+msgid "Virtual memory exhausted!"
+msgstr "Ç éäåáôÞ ìíÞìç åîáíôëÞèçêå!"
+
+# src/request.c:263
+msgid "Step initialisation failed"
+msgstr "Ôï âÞìá áñ÷éêïðïßçóçò áðÝôõ÷å"
+
+# src/request.c:270
+msgid "Step initialisation failed (unprocessed options)"
+msgstr "Ôï âÞìá áñ÷éêïðïßçóçò áðÝôõ÷å (åðéëïãÝò ðïõ äåí Ý÷ïõí åðåîåñãáóôåß)"
+
+# src/request.c:566
+#, c-format
+msgid "Request: %s\n"
+msgstr "Áßôçóç: %s\n"
+
+# src/request.c:702
+#, c-format
+msgid "Shrunk to: %s\n"
+msgstr "Óõññßêíùóç óå %s\n"
+
+# src/request.c:806 src/request.c:912
+#, c-format
+msgid "Unrecognised surface name `%s'"
+msgstr "Ìç áíáãíùñßóçìï üíïìá åðéöÜíåéáò `%s'"
+
+# src/request.c:884
+#, c-format
+msgid "No way to recode from `%s' to `%s'"
+msgstr "ÊáíÝíáò ôñüðïò íá ìåôáôñáðåß áðü `%s' óå `%s'"
+
+# src/request.c:992
+msgid "Expecting `..' in request"
+msgstr "ÁíáìÝíåôáé `..' óôçí áßôçóç"
+
+# src/task.c:751 src/task.c:915
+#, c-format
+msgid "Child process wait status is 0x%0.2x"
+msgstr "Ç êáôÜóôáóç ðáñáìïíÞò ôçò èõãáôñéêÞò äéåñãáóßáò åßíáé 0x%0.2x"
similarity index 100%
rename from po/es.gmo
rename to i18n/es.mo
similarity index 100%
rename from po/es.po
rename to i18n/es.po
similarity index 93%
rename from po/fr.gmo
rename to i18n/fr.mo
index 5317b63841c7970fa6736e6ad56226f17ef90bff..fd4759bb48807a44b0e23c145e7e37cdb4b34ec4 100644 (file)
Binary files a/po/fr.gmo and b/i18n/fr.mo differ
similarity index 98%
rename from po/fr.po
rename to i18n/fr.po
index 947df5829442953426eee0ebbc88aa2be1317bca..54bc13b3eb7d12b47aa3c53bf36970b2d8695c11 100644 (file)
--- a/po/fr.po
@@ -4,11 +4,11 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Free recode 3.4r\n"
+"Project-Id-Version: Free recode 3.5\n"
 "POT-Creation-Date: 1999-05-18 08:46-0400\n"
-"PO-Revision-Date: 1999-06-01 23:22-04:00\n"
+"PO-Revision-Date: 1999-08-17 14:14-04:00\n"
 "Last-Translator: François Pinard <pinard@iro.umontreal.ca>\n"
-"Language-Team: French <traduc@Linux.EU.Org>\n"
+"Language-Team: French <traduc@traduc.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -285,7 +285,7 @@ msgid ""
 msgstr ""
 "\n"
 "Rapporter tout disfonctionnement à mailto:recode-bugs@iro.umontreal.ca;\n"
-"et rapporter les problèmes de francisation à mailto:fr@li.org.\n"
+"et rapporter les problèmes de francisation à mailto:traduc@traduc.org.\n"
 
 #: src/main.c:431
 #, c-format
diff --git a/i18n/it.mo b/i18n/it.mo
new file mode 100644 (file)
index 0000000..6e690bd
Binary files /dev/null and b/i18n/it.mo differ
diff --git a/i18n/it.po b/i18n/it.po
new file mode 100644 (file)
index 0000000..ae9978d
--- /dev/null
@@ -0,0 +1,502 @@
+# MESSAGGI IN ITALIANO PER GNU RECODE.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Lorenzo Cappelletti <L.Cappelletti@POBoxes.com>, 1999.
+#
+# table          -> tabella
+# character set  -> insieme di caratteri
+# charset        -> charset
+# surface        -> ?
+# to recode      -> ricodificare
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU recode 3.5\n"
+"POT-Creation-Date: 1999-05-18 08:46-0400\n"
+"PO-Revision-Date: 1999-11-19 23:30+01:00\n"
+"Last-Translator: Lorenzo Cappelletti <L.Cappelletti@POBoxes.com>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#. Dump all characters.
+#: src/debug.c:287
+msgid "UCS2   Mne   Description\n\n"
+msgstr "UCS2   Mne   Descrizione\n"
+
+#: src/main.c:140
+msgid "No error"
+msgstr "Nessun errore"
+
+#: src/main.c:143
+msgid "Non canonical input"
+msgstr "Nessun input canonico"
+
+#: src/main.c:146
+msgid "Ambiguous output"
+msgstr "Output ambiguo"
+
+#: src/main.c:149
+msgid "Untranslatable input"
+msgstr "Input non traslabile"
+
+#: src/main.c:152
+msgid "Invalid input"
+msgstr "Input non valido"
+
+#: src/main.c:155
+msgid "System detected problem"
+msgstr "Rilevato problema di sistema"
+
+#: src/main.c:158
+msgid "Misuse of recoding library"
+msgstr "Uso scorretto della libreria di ricodifica"
+
+#: src/main.c:161
+msgid "Internal recoding bug"
+msgstr "Bug di ricodifica interno"
+
+#: src/main.c:206
+msgid ""
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2, or (at your option)\n"
+"any later version.\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License\n"
+"along with this program; if not, write to the Free Software Foundation,\n"
+"Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+msgstr ""
+"This program is free software; you can redistribute it and/or modify\n"
+"it under the terms of the GNU General Public License as published by\n"
+"the Free Software Foundation; either version 2, or (at your option)\n"
+"any later version\n"
+"\n"
+"This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"GNU General Public License for more details.\n"
+"\n"
+"Si dovrebbe aver ricevuto una copia della GNU General Public License\n"
+"assieme a questo programma; in caso contrario, scrivere a Free Software\n"
+"Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
+
+#: src/main.c:231
+#, c-format
+msgid "Try `%s %s' for more information.\n"
+msgstr "Usare `%s %s' per ulteriori informazioni.\n"
+
+# Libero `recode' non mi piace
+# Cosa sono le surfaces in questo contesto?
+#: src/main.c:235
+msgid "Free `recode' converts files between various character sets and surfaces.\n"
+msgstr "`recode' gratuito converte file fra vari insiemi di caratteri e surface.\n"
+
+#: src/main.c:239
+#, c-format
+msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
+msgstr "\nUso: %s [OPZIONI]... [ [CHARSET] | RICHIESTA [FILE]... ]\n"
+
+#: src/main.c:242
+msgid ""
+"\n"
+"If a long option shows an argument as mandatory, then it is mandatory\n"
+"for the equivalent short option also.  Similarly for optional arguments.\n"
+msgstr ""
+"\n"
+"Se un'opzione lunga richiede necessariamente un argomento, allora essa\n"
+"è richiesta anche per l'opzione breve.  Analogamente per gli argomenti\n"
+"opzionali.\n"
+
+#: src/main.c:248
+msgid ""
+"\n"
+"Listings:\n"
+"  -l, --list[=FORMAT]        list one or all known charsets\n"
+"  -k, --known=PAIRS          restrict charsets according to known PAIRS list\n"
+"  -h, --header[=[LN/]NAME]   write table NAME on stdout using LN, then exit\n"
+"  -F, --freeze-tables        write out a C module holding all tables\n"
+"  -T, --find-subsets         report all charsets being subset of others\n"
+"  -C, --copyright            display Copyright and copying conditions\n"
+"      --help                 display this help and exit\n"
+"      --version              output version information and exit\n"
+msgstr ""
+"\n"
+"Elenchi:\n"
+"  -l, --list[=FORMATO]       lista uno o tutti i charset conosciuti\n"
+"  -k, --known=COPPIE         restringe i charset secondo le COPPIE conosciute\n"
+"  -h, --header[=[LN/]NOME]   scrive la tabella NOME sullo stdout usando LN,\n"
+"                             poi esce\n"
+"  -F, --freeze-tables        riporta un modulo C contenente tutte le tabelle\n"
+"  -T, --find-subsets         riporta tutti i charset sottoinsiemi di altri\n"
+"  -C, --copyright            mostra le condizioni del Copyright e riproduzione\n"
+"      --help                 mostra questo aiuto ed esce\n"
+"      --version              informazioni sulla versione ed uscita\n"
+
+#: src/main.c:261
+msgid ""
+"\n"
+"Operation modes:\n"
+"  -v, --verbose           explain sequence of steps and report progress\n"
+"  -q, --quiet, --silent   inhibit messages about irreversible recodings\n"
+"  -f, --force             force recodings even when not reversible\n"
+"  -t, --touch             touch the recoded files after replacement\n"
+"  -i, --sequence=files    use intermediate files for sequencing passes\n"
+"      --sequence=memory   use memory buffers for sequencing passes\n"
+msgstr ""
+"\n"
+"Modi operativi:\n"
+"  -v, --verbose           spiega le sequenze dei passi e riporta i progressi\n"
+"  -q, --quiet, --silent   inibisce i messaggi di ricodifiche inreversibili\n"
+"  -f, --force             forza le ricodifiche anche quando non reversibili\n"
+"  -t, --touch             touch dei file ricodificati dopo la sostituzione\n"
+"  -i, --sequence=files    usa file intermedi per i passi sequenziali\n"
+"      --sequence=memory   usa buffer di memoria per i passi sequenziali\n"
+
+#: src/main.c:273
+msgid "  -p, --sequence=pipe     use pipe machinery for sequencing passes\n"
+msgstr "  -p, --sequence=pipe     usa il sistema dei pipe per i passi sequenziali\n"
+
+#: src/main.c:278
+msgid "  -p, --sequence=pipe     same as -i (on this system)\n"
+msgstr "  -p, --sequence=pipe     come -i (su questo sistema)\n"
+
+#: src/main.c:283
+msgid ""
+"\n"
+"Fine tuning:\n"
+"  -s, --strict           use strict mappings, even loose characters\n"
+"  -d, --diacritics       convert only diacritics or alike for HTML/LaTeX\n"
+"  -S, --source[=LN]      limit recoding to strings and comments as for LN\n"
+"  -c, --colons           use colons instead of double quotes for diaeresis\n"
+"  -g, --graphics         approximate IBMPC rulers by ASCII graphics\n"
+"  -x, --ignore=CHARSET   ignore CHARSET while choosing a recoding path\n"
+msgstr ""
+"\n"
+"Regolazioni fini:\n"
+"  -s, --strict           usa mappature strettamente conformi, anche con caratteri slegati\n"
+"  -d, --diacritics       converte solo segni diacritici o simili per HTML/LaTeX\n"
+"  -S, --source[=LN]      limita la ricodifica a stringhe e commenti come per LN\n"
+"  -c, --colons           usa i due punti al posto delle virgolette per le dieresi\n"
+"  -g, --graphics         approssima le regole IBMPC con grafica ASCII\n"
+"  -x, --ignore=CHARSET   ignora CHARSET quando sceglie un percorso di ricodifica\n"
+
+#: src/main.c:294
+msgid ""
+"\n"
+"Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n"
+"FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n"
+msgstr ""
+"\n"
+"L'opzione -l senza FORMATO né CHARSET elenca i charset e le surface\n"
+"disponibili.  FORMATO può essere `decimale'(d), `ottale'(o),\n"
+"`esadecimale'(h) o `pieno'(f) (oppure uno tra `dohf').\n"
+
+#: src/main.c:302
+#, c-format
+msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
+msgstr ""
+"Se DEFAULT_CHARSET non è specificato nell'ambiente, il CHARSET predefinito\n"
+"è `%s`.\n"
+
+#: src/main.c:308
+msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n"
+msgstr "Nessun CHARSET predefinito, definire DEFAULT_CHARSET nell'ambiente.\n"
+
+# Non riesco assolutamente a capire la costruzione logica di questa frase
+#: src/main.c:313
+msgid ""
+"With -k, possible before charsets are listed for the given after CHARSET,\n"
+"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n"
+"and BEFs and AFTs being codes are given as decimal numbers.\n"
+msgstr ""
+"Con -k, possibile prima, charset vengono listati per quelli dati dopo CHARSET,\n"
+"entrambi essendo charset tabulari, con COPPIE nella foram `BEF1:AFT1,BEF2:AFT2,...',\n"
+"dove BEF e AFT sono codici forniti come numeri decimali.\n"
+
+#: src/main.c:318
+msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
+msgstr "LN è qualche lingua, può essere `c', `perl' o `po'; quella predefinita è `c'.\n"
+
+#: src/main.c:321
+msgid ""
+"\n"
+"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n"
+"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n"
+"with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual\n"
+"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n"
+"with an empty surface name means no surfaces at all.  See the manual.\n"
+msgstr ""
+"\n"
+"RICHIESTA è SUBRICHIESTA[,SUBRICHIESTA]...; SUBRICHIESTA è\n"
+"CODIFICA[..CODIFICA]...; CODIFICA è [CHARSET][/[SURFACE]...;\n"
+"RICHIESTA spesso è simile a PRIMA..DOPO, essendo PRIMA e DOPO dei charset.\n"
+"Un CHARSET omesso implica il charset usuale; una [/SURFACE]... omessa\n"
+"implica le superfici del CHARSET; un / con un nome di surface vuoto\n"
+"significa nessuna surface.  Vedere il manuale.\n"
+
+#: src/main.c:329
+msgid ""
+"\n"
+"If none of -i and -p are given, presume -p if no FILE, else -i.\n"
+"Each FILE is recoded over itself, destroying the original.  If no\n"
+"FILE is specified, then act as a filter and recode stdin to stdout.\n"
+msgstr ""
+"\n"
+"Se non è dato -i né -p, si presume -p se FILE non è presente, altrimenti -i.\n"
+"Ogni FILE è ricodificato su se stesso, ditruggendo l'originale.  Se non viene\n"
+"specificato nessun FILE, allora si comporta come un filtro ricodificando lo\n"
+"stdin sullo stdout.\n"
+
+#: src/main.c:335
+msgid "\nReport bugs to <recode-bugs@iro.umontreal.ca>.\n"
+msgstr "\nSegnalare i bug a <recode-bugs@iro.umontreal.ca>.\n"
+
+#: src/main.c:431
+#, c-format
+msgid "Ambiguous sequence `%s'"
+msgstr "Sequenza ambigua `%s'"
+
+#: src/main.c:435
+#, c-format
+msgid "Unknown sequence `%s'"
+msgstr "Sequenza sconosciuta `%s'"
+
+#: src/main.c:465 src/main.c:523
+#, c-format
+msgid "Ambiguous language `%s'"
+msgstr "Lingua ambigua `%s'"
+
+#. -1
+#: src/main.c:469 src/main.c:527
+#, c-format
+msgid "Unknown language `%s'"
+msgstr "Lingua sconosciuta `%s'"
+
+#: src/main.c:561
+#, c-format
+msgid "Ambiguous format `%s'"
+msgstr "Formato ambiguo `%s'"
+
+#: src/main.c:565
+#, c-format
+msgid "Unknown format `%s'"
+msgstr "Formato sconosciuto `%s'"
+
+#: src/main.c:622
+msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+msgstr "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+
+#: src/main.c:626
+msgid ""
+"This is free software; see the source for copying conditions.  There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Questo è software libero; vedere il sorgente per le condizioni sulla\n"
+"riproduzione.  NON c'è garanzia; neppure di COMMERCIABILITÀ o IDONEITÀ\n"
+"AD UN PARTICOLARE SCOPO.\n"
+
+#: src/main.c:630
+msgid "\nWritten by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+msgstr "\nScritto da Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+
+#: src/main.c:775
+#, c-format
+msgid "Deprecated syntax, please prefer `%s'"
+msgstr "Sintassi sconsigliata, si preferisca `%s'"
+
+#: src/main.c:781
+#, c-format
+msgid "Erroneous request `%s'"
+msgstr "Richiesta errata `%s'"
+
+#: src/main.c:878
+#, c-format
+msgid "Recoding %s..."
+msgstr "Sto ricodificando %s..."
+
+#: src/main.c:888
+msgid " done\n"
+msgstr " fatto\n"
+
+#: src/main.c:924
+#, c-format
+msgid " failed: %s in %s..%s\n"
+msgstr " fallito: %s in %s..%s\n"
+
+#: src/main.c:931
+#, c-format
+msgid "%s failed: %s in %s..%s"
+msgstr "%s fallito: %s in %s..%s"
+
+#: src/main.c:954
+#, c-format
+msgid "%s in %s..%s"
+msgstr "%s in %s..%s"
+
+#: src/names.c:317
+#, c-format
+msgid "Charset %s already exists and is not %s"
+msgstr "Il charset %s esiste già e non è %s"
+
+#: src/names.c:819
+#, c-format
+msgid "Cannot list `%s', no names available for this charset"
+msgstr "Non posso listare `%s', nessun nome disponibile per questo charset"
+
+#. code counter
+#. expected value for code counter
+#. UCS-2 translation
+#. insert a while line before printing
+#. Print the long table according to explode data.
+#: src/names.c:974 src/names.c:1020
+#, c-format
+msgid "Dec  Oct Hex   UCS2  Mne  %s\n"
+msgstr "Dec  Ott Esa   UCS2  Mne  %s\n"
+
+#: src/names.c:1039
+#, c-format
+msgid "Sorry, no names available for `%s'"
+msgstr "Spiacente, nessun nome disponibile per `%s'"
+
+#: src/outer.c:95
+#, c-format
+msgid "Resurfacer set more than once for `%s'"
+msgstr "Il resurfacer è impostato piú di una volta per `%s'"
+
+#: src/outer.c:102
+#, c-format
+msgid "Unsurfacer set more than once for `%s'"
+msgstr "L'unsurfacer è impostato piú di una volta per `%s'"
+
+#: src/recode.c:115 src/recode.c:127
+msgid "Virtual memory exhausted"
+msgstr "Memoria virtuale esaurita"
+
+#: src/recode.c:155
+#, c-format
+msgid "Codes %3d and %3d both recode to %3d"
+msgstr "Entrambi i codici %3d e %3d si ricodificano in %3d"
+
+#: src/recode.c:169
+#, c-format
+msgid "No character recodes to %3d"
+msgstr "Nessun carattere si ricodifica in %3d"
+
+#: src/recode.c:170
+msgid "Cannot invert given one-to-one table"
+msgstr "Impossibile invertire la tabella uno-a-uno data"
+
+#: src/recode.c:224 src/recode.c:236
+#, c-format
+msgid "Following diagnostics for `%s' to `%s'"
+msgstr "Segue diagnostica da `%s' a `%s'"
+
+#: src/recode.c:229 src/recode.c:241
+#, c-format
+msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>"
+msgstr "La coppia numero %d: <%3d, %3d> è in conflitto con <%3d, %3d>"
+
+#: src/recode.c:272
+msgid "Cannot complete table from set of known pairs"
+msgstr "Impossibile completare la tabella dall'insieme delle coppie conosciute"
+
+# Una forma migliore per identity recoding?
+#: src/recode.c:492
+msgid "Identity recoding, not worth a table"
+msgstr "Sto ricodificando nell'identità, tabella non significativa"
+
+#: src/recode.c:499
+msgid "Recoding is too complex for a mere table"
+msgstr "La ricodifica è troppo complessa per una sola tabella"
+
+#. Print the header of the header file.
+#: src/recode.c:531
+#, c-format
+msgid "%sConversion table generated mechanically by Free `%s' %s"
+msgstr "%sTabella di conversione generata automaticamente dalla Free `%s' %s"
+
+#: src/recode.c:533
+#, c-format
+msgid "%sfor sequence %s.%s"
+msgstr "%sper la sequenza %s.%s"
+
+#: src/recode.c:724
+msgid "No table to print"
+msgstr "Nessuna tabella da stampare"
+
+#: src/request.c:35
+msgid "reversible"
+msgstr "reversibile"
+
+#: src/request.c:37
+#, c-format
+msgid "%s to %s"
+msgstr "%s in %s"
+
+#: src/request.c:38 src/request.c:40
+msgid "byte"
+msgstr "byte"
+
+# Verificare il significato della sigla
+#: src/request.c:39 src/request.c:41
+msgid "ucs2"
+msgstr "ucs2"
+
+#: src/request.c:39 src/request.c:41
+msgid "variable"
+msgstr "variabile"
+
+#: src/request.c:112
+msgid "*Unachievable*"
+msgstr "*Inraggiungibile*"
+
+#: src/request.c:114
+msgid "*mere copy*"
+msgstr "*per sola copia*"
+
+#: src/request.c:244
+msgid "Virtual memory exhausted!"
+msgstr "Memoria virtuale esaurita!"
+
+#: src/request.c:263
+msgid "Step initialisation failed"
+msgstr "Passo di inizializzazione fallito"
+
+#: src/request.c:270
+msgid "Step initialisation failed (unprocessed options)"
+msgstr "Passo di inizializzazione fallito (opzioni non processate)"
+
+#: src/request.c:566
+#, c-format
+msgid "Request: %s\n"
+msgstr "Richiesta: %s\n"
+
+#: src/request.c:702
+#, c-format
+msgid "Shrunk to: %s\n"
+msgstr "Ridotto a: %s\n"
+
+#: src/request.c:806 src/request.c:912
+#, c-format
+msgid "Unrecognised surface name `%s'"
+msgstr "Nome di surface non riconosciuta `%s'"
+
+#: src/request.c:884
+#, c-format
+msgid "No way to recode from `%s' to `%s'"
+msgstr "Nessuno modo per ricodificare da `%s' a `%s'"
+
+#: src/request.c:992
+msgid "Expecting `..' in request"
+msgstr "Atteso `..' nella richiesta"
+
+#: src/task.c:751 src/task.c:915
+#, c-format
+msgid "Child process wait status is 0x%0.2x"
+msgstr "Lo stato di attesa del processo figlio è 0x%0.2x"
similarity index 100%
rename from po/nl.gmo
rename to i18n/nl.mo
similarity index 100%
rename from po/nl.po
rename to i18n/nl.po
diff --git a/i18n/pl.mo b/i18n/pl.mo
new file mode 100644 (file)
index 0000000..fdc7f7a
Binary files /dev/null and b/i18n/pl.mo differ
similarity index 68%
rename from po/pl.po
rename to i18n/pl.po
index b3166511c545c2f378ce00aca1687fb519f5c605..5703f00a87e286acfb508a27ab78e44cf4ad200a 100644 (file)
--- a/po/pl.po
@@ -1,13 +1,13 @@
 # Polish translations for the GNU recode messages
 # Copyright (C) 1996 Free Software Foundation, Inc.
-# Pawe³ Krawczyk <kravietz@pipeta.chemia.pk.edu.pl>, 1996
+# Pawe³ Krawczyk <kravietz@ceti.pl>, 1996, 1997, 1998, 1999
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: recode 3.4.2\n"
+"Project-Id-Version: recode 3.4r\n"
 "POT-Creation-Date: 1999-05-18 08:46-0400\n"
-"PO-Revision-Date: 1996-08-27 21:45+0100\n"
-"Last-Translator: Pawe³ Krawczyk <kravietz@pipeta.chemia.pk.edu.pl>\n"
+"PO-Revision-Date: 1999-05-26 14:49+02:00\n"
+"Last-Translator: Pawe³ Krawczyk <kravietz@ceti.pl>\n"
 "Language-Team: Polish <pl@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
@@ -15,43 +15,40 @@ msgstr ""
 
 #. Dump all characters.
 #: src/debug.c:287
-msgid ""
-"UCS2   Mne   Description\n"
-"\n"
-msgstr ""
+msgid "UCS2   Mne   Description\n\n"
+msgstr "UCS2   Mne   Description\n\n"
 
 #: src/main.c:140
 msgid "No error"
-msgstr ""
+msgstr "Brak b³êdu"
 
 #: src/main.c:143
 msgid "Non canonical input"
-msgstr ""
+msgstr "Dane wej¶ciowe nie s± kanoniczne"
 
 #: src/main.c:146
-#, fuzzy
 msgid "Ambiguous output"
-msgstr "Nierozpoznany format `%s'"
+msgstr "Dane wyj¶ciowe s± dwuznaczne"
 
 #: src/main.c:149
 msgid "Untranslatable input"
-msgstr ""
+msgstr "Dane wej¶ciowe nie mog± byæ przet³umaczone"
 
 #: src/main.c:152
 msgid "Invalid input"
-msgstr ""
+msgstr "B³êdne dane wej¶ciowe"
 
 #: src/main.c:155
 msgid "System detected problem"
-msgstr ""
+msgstr "System wykry³ problem"
 
 #: src/main.c:158
 msgid "Misuse of recoding library"
-msgstr ""
+msgstr "B³êdne u¿ycie biblioteki przekodowuj±cej"
 
 #: src/main.c:161
 msgid "Internal recoding bug"
-msgstr ""
+msgstr "Wyst±pi³ wewnêtrzny b³±d przekodowania"
 
 #: src/main.c:206
 msgid ""
@@ -69,12 +66,12 @@ msgid ""
 "along with this program; if not, write to the Free Software Foundation,\n"
 "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 msgstr ""
-"Ten program jest darmowy; mo¿esz rozprowadzaæ go i/lub modyfikowaæ "
-"zachowuj±c\n"
-"warunki Powszechnej Licencji Publicznej GNU (General Public Licence), \n"
-"opublikowanej przez Free Software Foundation, w wersji 2 lub wy¿szej.\n"
+"Ten program jest darmowy; mo¿esz rozprowadzaæ go i/lub modyfikowaæ\n"
+"zachowuj±c warunki Powszechnej Licencji Publicznej GNU (General Public\n"
+"Licence), opublikowanej przez Free Software Foundation, w wersji 2 lub\n"
+"wy¿szej.\n"
 "\n"
-"program ten jest rozprowadzany w nadziei, ¿e bêdzie przydatny,\n"
+"Program ten jest rozprowadzany w nadziei, ¿e bêdzie przydatny,\n"
 "ale BEZ ¯ADNEJ GWARANCJI, nawet bez domy¶lnej gwarancji SPRZEDAWALNO¦CI\n"
 "lub PRZYDATNO¦CI DO KONKRETNYCH ZASTOSOWAÑ. Szczegó³y znajdziesz\n"
 "w Powszechnej Licencji Publicznej GNU.\n"
@@ -86,21 +83,19 @@ msgstr ""
 #: src/main.c:231
 #, c-format
 msgid "Try `%s %s' for more information.\n"
-msgstr "Spróbuj `%s %s' po wiêcej informacji.\n"
+msgstr "Polecenie `%s %s' wy¶wietli wiêcej informacji.\n"
 
 #: src/main.c:235
-msgid ""
-"Free `recode' converts files between various character sets and surfaces.\n"
+msgid "Free `recode' converts files between various character sets and surfaces.\n"
 msgstr ""
+"Program `recode' konwertuje pliki pomiêdzy ró¿nymi zestawami znaków\n"
+"i sposobami kodowania.\n"
 
+# REQUEST t³umaczê wszêdzie konsekwentnie jako POLECENIE, a nie '¿±danie'
 #: src/main.c:239
-#, fuzzy, c-format
-msgid ""
-"\n"
-"Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
-msgstr ""
-"\n"
-"Sk³adnia: %s [OPCJA]... [ZESTAW_ZNAKÓW]\n"
+#, c-format
+msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
+msgstr "\nSk³adnia: %s [OPCJA]... [ [ZESTAW_ZNAKÓW] | POLECENIE [PLIK]... ]\n"
 
 #: src/main.c:242
 msgid ""
@@ -108,14 +103,16 @@ msgid ""
 "If a long option shows an argument as mandatory, then it is mandatory\n"
 "for the equivalent short option also.  Similarly for optional arguments.\n"
 msgstr ""
+"\n"
+"Je¶li argumenty s± obowi±zkowe dla d³ugich wersji opcji, to s± one równie¿\n"
+"obowi±zkowe dla krótkich wersji. Analogicznie dla argumentów opcjonalnych.\n"
 
 #: src/main.c:248
 msgid ""
 "\n"
 "Listings:\n"
 "  -l, --list[=FORMAT]        list one or all known charsets\n"
-"  -k, --known=PAIRS          restrict charsets according to known PAIRS "
-"list\n"
+"  -k, --known=PAIRS          restrict charsets according to known PAIRS list\n"
 "  -h, --header[=[LN/]NAME]   write table NAME on stdout using LN, then exit\n"
 "  -F, --freeze-tables        write out a C module holding all tables\n"
 "  -T, --find-subsets         report all charsets being subset of others\n"
@@ -123,6 +120,21 @@ msgid ""
 "      --help                 display this help and exit\n"
 "      --version              output version information and exit\n"
 msgstr ""
+"\n"
+"Listy:\n"
+"  -l, --list[=FORMAT]        wy¶wietla jeden lub wszystkie znane zestawy\n"
+"                             znaków\n"
+"  -k, --known=PARY           ogranicza listê zestawów do znanych PAR\n"
+"  -h, --header[=[LN/]NAZWA]  wy¶wietla tablicê NAZWA na standardowe wyj¶cie\n"
+"                             u¿ywaj±c LN i koñczy pracê\n"
+"  -F, --freeze-table         wy¶wietla modu³ w C zawieraj±cy wszystkie\n"
+"                             tablice\n"
+"  -T, --find-subsets         wy¶wietla wszystkie zestawy bêd±ce podzbiorami\n"
+"                             innych zestawów\n"
+"  -C, --copyright            wy¶wietla informacje o prawach autorskich\n"
+"                             oraz warunkach kopiowania\n"
+"      --version              wy¶wietla wersjê programu i koñczy pracê\n"
+"      --help                 wy¶wietla ten tekst pomocy i koñczy pracê\n"
 
 #: src/main.c:261
 msgid ""
@@ -135,16 +147,25 @@ msgid ""
 "  -i, --sequence=files    use intermediate files for sequencing passes\n"
 "      --sequence=memory   use memory buffers for sequencing passes\n"
 msgstr ""
+"\n"
+"Tryby pracy:\n"
+"\n"
+"  -v, --verbose           oznajmia wykonywane kroki oraz postêp pracy\n"
+"  -q, --quiet, --silent   nie wy¶wietla komunikatów o nieistotnych\n"
+"                          konwersjach\n"
+"  -f, --force             wymusza przekodowanie nawet je¶li jest ono\n"
+"                          nieodwracalne\n"
+"  -t, --touch             uaktualnia czas plików po przekodowaniu\n"
+"  -i, --sequence=pliki    u¿ywa plików tymczasowych miêdzy etapami\n"
+"      --sequence=memory   u¿ywa buforów w pamiêci miêdzy etapami\n"
 
 #: src/main.c:273
 msgid "  -p, --sequence=pipe     use pipe machinery for sequencing passes\n"
-msgstr ""
-"  -p, --sequence=pipe     u¿ycie strumieni w przebiegach sekwencyjnych\n"
+msgstr "  -p, --sequence=pipe     u¿ywa potoków miêdzy etapami\n"
 
 #: src/main.c:278
-#, fuzzy
 msgid "  -p, --sequence=pipe     same as -i (on this system)\n"
-msgstr "  -p, --sequence=pipe     identyczne jak -o (w tym systemie)\n"
+msgstr "  -p, --sequence=pipe     identyczne jak -i (w tym systemie)\n"
 
 #: src/main.c:283
 msgid ""
@@ -157,6 +178,18 @@ msgid ""
 "  -g, --graphics         approximate IBMPC rulers by ASCII graphics\n"
 "  -x, --ignore=CHARSET   ignore CHARSET while choosing a recoding path\n"
 msgstr ""
+"\n"
+"Modyfikacja parametrów pracy:\n"
+"\n"
+"  -s, --strict           u¿ywa ¶cis³ego mapowania, nawet dla nie¶cis³ych\n"
+"                         znaków\n"
+"  -d, --diacritics       konwertuje tylko znaki diakrytyczne oraz symbole\n"
+"                         znaków (takie jak w HTML i LaTeX)\n"
+"  -c, --colons           u¿ywa dwukropków zamiast cudzys³owów dla oznaczenia\n"
+"                         umlautu\n"
+"  -g, --graphics         próbuje przybli¿aæ ramki IBMPC znakami ASCII\n"
+"  -x, --ignore=ZESTAW    ignoruje ZESTAW znaków podczas okre¶lania drogi\n"
+"                         przekodowania\n"
 
 #: src/main.c:294
 msgid ""
@@ -164,42 +197,58 @@ msgid ""
 "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n"
 "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n"
 msgstr ""
+"\n"
+"Bez FORMATu lub ZESTAWu, opcja -l wy¶wietla dostêpne zestawy i sposoby\n"
+"kodowania znaków. FORMAT to `decimal', `octal', `hexadecimal' lub `full',\n"
+"(lub jedna z liter `dohf').\n"
 
 #: src/main.c:302
 #, c-format
-msgid ""
-"Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
+msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
 msgstr ""
+"Je¶li zmienna ¶rodowiskowa DEFAULT_CHARSET nie jest ustawiona, domy¶lnym\n"
+"zestawem znaków jest `%s'.\n"
 
 #: src/main.c:308
 msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n"
 msgstr ""
+"ZESTAW znaków nie ma warto¶ci domy¶lnej, ustaw zmienn± ¶rodowiskow±\n"
+"DEFAULT_CHARSET.\n"
 
 #: src/main.c:313
 msgid ""
 "With -k, possible before charsets are listed for the given after CHARSET,\n"
-"both being tabular charsets, with PAIRS of the form "
-"`BEF1:AFT1,BEF2:AFT2,...'\n"
+"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n"
 "and BEFs and AFTs being codes are given as decimal numbers.\n"
 msgstr ""
+"Je¶li podano opcjê -k, program wy¶wietla zestawy znaków z których mo¿na\n"
+"dokonaæ konwersji do podanego ZESTAWu docelowego. Oba s± stabelaryzowanymi\n"
+"zestawami znaków z PARAmi postaci `SK¡D1:DOK¡D1,SK¡D2:DOK¡D2...', gdzie\n"
+"SK¡D i DOK¡D s± kodami podanymi jako liczby dziesiêtne.\n"
 
 #: src/main.c:318
-msgid ""
-"LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
+msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
 msgstr ""
+"LN jest jêzykiem programowania, do wyboru `c', `perl' lub `po'.\n"
+"Domy¶ln± warto¶ci± jest `c'.\n"
 
 #: src/main.c:321
 msgid ""
 "\n"
-"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is "
-"ENCODING[..ENCODING]...\n"
-"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like "
-"BEFORE..AFTER,\n"
+"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n"
+"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n"
 "with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual\n"
-"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a "
-"/\n"
+"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n"
 "with an empty surface name means no surfaces at all.  See the manual.\n"
 msgstr ""
+"\n"
+"POLecenie to PODPOL[,PODPOL]...; PODPOLecenie to ENKOD[..ENKOD]...\n"
+"ENKOD to [ZESTAW][/[KODOWANIE]]...; POLecenie czêsto ma postaæ SK¡D..DOK¡D,\n"
+"gdzie SK¡D i DOK¡D s± zestawami znaków. W miejsce pominiêtego zestawu\n"
+"przyjmowany jest zestaw domy¶lny; W miejsce pominiêtego [/KODOWANIA]\n"
+"przyjmowany jest domy¶lny sposób kodowania dla danego ZESTawu; sam znak\n"
+"/ bez podanego KODOWANIA oznacza brak jakiegokolwiek kodowania. Szczegó³y\n"
+"w dokumentacji.\n"
 
 #: src/main.c:329
 msgid ""
@@ -208,12 +257,15 @@ msgid ""
 "Each FILE is recoded over itself, destroying the original.  If no\n"
 "FILE is specified, then act as a filter and recode stdin to stdout.\n"
 msgstr ""
+"\n"
+"Je¶li nie podano opcji -i ani -p, przyjmowana jest opcja -p je¶li nie\n"
+"podano PLIKu, w przeciwnym razie -i. Ka¿dy PLIK jest nadpisywany z utrat±\n"
+"oryginalnej zawarto¶ci. Je¶li nie podano PLIKu, program dzia³a jako filtr\n"
+"przekodowuj±c stdin na stdout.\n"
 
 #: src/main.c:335
-msgid ""
-"\n"
-"Report bugs to <recode-bugs@iro.umontreal.ca>.\n"
-msgstr ""
+msgid "\nReport bugs to <recode-bugs@iro.umontreal.ca>.\n"
+msgstr "\nProsimy o zg³aszanie b³êdów na adres <recode-bugs@iro.umontreal.ca>.\n"
 
 #: src/main.c:431
 #, c-format
@@ -226,15 +278,15 @@ msgid "Unknown sequence `%s'"
 msgstr "Nieznana sekwencja `%s'"
 
 #: src/main.c:465 src/main.c:523
-#, fuzzy, c-format
+#, c-format
 msgid "Ambiguous language `%s'"
-msgstr "Nierozpoznany zestaw znaków `%s'"
+msgstr "Nierozpoznany jêzyk `%s'"
 
 #. -1
 #: src/main.c:469 src/main.c:527
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown language `%s'"
-msgstr "Nieznany zestaw znaków `%s'"
+msgstr "Nieznany jêzyk `%s'"
 
 #: src/main.c:561
 #, c-format
@@ -247,32 +299,31 @@ msgid "Unknown format `%s'"
 msgstr "Nieznany format `%s'"
 
 #: src/main.c:622
-msgid ""
-"\n"
-"Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
-msgstr ""
+msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+msgstr "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
 
 #: src/main.c:626
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
+"Oprogramowanie darmowe; warunki jego kopiowania znajdziesz w kodzie\n"
+"¼ród³owym. Nie podlega ¿adnej gwarancji, nawet gwarancji przydatno¶ci\n"
+"do jakiegokolwiek zastosowania lub sprzeda¿y.\n"
 
 #: src/main.c:630
-msgid ""
-"\n"
-"Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
-msgstr ""
+msgid "\nWritten by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+msgstr "\nAutorem jest Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
 
 #: src/main.c:775
 #, c-format
 msgid "Deprecated syntax, please prefer `%s'"
-msgstr ""
+msgstr "Odradza siê stosowanie tej sk³adni, proszê u¿ywaæ `%s'"
 
 #: src/main.c:781
 #, c-format
 msgid "Erroneous request `%s'"
-msgstr ""
+msgstr "B³êdne polecenie `%s'"
 
 #: src/main.c:878
 #, c-format
@@ -286,17 +337,17 @@ msgstr " sko
 #: src/main.c:924
 #, c-format
 msgid " failed: %s in %s..%s\n"
-msgstr ""
+msgstr " nie powiod³o siê: %s w %s..%s\n"
 
 #: src/main.c:931
 #, c-format
 msgid "%s failed: %s in %s..%s"
-msgstr ""
+msgstr "%s nie powiod³o siê: %s w %s..%s"
 
 #: src/main.c:954
-#, fuzzy, c-format
+#, c-format
 msgid "%s in %s..%s"
-msgstr "Nieznana sekwencja `%s'"
+msgstr "%s w %s..%s"
 
 #: src/names.c:317
 #, c-format
@@ -304,9 +355,9 @@ msgid "Charset %s already exists and is not %s"
 msgstr "Zestaw %s ju¿ istnieje i nie jest %s"
 
 #: src/names.c:819
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot list `%s', no names available for this charset"
-msgstr "Nie mogê wylistowaæ `%s', brak nazw ISO 10646 dla tego zestawu"
+msgstr "Nie mogê wylistowaæ `%s', brak nazw dla tego zestawu znaków"
 
 #. code counter
 #. expected value for code counter
@@ -314,28 +365,28 @@ msgstr "Nie mog
 #. insert a while line before printing
 #. Print the long table according to explode data.
 #: src/names.c:974 src/names.c:1020
-#, fuzzy, c-format
+#, c-format
 msgid "Dec  Oct Hex   UCS2  Mne  %s\n"
-msgstr "dec  okt hex    zn   %s\n"
+msgstr "Dec  Okt Hex   UCS2  Mne  %s\n"
 
 #: src/names.c:1039
-#, fuzzy, c-format
+#, c-format
 msgid "Sorry, no names available for `%s'"
-msgstr "Brak nazw ISO 10646 dla `%s'"
+msgstr "Brak nazw dla `%s'"
 
 #: src/outer.c:95
 #, c-format
 msgid "Resurfacer set more than once for `%s'"
-msgstr ""
+msgstr "Procedura rekoduj±ca zosta³a ustawiona wiêcej ni¿ raz dla `%s'"
 
 #: src/outer.c:102
 #, c-format
 msgid "Unsurfacer set more than once for `%s'"
-msgstr ""
+msgstr "Procedura dekoduj±ca zosta³a ustawiona wiêcej ni¿ raz dla `%s'"
 
 #: src/recode.c:115 src/recode.c:127
 msgid "Virtual memory exhausted"
-msgstr ""
+msgstr "Pamiêæ wirtualna wyczerpana"
 
 #: src/recode.c:155
 #, c-format
@@ -357,16 +408,15 @@ msgid "Following diagnostics for `%s' to `%s'"
 msgstr "Diagnostyka dla `%s' do `%s'"
 
 #: src/recode.c:229 src/recode.c:241
-#, fuzzy, c-format
+#, c-format
 msgid "Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>"
-msgstr "Para nr %d: { %3d, %3d } konflikt z { %3d, %3d }"
+msgstr "Para nr %d: < %3d, %3d > konflikt z < %3d, %3d >"
 
 #: src/recode.c:272
 msgid "Cannot complete table from set of known pairs"
 msgstr "Nie mogê utworzyæ tablicy z zestawu znanych par"
 
 #: src/recode.c:492
-#, fuzzy
 msgid "Identity recoding, not worth a table"
 msgstr "Przekodowanie jest proste, tablica nie jest potrzebna"
 
@@ -376,14 +426,14 @@ msgstr "Przekodowanie jest zbyt skomplikowane na zwyk
 
 #. Print the header of the header file.
 #: src/recode.c:531
-#, fuzzy, c-format
+#, c-format
 msgid "%sConversion table generated mechanically by Free `%s' %s"
-msgstr "   Wygenerowane automatycznie przez GNU %s %s.\n"
+msgstr "%sTablica przekodowañ wygenerowana automatycznie przez GNU `%s' %s."
 
 #: src/recode.c:533
-#, fuzzy, c-format
+#, c-format
 msgid "%sfor sequence %s.%s"
-msgstr "Nieznana sekwencja `%s'"
+msgstr "%sdla sekwencji %s.%s"
 
 #: src/recode.c:724
 msgid "No table to print"
@@ -394,90 +444,71 @@ msgid "reversible"
 msgstr "odwracalna"
 
 #: src/request.c:37
-#, fuzzy, c-format
+#, c-format
 msgid "%s to %s"
-msgstr "Nieznana sekwencja `%s'"
+msgstr "%s na %s"
 
 #: src/request.c:38 src/request.c:40
 msgid "byte"
-msgstr ""
+msgstr "bajt"
 
 #: src/request.c:39 src/request.c:41
 msgid "ucs2"
-msgstr ""
+msgstr "ucs2"
 
 #: src/request.c:39 src/request.c:41
-#, fuzzy
 msgid "variable"
-msgstr "odwracalna"
+msgstr "zmienne"
 
 #: src/request.c:112
 msgid "*Unachievable*"
-msgstr ""
+msgstr "*Nieosi±galne*"
 
 #: src/request.c:114
 msgid "*mere copy*"
-msgstr ""
+msgstr "*zwyk³a kopia*"
 
 #: src/request.c:244
 msgid "Virtual memory exhausted!"
-msgstr ""
+msgstr "Pamiêæ wirtualna wyczerpana!"
 
 #: src/request.c:263
 msgid "Step initialisation failed"
-msgstr ""
+msgstr "Inicjalizacja kroku nie powiod³a siê"
 
 #: src/request.c:270
 msgid "Step initialisation failed (unprocessed options)"
-msgstr ""
+msgstr "Inicjalizacja kroku nie powiod³a siê (nieprzetworzone opcje)"
 
 #: src/request.c:566
 #, c-format
 msgid "Request: %s\n"
-msgstr ""
+msgstr "Polecenie: %s\n"
 
 #: src/request.c:702
 #, c-format
 msgid "Shrunk to: %s\n"
-msgstr ""
+msgstr "Zmniejszony do: %s\n"
 
 #: src/request.c:806 src/request.c:912
 #, c-format
 msgid "Unrecognised surface name `%s'"
-msgstr ""
+msgstr "Nierozpoznana nazwa standardu kodowania `%s'"
 
 #: src/request.c:884
-#, fuzzy, c-format
+#, c-format
 msgid "No way to recode from `%s' to `%s'"
-msgstr "Niemo¿liwe przekodowanie z %s na %s"
+msgstr "Przekodowanie `%s' na `%s' jest niemo¿liwe"
 
 #: src/request.c:992
 msgid "Expecting `..' in request"
-msgstr ""
+msgstr "Spodziewane `..' w poleceniu"
 
 #: src/task.c:751 src/task.c:915
 #, c-format
 msgid "Child process wait status is 0x%0.2x"
 msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 
-#~ msgid "Hash stats: %d names using %d buckets out of %d\n"
-#~ msgstr "Wyniki przeszukiwania: %d u¿ywa %d spo¶ród %d zbiorów\n"
-
-#~ msgid "Currently, -s is ignored when -g is selected"
-#~ msgstr "Opcja -s jest wy³±czana przez opcjê -g"
-
-#~ msgid "one to one"
-#~ msgstr "jeden na jeden"
-
-#~ msgid "one to many"
-#~ msgstr "jeden na wiele"
-
-#~ msgid "many to one"
-#~ msgstr "wiele na jeden"
-
-#~ msgid "many to many"
-#~ msgstr "wiele na wiele"
-
 #~ msgid "   Each input char transforms into an output string,\n"
 #~ msgstr "   Ka¿dy znak wej¶ciowy jest konwertowany na ³añcuch wyj¶ciowy,\n"
 
@@ -485,9 +516,7 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ msgstr "   Ka¿dy znak wej¶ciowy jest konwertowany na ³añcuch wyj¶ciowy.\n"
 
 #~ msgid "   Programming is needed to handle multichar input.\n"
-#~ msgstr ""
-#~ "   Do obs³ugi kodów wieloznakowych potrzebna jest umiejêtno¶æ "
-#~ "programowania.\n"
+#~ msgstr "   Do obs³ugi kodów wieloznakowych potrzebna jest umiejêtno¶æ programowania.\n"
 
 #~ msgid "   The recoding might not be reversible.\n"
 #~ msgstr "   Konwersja mo¿e byæ nieodwracalna.\n"
@@ -496,9 +525,7 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ msgstr "   Konwersja powinna byæ odwracalna.\n"
 
 #~ msgid "   programming is needed to handle multichar input.\n"
-#~ msgstr ""
-#~ "   do obs³ugi kodów wieloznakowych potrzebna jest umiejêtno¶æ "
-#~ "programowania.\n"
+#~ msgstr "   do obs³ugi kodów wieloznakowych potrzebna jest umiejêtno¶æ programowania.\n"
 
 #~ msgid "  UNACHIEVABLE\n"
 #~ msgstr "  NIEOSI¡GALNE\n"
@@ -518,6 +545,12 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ msgid "Cannot auto check the ignored charset"
 #~ msgstr "Nie mogê automatycznie sprawdziæ ignorowanego zestawu znaków"
 
+#~ msgid "Currently, -s is ignored when -g is selected"
+#~ msgstr "Opcja -s jest wy³±czana przez opcjê -g"
+
+#~ msgid "Hash stats: %d names using %d buckets out of %d\n"
+#~ msgstr "Wyniki przeszukiwania: %d u¿ywa %d spo¶ród %d zbiorów\n"
+
 #~ msgid "Internal error - strategy undecided"
 #~ msgstr "B³±d wewnêtrzy - niezdecydowana strategia"
 
@@ -551,10 +584,8 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ msgid "  -o, --sequence=popen    same as -i (on this system)\n"
 #~ msgstr " -o, --sequence=popen    identyczne jak -i (w tym systemie)\n"
 
-#~ msgid ""
-#~ "  -o, --sequence=popen    use popen machinery for sequencing passes\n"
-#~ msgstr ""
-#~ "  -o, --sequence=popen    u¿ycie techniki popen w przebiegach sekwencyjnych\n"
+#~ msgid "  -o, --sequence=popen    use popen machinery for sequencing passes\n"
+#~ msgstr "  -o, --sequence=popen    u¿ycie techniki popen w przebiegach sekwencyjnych\n"
 
 #~ msgid ""
 #~ "  -q, --quiet, --silent   inhibit messages about irreversible recodings\n"
@@ -568,10 +599,8 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ "FILE is specified, then act as a filter and recode stdin to stdout.\n"
 #~ msgstr ""
 #~ " -q, --quiet, --silent    blokuj komunikaty o nieodwracalnych konwersjach\n"
-#~ " -s, --strict        u¿ywaj ¶cis³ych odwzorowañ, nawet dla w±tpliwych "
-#~ "znaków\n"
-#~ " -t, --touch              uaktualnij datê przekodowanego, podstawionego "
-#~ "pliku\n"
+#~ " -s, --strict        u¿ywaj ¶cis³ych odwzorowañ, nawet dla w±tpliwych znaków\n"
+#~ " -t, --touch              uaktualnij datê przekodowanego, podstawionego pliku\n"
 #~ " -v, --verbose            pokazuj kolejne kroki i postêp konwersji\n"
 #~ " -x, --ignore=ZESTAW      ignoruj ZESTAW znaków przy wyborze konwersji\n"
 #~ "\n"
@@ -597,8 +626,7 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ "FORMAT is a word among decimal, octal, hexadecimal or full (which may be\n"
 #~ "abbreviated to one of `dohf'), it defaults to just the canonical name.\n"
 #~ "With -k, possible before charsets are listed for the given after CHARSET,\n"
-#~ "both being RFC1345 charsets, with PAIRS of the form "
-#~ "`BEF1:AFT1,BEF2:AFT2,...\n"
+#~ "both being RFC1345 charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...\n"
 #~ "and BEFs and AFTs being codes.  All codes are given as decimal numbers.\n"
 #~ msgstr ""
 #~ "Obowi±zkowe lub opcjonalne argumenty d³ugich form opcji maj± tak± sam±\n"
@@ -617,8 +645,7 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ "z zestawów RFC1345, postaci: PRZED1:PO2,PRZED2:PO2,...\n"
 
 #~ msgid ""
-#~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the "
-#~ "Texinfo\n"
+#~ "Option -l with no FORMAT nor CHARSET list all charsets, also see the Texinfo\n"
 #~ "documentation.  My preferred charsets are (each user has preferences):\n"
 #~ "\n"
 #~ "  ascii-bs   ASCII (7-bit), using backspace to apply diacritics\n"
@@ -648,21 +675,27 @@ msgstr "Stan oczekiwania procesu potomnego wynosi 0x%0.2x"
 #~ msgstr ""
 #~ "\n"
 #~ "  -c, --colons            u¿ywaj dwukropków zamiast cudzys³owów\n"
-#~ "  -d, --diacritics        ogranicz konwersjê do zn. diakryt. itp. dla "
-#~ "LaTeXa\n"
+#~ "  -d, --diacritics        ogranicz konwersjê do zn. diakryt. itp. dla LaTeXa\n"
 #~ "  -f, --force             wymuszaj konwersje, nawet je¶li s± nieodwracalne\n"
 #~ "                          (UWAGA: w tej wersji -f zawsze obowi±zuje)\n"
 #~ "  -g, --graphics          przybli¿aj ramki IBMPC za pomoc± znaków ASCII\n"
 #~ "  -h, --header[=NAZWA]    wypisz zestaw NAZWA w postaci kodu C na stdout\n"
-#~ "  -i, --sequence=pliki    u¿ywaj plików po¶rednich do przebiegów "
-#~ "sekwencyjnych\n"
+#~ "  -i, --sequence=pliki    u¿ywaj plików po¶rednich do przebiegów sekwencyjnych\n"
 
-#~ msgid ""
-#~ "\n"
-#~ "Usage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n"
-#~ msgstr ""
-#~ "\n"
-#~ "Sk³adnia: %s [OPCJA]... [PRZED]:[PO] [PLIK]...\n"
+#~ msgid "\nUsage: %s [OPTION]... [BEFORE]:[AFTER] [FILE]...\n"
+#~ msgstr "\nSk³adnia: %s [OPCJA]... [PRZED]:[PO] [PLIK]...\n"
+
+#~ msgid "many to many"
+#~ msgstr "wiele na wiele"
+
+#~ msgid "many to one"
+#~ msgstr "wiele na jeden"
+
+#~ msgid "one to many"
+#~ msgstr "jeden na wiele"
+
+#~ msgid "one to one"
+#~ msgstr "jeden na jeden"
 
 #~ msgid "steps: %d"
 #~ msgstr "kroków: %d"
similarity index 100%
rename from po/pt.gmo
rename to i18n/pt.mo
similarity index 100%
rename from po/pt.po
rename to i18n/pt.po
similarity index 97%
rename from po/recode.pot
rename to i18n/recode.pot
index b0ff1dc0eb9c335e8b2c06b4b28a0c32152f578a..fdad93d5117c02d0880ab1789ed0444f7cb67368 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 1999-05-18 08:46-0400\n"
+"POT-Creation-Date: 1999-12-19 23:12-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -257,28 +257,28 @@ msgstr ""
 msgid "Erroneous request `%s'"
 msgstr ""
 
-#: src/main.c:878
+#: src/main.c:879
 #, c-format
 msgid "Recoding %s..."
 msgstr ""
 
-#: src/main.c:888
+#: src/main.c:889
 msgid " done\n"
 msgstr ""
 
-#: src/main.c:924
+#: src/main.c:930
 #, c-format
-msgid " failed: %s in %s..%s\n"
+msgid " failed: %s in step `%s..%s'\n"
 msgstr ""
 
-#: src/main.c:931
+#: src/main.c:937
 #, c-format
-msgid "%s failed: %s in %s..%s"
+msgid "%s failed: %s in step `%s..%s'"
 msgstr ""
 
-#: src/main.c:954
+#: src/main.c:960
 #, c-format
-msgid "%s in %s..%s"
+msgid "%s in step `%s..%s'"
 msgstr ""
 
 #: src/names.c:317
similarity index 100%
rename from po/sl.gmo
rename to i18n/sl.mo
similarity index 100%
rename from po/sl.po
rename to i18n/sl.po
similarity index 50%
rename from po/sv.gmo
rename to i18n/sv.mo
index 2d20006cef080b88f3205e5e4f3eb01d5383ace1..92992f84c4ecca89ffcc55b591f13c54f9f0e9f6 100644 (file)
Binary files a/po/sv.gmo and b/i18n/sv.mo differ
similarity index 80%
rename from po/sv.po
rename to i18n/sv.po
index ff06d686ec0ec575976aa29034b96b31551089ff..7392c43231dd10fd4ac2126bd8ed105cce41b4be 100644 (file)
--- a/po/sv.po
@@ -1,13 +1,13 @@
 # Swedish messages for recode
 # Copyright © 1996, 1998 Free Software Foundation, Inc.
 # Jan Djärv <Jan.Djarv@mbox200.swipnet.se>, 1996, 1998.
-# $Revision: 1.12 $
+# $Revision: 1.14 $
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: recode 3.4l\n"
+"Project-Id-Version: recode 3.5\n"
 "POT-Creation-Date: 1999-05-18 08:46-0400\n"
-"PO-Revision-Date: 1998-12-29 23:20 +01:00\n"
+"PO-Revision-Date: 1999-10-16 13:42 +02:00\n"
 "Last-Translator: Jan Djärv <Jan.Djarv@mbox200.swipnet.se>\n"
 "Language-Team: Swedish <sv@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -16,10 +16,8 @@ msgstr ""
 
 #. Dump all characters.
 #: src/debug.c:287
-msgid ""
-"UCS2   Mne   Description\n"
-"\n"
-msgstr ""
+msgid "UCS2   Mne   Description\n\n"
+msgstr "UCS2   Mne   Beskrivning\n\n"
 
 #: src/main.c:140
 msgid "No error"
@@ -31,16 +29,15 @@ msgstr "Indata ej kanonisk"
 
 #: src/main.c:146
 msgid "Ambiguous output"
-msgstr "Tvetydigt utdata"
+msgstr "Tvetydig utdata"
 
 #: src/main.c:149
-#, fuzzy
 msgid "Untranslatable input"
-msgstr "Oöversättbart indata"
+msgstr "Oöversättbar indata"
 
 #: src/main.c:152
 msgid "Invalid input"
-msgstr "Felaktigt indata"
+msgstr "Felaktig indata"
 
 #: src/main.c:155
 msgid "System detected problem"
@@ -74,8 +71,7 @@ msgstr ""
 "informativt syfte. För alla juridiska tolkningar gäller den engelska\n"
 "originaltexten.\n"
 "\n"
-"Detta program är fri programvara.  Du kan distribuera den och/eller "
-"modifiera\n"
+"Detta program är fri programvara.  Du kan distribuera den och/eller modifiera\n"
 "den under villkoren i GNU General Public License, publicerad av\n"
 "Free Software Foundation, antingen version 2 eller (om du så vill)\n"
 "någon senare version.\n"
@@ -86,8 +82,7 @@ msgstr ""
 "Public License för ytterligare information.\n"
 "\n"
 "Du bör ha fått en kopia av GNU General Public License\n"
-"tillsammans med detta program. Om inte, skriv till Free Software "
-"Foundation,\n"
+"tillsammans med detta program. Om inte, skriv till Free Software Foundation,\n"
 "Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 
 #: src/main.c:231
@@ -96,19 +91,13 @@ msgid "Try `%s %s' for more information.\n"
 msgstr "Försök med \"%s %s\" för mer information\n"
 
 #: src/main.c:235
-msgid ""
-"Free `recode' converts files between various character sets and surfaces.\n"
-msgstr ""
-"Fri \"recode\" konverterar filer mellan olika teckenuppsättningar och ytor\n"
+msgid "Free `recode' converts files between various character sets and surfaces.\n"
+msgstr "Fria \"recode\" konverterar filer mellan olika teckenuppsättningar och ytor\n"
 
 #: src/main.c:239
 #, c-format
-msgid ""
-"\n"
-"Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
-msgstr ""
-"\n"
-"Användning: %s [FLAGGA]... [ [TECKENUPPSÄTTNING] | BEGÄRAN [FIL]...]\n"
+msgid "\nUsage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n"
+msgstr "\nAnvändning: %s [FLAGGA]... [ [TECKENUPPSÄTTNING] | BEGÄRAN [FIL]...]\n"
 
 #: src/main.c:242
 msgid ""
@@ -118,16 +107,14 @@ msgid ""
 msgstr ""
 "\n"
 "Om en lång flagga har ett obligatoriskt argument så är argumentet även\n"
-"obligatoriskt för motsvarade korta flagga.  Motsvarande för valfria "
-"argument.\n"
+"obligatoriskt för motsvarade korta flagga.  Motsvarande för valfria argument.\n"
 
 #: src/main.c:248
 msgid ""
 "\n"
 "Listings:\n"
 "  -l, --list[=FORMAT]        list one or all known charsets\n"
-"  -k, --known=PAIRS          restrict charsets according to known PAIRS "
-"list\n"
+"  -k, --known=PAIRS          restrict charsets according to known PAIRS list\n"
 "  -h, --header[=[LN/]NAME]   write table NAME on stdout using LN, then exit\n"
 "  -F, --freeze-tables        write out a C module holding all tables\n"
 "  -T, --find-subsets         report all charsets being subset of others\n"
@@ -138,15 +125,13 @@ msgstr ""
 "\n"
 "Listningar:\n"
 "  -l, --list[=FORMAT]        visa en eller alla kända teckenuppsättningar\n"
-"  -k, --known=PAR            begränsa teckenuppsättningar till de i PAR "
-"listan\n"
+"  -k, --known=PAR            begränsa teckenuppsättningar till de i PAR listan\n"
 "  -h, --header[=[LN/]NAMN]   skriv tabell NAMN för LN till standard ut\n"
 "                             och avsluta.\n"
 "  -F, --freeze-tables        skriv ut en C modul med alla tabeller\n"
 "  -T, --find-subsets         skriv ut teckenuppsättningar som är delmängder\n"
 "                             av andra\n"
-"  -C, --copyright            visa copyrightinformation och "
-"kopieringsvillkor\n"
+"  -C, --copyright            visa copyrightinformation och kopieringsvillkor\n"
 "      --help                 visa denna hjälptext och avsluta\n"
 "      --version              visa versionsinformation och avsluta\n"
 
@@ -164,11 +149,9 @@ msgstr ""
 "\n"
 "Exekveringsalternativ:\n"
 "  -v, --verbose           förklara delsteg och rapportera framsteg\n"
-"  -q, --quiet, --silent   undertryck meddelanden om irreversibla "
-"omkodningar\n"
+"  -q, --quiet, --silent   undertryck meddelanden om irreversibla omkodningar\n"
 "  -f, --force             gör omkodning även när den är irreversibel\n"
-"  -t, --touch             gör \"touch\" på filer som omkodas över sig "
-"själva\n"
+"  -t, --touch             gör \"touch\" på filer som omkodas över sig själva\n"
 "  -i, --sequence=files    använd temporärfiler mellan delsteg\n"
 "      --sequence=memory   använd minnesbuffertar mellan delsteg\n"
 
@@ -200,36 +183,35 @@ msgstr ""
 "                         som för LN\n"
 "  -c, --colons           använd kolon istället för \" för trematecken\n"
 "  -g, --graphics         approximera linjer i IBMPC med ASCII grafik\n"
-"  -x, --ignore=CHARSET   ignorera CHARSET när en omkodningsväg väljs\n"
+"  -x, --ignore=TECKENUPPSÄTTNING\n"
+"                         ignorera TECKENUPPSÄTTNING när omkodningsväg väljs\n"
 
 #: src/main.c:294
-#, fuzzy
 msgid ""
 "\n"
 "Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n"
 "FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n"
 msgstr ""
 "\n"
-"Flagga -l utan FORMAT och CHARSET visar alla tillgängliga "
-"teckenuppsättningar\n"
-"och ytor.  FORMAT är \"decimal\", \"octal\", \"hexadecimal\" eller \"full\"\n"
-"(eller en av \"dohf\"), och CHARSET får då standardvärdet, som är \"%s\"\n"
+"Flagga -l utan FORMAT och TECKENUPPSÄTTNING visar alla tillgängliga\n"
+"teckenuppsättningar och ytor.  FORMAT är \"decimal\", \"octal\", \"hexadecimal\"\n"
+"eller \"full\" (eller en av \"dohf\").\n"
 
 #: src/main.c:302
 #, c-format
-msgid ""
-"Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
+msgid "Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n"
 msgstr ""
+"Om miljövariabeln DEFAULT_CHARSET inte är satt blir standardvärdet för\n"
+"TECKENUPPSÄTTNING \"%s\"\n"
 
 #: src/main.c:308
 msgid "CHARSET has no default, define DEFAULT_CHARSET in the environment.\n"
-msgstr ""
+msgstr "TECKENUPPSÄTTNING har inget standardvärde, sätt miljövariabeln DEFAULT_CHARSET.\n"
 
 #: src/main.c:313
 msgid ""
 "With -k, possible before charsets are listed for the given after CHARSET,\n"
-"both being tabular charsets, with PAIRS of the form "
-"`BEF1:AFT1,BEF2:AFT2,...'\n"
+"both being tabular charsets, with PAIRS of the form `BEF1:AFT1,BEF2:AFT2,...'\n"
 "and BEFs and AFTs being codes are given as decimal numbers.\n"
 msgstr ""
 "Med -k, möjliga startuppsättningar visas för den givna slutuppsättningen,\n"
@@ -238,33 +220,25 @@ msgstr ""
 "som anges med decimala tal.\n"
 
 #: src/main.c:318
-#, fuzzy
-msgid ""
-"LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
-msgstr ""
-"LN är ett programspråk, det kan vara \"c\" eller \"perl\".\n"
-"\"c\" är standardvärde\n"
+msgid "LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n"
+msgstr "LN är ett språk, det kan vara \"c\", \"perl\" eller \"po\"; \"c\" är standardvärde.\n"
 
 #: src/main.c:321
-#, fuzzy
 msgid ""
 "\n"
-"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is "
-"ENCODING[..ENCODING]...\n"
-"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like "
-"BEFORE..AFTER,\n"
+"REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...\n"
+"ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like BEFORE..AFTER,\n"
 "with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual\n"
-"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a "
-"/\n"
+"charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /\n"
 "with an empty surface name means no surfaces at all.  See the manual.\n"
 msgstr ""
 "\n"
 "BEGÄRAN är DELBEGÄRAN[,DELBEGÄRAN]..., DELBEGÄRAN är KODNING[..KODNING]...\n"
-"KODNING är [CHARSET][/[YTA]].... BEGÄRAN ser ofta ut som START..SLUT,\n"
-"där START och SLUT är teckenuppsättningar.  Ett utelämnat CHARSET innebär\n"
-"den normala teckenuppsättningen, en utelämnad [/YTA]... innebär den normala\n"
-"ytan för CHARSET.  Ett / utan ytnamn innebär ingen yta alls.  Se manualen\n"
-"för detaljer.\n"
+"KODNING är [TECKENUPPSÄTTNING][/[YTA]].... BEGÄRAN ser ofta ut som START..SLUT,\n"
+"där START och SLUT är teckenuppsättningar.  Ett utelämnat TECKENUPPSÄTTNING\n"
+"innebär den normala teckenuppsättningen,\n"
+"en utelämnad [/YTA]... innebär den normala ytan för TECKENUPPSÄTTNING.\n"
+"Ett / utan ytnamn innebär ingen yta alls.  Se manualen för detaljer.\n"
 
 #: src/main.c:329
 msgid ""
@@ -280,9 +254,7 @@ msgstr ""
 "till standard ut.\n"
 
 #: src/main.c:335
-msgid ""
-"\n"
-"Report bugs to <recode-bugs@iro.umontreal.ca>.\n"
+msgid "\nReport bugs to <recode-bugs@iro.umontreal.ca>.\n"
 msgstr ""
 "\n"
 "Rapportera fel till <recode-bugs@iro.umontreal.ca>.\n"
@@ -320,13 +292,8 @@ msgid "Unknown format `%s'"
 msgstr "Okänt format \"%s\""
 
 #: src/main.c:622
-#, fuzzy
-msgid ""
-"\n"
-"Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
-msgstr ""
-"\n"
-"Copyright © 1990, 92, 93, 94, 96, 1997 Free Software Foundation, Inc.\n"
+msgid "\nCopyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n"
+msgstr "\nCopyright © 1990, 92, 93, 94, 96, 97, 1999 Free Software Foundation, Inc.\n"
 
 #: src/main.c:626
 msgid ""
@@ -338,12 +305,8 @@ msgstr ""
 "ÄNDAMÅL.\n"
 
 #: src/main.c:630
-msgid ""
-"\n"
-"Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
-msgstr ""
-"\n"
-"Skriven av François Pinard <pinard@iro.umontreal.ca>.\n"
+msgid "\nWritten by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"
+msgstr "\nSkriven av François Pinard <pinard@iro.umontreal.ca>.\n"
 
 #: src/main.c:775
 #, c-format
@@ -387,8 +350,7 @@ msgstr "Teckenupps
 #: src/names.c:819
 #, c-format
 msgid "Cannot list `%s', no names available for this charset"
-msgstr ""
-"Kan inte visa \"%s\", inga namn tillgängliga för denna teckenuppsättning"
+msgstr "Kan inte visa \"%s\", inga namn tillgängliga för denna teckenuppsättning"
 
 #. code counter
 #. expected value for code counter
@@ -396,9 +358,9 @@ msgstr ""
 #. insert a while line before printing
 #. Print the long table according to explode data.
 #: src/names.c:974 src/names.c:1020
-#, fuzzy, c-format
+#, c-format
 msgid "Dec  Oct Hex   UCS2  Mne  %s\n"
-msgstr "dec  okt hex   tkn   UCS2   %s\n"
+msgstr "dec  okt hex   UCS2  mne  %s\n"
 
 #: src/names.c:1039
 #, c-format
@@ -408,12 +370,12 @@ msgstr "Ledsen, men det finns inga namn tillg
 #: src/outer.c:95
 #, c-format
 msgid "Resurfacer set more than once for `%s'"
-msgstr ""
+msgstr "Ytkodning satt mer än en gång för \"%s\""
 
 #: src/outer.c:102
 #, c-format
 msgid "Unsurfacer set more than once for `%s'"
-msgstr ""
+msgstr "Ytavkodning satt mer än en gång för \"%s\""
 
 #: src/recode.c:115 src/recode.c:127
 msgid "Virtual memory exhausted"
@@ -472,71 +434,70 @@ msgstr "Ingen tabell att skriva ut"
 
 #: src/request.c:35
 msgid "reversible"
-msgstr ""
+msgstr "reversibel"
 
 #: src/request.c:37
-#, fuzzy, c-format
+#, c-format
 msgid "%s to %s"
-msgstr "%s i %s..%s"
+msgstr "%s till %s"
 
 #: src/request.c:38 src/request.c:40
 msgid "byte"
-msgstr ""
+msgstr "byte"
 
 #: src/request.c:39 src/request.c:41
 msgid "ucs2"
-msgstr ""
+msgstr "usc2"
 
 #: src/request.c:39 src/request.c:41
 msgid "variable"
-msgstr ""
+msgstr "variabel"
 
 #: src/request.c:112
 msgid "*Unachievable*"
-msgstr ""
+msgstr "*Omöjligt*"
 
 #: src/request.c:114
 msgid "*mere copy*"
-msgstr ""
+msgstr "*endast kopiering*"
 
 #: src/request.c:244
-#, fuzzy
 msgid "Virtual memory exhausted!"
 msgstr "Virtuellt minne slut"
 
 #: src/request.c:263
 msgid "Step initialisation failed"
-msgstr ""
+msgstr "Steginitiering misslyckades"
 
 #: src/request.c:270
 msgid "Step initialisation failed (unprocessed options)"
-msgstr ""
+msgstr "Steginitiering misslyckades (obearbetade flaggor)"
 
 #: src/request.c:566
 #, c-format
 msgid "Request: %s\n"
-msgstr ""
+msgstr "Begäran: %s\n"
 
 #: src/request.c:702
 #, c-format
 msgid "Shrunk to: %s\n"
-msgstr ""
+msgstr "Krympte till: %s\n"
 
 #: src/request.c:806 src/request.c:912
 #, c-format
 msgid "Unrecognised surface name `%s'"
-msgstr ""
+msgstr "Okänt ytnamn: \"%s\""
 
 #: src/request.c:884
 #, c-format
 msgid "No way to recode from `%s' to `%s'"
-msgstr ""
+msgstr "Omöjligt koda om från \"%s\" till \"%s\""
 
 #: src/request.c:992
 msgid "Expecting `..' in request"
-msgstr ""
+msgstr "Förväntar \"..\" i begäran"
 
 #: src/task.c:751 src/task.c:915
 #, c-format
 msgid "Child process wait status is 0x%0.2x"
-msgstr ""
+msgstr "Barnprocess slutstatus är 0x%0.2x"
diff --git a/intl/ChangeLog b/intl/ChangeLog
deleted file mode 100644 (file)
index 1989501..0000000
+++ /dev/null
@@ -1,1086 +0,0 @@
-1998-04-29  Ulrich Drepper  <drepper@cygnus.com>
-
-       * intl/localealias.c (read_alias_file): Use unsigned char for
-       local variables.  Remove unused variable tp.
-       * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
-       for type of codeset.  For loosing Solaris systems.
-       * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
-       * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
-       len if not needed.
-       Patches by Jim Meyering.
-
-1998-04-28  Ulrich Drepper  <drepper@cygnus.com>
-
-       * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
-       mmap is not supported.
-
-       * hash-string.h: Don't include <values.h>.
-
-1998-04-27  Ulrich Drepper  <drepper@cygnus.com>
-
-       * textdomain.c: Use strdup is available.
-
-       * localealias.c: Define HAVE_MEMPCPY so that we can use this
-       function.  Define and use semapahores to protect modfication of
-       global objects when compiling for glibc.  Add code to allow
-       freeing alias table.
-
-       * l10nflist.c: Don't assume stpcpy not being a macro.
-
-       * gettextP.h: Define internal_function macri if not already done.
-       Use glibc byte-swap macros instead of defining SWAP when compiled
-       for glibc.
-       (struct loaded_domain): Add elements to allow unloading.
-
-       * Makefile.in (distclean): Don't remove libintl.h here.
-
-       * bindtextdomain.c: Carry over changes from glibc.  Use strdup if
-       available.
-
-       * dcgettext.c: Don't assume stpcpy not being a macro.  Mark internal
-       functions.  Add memory freeing code for glibc.
-
-       * dgettext.c: Update copyright.
-
-       * explodename.c: Include stdlib.h and string.h only if they exist.
-       Use strings.h eventually.
-
-       * finddomain.c: Mark internal functions.  Use strdup if available.
-       Add memory freeing code for glibc.
-
-1997-10-10 20:00  Ulrich Drepper  <drepper@cygnus.com>
-
-       * libgettext.h: Fix dummy textdomain and bindtextdomain macros.
-       They should return reasonable values.
-       Reported by Tom Tromey <tromey@cygnus.com>.
-
-1997-09-16 03:33  Ulrich Drepper  <drepper@cygnus.com>
-
-       * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
-       * intlh.inst.in: Likewise.
-       Reported by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
-
-       * libintl.glibc: Update from current glibc version.
-
-1997-09-06 02:10  Ulrich Drepper  <drepper@cygnus.com>
-
-       * intlh.inst.in: Reformat copyright.
-
-1997-08-19 15:22  Ulrich Drepper  <drepper@cygnus.com>
-
-       * dcgettext.c (DCGETTEXT): Remove wrong comment.
-
-1997-08-16 00:13  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (install-data): Don't change directory to install.
-
-1997-08-01 14:30  Ulrich Drepper  <drepper@cygnus.com>
-
-       * cat-compat.c: Fix copyright.
-
-       * localealias.c: Don't define strchr unless !HAVE_STRCHR.
-
-       * loadmsgcat.c: Update copyright.  Fix typos.
-
-       * l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
-       (_nl_make_l10nflist): Handle sponsor and revision correctly.
-
-       * gettext.c: Update copyright.
-       * gettext.h: Likewise.
-       * hash-string.h: Likewise.
-
-       * finddomain.c: Remoave dead code.  Define strchr only if
-       !HAVE_STRCHR.
-
-       * explodename.c: Include <sys/types.h>.
-
-       * explodename.c: Reformat copyright text.
-       (_nl_explode_name): Fix typo.
-
-       * dcgettext.c: Define and use __set_errno.
-       (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
-       not defined.
-
-       * bindtextdom.c: Pretty printing.
-
-1997-05-01 02:25  Ulrich Drepper  <drepper@cygnus.com>
-
-       * dcgettext.c (guess_category_value): Don't depend on
-       HAVE_LC_MESSAGES.  We don't need the macro here.
-       Patch by Bruno Haible <haible@ilog.fr>.
-
-       * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
-       macro.  Instead use HAVE_LOCALE_NULL and define it when using
-       glibc, as in dcgettext.c.
-       Patch by Bruno Haible <haible@ilog.fr>.
-
-       * Makefile.in (CPPFLAGS): New variable.  Reported by Franc,ois
-       Pinard.
-
-Mon Mar 10 06:51:17 1997  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in: Implement handling of libtool.
-
-       * gettextP.h: Change data structures for use of generic lowlevel
-       i18n file handling.
-
-Wed Dec  4 20:21:18 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * textdomain.c: Put parentheses around arguments of memcpy macro
-       definition.
-       * localealias.c: Likewise.
-       * l10nflist.c: Likewise.
-       * finddomain.c: Likewise.
-       * bindtextdom.c: Likewise.
-       Reported by Thomas Esken.
-
-Mon Nov 25 22:57:51 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * textdomain.c: Move definition of `memcpy` macro to right
-       position.
-
-Fri Nov 22 04:01:58 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
-       bcopy if not already defined.  Reported by Thomas Esken.
-       * bindtextdom.c: Likewise.
-       * l10nflist.c: Likewise.
-       * localealias.c: Likewise.
-       * textdomain.c: Likewise.
-
-Tue Oct 29 11:10:27 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (libdir): Change to use exec_prefix instead of
-       prefix.  Reported by Knut-HåvardAksnes <etokna@eto.ericsson.se>.
-
-Sat Aug 31 03:07:09 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * l10nflist.c (_nl_normalize_codeset): We convert to lower case,
-       so don't prepend uppercase `ISO' for only numeric arg.
-
-Fri Jul 19 00:15:46 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
-       definition of _GNU_SOURCE.  Patch by Roland McGrath.
-
-       * Makefile.in (uninstall): Fix another bug with `for' loop and
-       empty arguments.  Patch by Jim Meyering.  Correct name os
-       uninstalled files: no intl- prefix anymore.
-
-       * Makefile.in (install-data): Again work around shells which
-       cannot handle mpty for list.  Reported by Jim Meyering.
-
-Sat Jul 13 18:11:35 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (install): Split goal.  Now depend on install-exec
-        and install-data.
-       (install-exec, install-data): New goals.  Created from former
-       install goal.
-       Reported by Karl Berry.
-
-Sat Jun 22 04:58:14 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (MKINSTALLDIRS): New variable.  Path to
-        mkinstalldirs script.
-       (install): use MKINSTALLDIRS variable or if the script is not present
-       try to find it in the $top_scrdir).
-
-Wed Jun 19 02:56:56 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * l10nflist.c: Linux libc *partly* includes the argz_* functions.
-       Grr.  Work around by renaming the static version and use macros
-       for renaming.
-
-Tue Jun 18 20:11:17 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * l10nflist.c: Correct presence test macros of __argz_* functions.
-
-       * l10nflist.c: Include <argz.h> based on test of it instead when
-       __argz_* functions are available.
-       Reported by Andreas Schwab.
-
-Thu Jun 13 15:17:44 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * explodename.c, l10nflist.c: Define NULL for dumb systems.
-
-Tue Jun 11 17:05:13 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * intlh.inst.in, libgettext.h (dcgettext): Rename local variable
-       result to __result to prevent name clash.
-
-       * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
-        get prototype for stpcpy and strcasecmp.
-
-       * intlh.inst.in, libgettext.h: Move declaration of
-       `_nl_msg_cat_cntr' outside __extension__ block to prevent warning
-       from gcc's -Wnested-extern option.
-
-Fri Jun  7 01:58:00 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (install): Remove comment.
-
-Thu Jun  6 17:28:17 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (install): Work around for another Buglix stupidity.
-       Always use an `else' close for `if's.  Reported by Nelson Beebe.
-
-       * Makefile.in (intlh.inst): Correct typo in phony rule.
-       Reported by Nelson Beebe.
-
-Thu Jun  6 01:49:52 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * dcgettext.c (read_alias_file): Rename variable alloca_list to
-       block_list as the macro calls assume.
-       Patch by Eric Backus.
-
-       * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
-        malloc.
-       (read_alias_file): Rename varriabe alloca_list to block_list as the
-       macro calls assume.
-       Patch by Eric Backus.
-
-       * l10nflist.c: Correct conditional for <argz.h> inclusion.
-       Reported by Roland McGrath.
-
-       * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
-        all-@USE_NLS@.
-
-       * Makefile.in (install): intlh.inst comes from local dir, not
-        $(srcdir).
-
-       * Makefile.in (intlh.inst): Special handling of this goal.  If
-       used in gettext, this is really a rul to construct this file.  If
-       used in any other package it is defined as a .PHONY rule with
-       empty body.
-
-       * finddomain.c: Extract locale file information handling into
-       l10nfile.c.  Rename local stpcpy__ function to stpcpy.
-
-       * dcgettext.c (stpcpy): Add local definition.
-
-       * l10nflist.c: Solve some portability problems.  Patches partly by
-       Thomas Esken.  Add local definition of stpcpy.
-
-Tue Jun  4 02:47:49 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * intlh.inst.in: Don't depend including <locale.h> on
-       HAVE_LOCALE_H.  Instead configure must rewrite this fiile
-       depending on the result of the configure run.
-
-       * Makefile.in (install): libintl.inst is now called intlh.inst.
-       Add rules for updating intlh.inst from intlh.inst.in.
-
-       * libintl.inst: Renamed to intlh.inst.in.
-
-       * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
-        because gcc has __buitlin_alloca.
-       Reported by Roland McGrath.
-
-Mon Jun  3 00:32:16 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * Makefile.in (installcheck): New goal to fulfill needs of
-        automake's distcheck.
-
-       * Makefile.in (install): Reorder commands so that VERSION is
-        found.
-
-       * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
-        @datadir@/gettext.
-       (COMSRCS): Add l10nfile.c.
-       (OBJECTS): Add l10nfile.o.
-       (DISTFILES): Rename to DISTFILE.normal.  Remove $(DISTFILES.common).
-       (DISTFILE.gettext): Remove $(DISTFILES.common).
-       (all-gettext): Remove goal.
-       (install): If $(PACKAGE) = gettext install, otherwose do nothing.  No
-       package but gettext itself should install libintl.h + headers.
-       (dist): Extend goal to work for gettext, too.
-       (dist-gettext): Remove goal.
-
-       * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
-
-Sun Jun  2 17:33:06 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * loadmsgcat.c (_nl_load_domain): Parameter is now comes from
-        find_l10nfile.
-
-Sat Jun  1 02:23:03 1996  Ulrich Drepper  <drepper@cygnus.com>
-
-       * l10nflist.c (__argz_next): Add definition.
-
-       * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
-       code.  Use new l10nfile handling.
-
-       * localealias.c [!HAVE_ALLOCA]: Add code for handling missing
-        alloca code.
-
-       * l10nflist.c: Initial revision.
-
-Tue Apr  2 18:51:18 1996  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (all-gettext): New goal.  Same as all-yes.
-
-Thu Mar 28 23:01:22 1996  Karl Eichwalder  <ke@ke.central.de>
-
-       * Makefile.in (gettextsrcdir): Define using @datadir@.
-
-Tue Mar 26 12:39:14 1996  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c: Include <ctype.h>.  Reported by Roland McGrath.
-
-Sat Mar 23 02:00:35 1996  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
-        with external declaration.
-
-Sat Mar  2 00:47:09 1996  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (all-no): Rename from all_no.
-
-Sat Feb 17 00:25:59 1996  Ulrich Drepper  <drepper@myware>
-
-       * gettextP.h [loaded_domain]: Array `successor' must now contain up
-        to 63 elements (because of codeset name normalization).
-
-       * finddomain.c: Implement codeset name normalization.
-
-Thu Feb 15 04:39:09 1996  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (all): Define to `all-@USE_NLS@'.
-       (all-yes, all_no): New goals.  `all-no' is noop, `all-yes'
-       is former all.
-
-Mon Jan 15 21:46:01 1996  Howard Gayle  <howard@hal.com>
-
-       * localealias.c (alias_compare): Increment string pointers in loop
-        of strcasecmp replacement.
-
-Fri Dec 29 21:16:34 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (install-src): Who commented this goal out ? :-)
-
-Fri Dec 29 15:08:16 1995  Ulrich Drepper  <drepper@myware>
-
-       * dcgettext.c (DCGETTEXT): Save `errno'.  Failing system calls
-       should not effect it because a missing catalog is no error.
-       Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.
-
-Tue Dec 19 22:09:13 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (Makefile): Explicitly use $(SHELL) for running
-        shell scripts.
-
-Fri Dec 15 17:34:59 1995  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
-
-       * Makefile.in (install-src): Only install library and header when
-       we use the own implementation.  Don't do it when using the
-       system's gettext or catgets functions.
-
-       * dcgettext.c (find_msg): Must not swap domain->hash_size here.
-
-Sat Dec  9 16:24:37 1995  Ulrich Drepper  <drepper@myware>
-
-       * localealias.c, libintl.inst, libgettext.h, hash-string.h,
-       gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
-       Use PARAMS instead of __P.  Suggested by Roland McGrath.
-
-Tue Dec  5 11:39:14 1995  Larry Schwimmer  <rosebud@cyclone.stanford.edu>
-
-       * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
-       !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
-
-Mon Dec  4 15:42:07 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (install-src):
-       Install libintl.inst instead of libintl.h.install.
-
-Sat Dec  2 22:51:38 1995  Marcus Daniels  <marcus@sysc.pdx.edu>
-
-       * cat-compat.c (textdomain):
-       Reverse order in which files are tried you load.  First
-       try local file, when this failed absolute path.
-
-Wed Nov 29 02:03:53 1995  Nelson H. F. Beebe  <beebe@math.utah.edu>
-
-       * cat-compat.c (bindtextdomain): Add missing { }.
-
-Sun Nov 26 18:21:41 1995  Ulrich Drepper  <drepper@myware>
-
-       * libintl.inst: Add missing __P definition.  Reported by Nelson Beebe.
-
-       * Makefile.in:
-       Add dummy `all' and `dvi' goals.  Reported by Tom Tromey.
-
-Sat Nov 25 16:12:01 1995  Franc,ois Pinard  <pinard@iro.umontreal.ca>
-
-       * hash-string.h: Capitalize arguments of macros.
-
-Sat Nov 25 12:01:36 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (DISTFILES): Prevent files names longer than 13
-       characters.  libintl.h.glibc->libintl.glibc,
-       libintl.h.install->libintl.inst.  Reported by Joshua R. Poulson.
-
-Sat Nov 25 11:31:12 1995  Eric Backus  <ericb@lsid.hp.com>
-
-       * dcgettext.c: Fix bug in preprocessor conditionals.
-
-Sat Nov 25 02:35:27 1995  Nelson H. F. Beebe  <beebe@math.utah.edu>
-
-       * libgettext.h: Solaris cc does not understand
-        #if !SYMBOL1 && !SYMBOL2.  Sad but true.
-
-Thu Nov 23 16:22:14 1995  Ulrich Drepper  <drepper@myware>
-
-       * hash-string.h (hash_string):
-       Fix for machine with >32 bit `unsigned long's.
-
-       * dcgettext.c (DCGETTEXT):
-       Fix horrible bug in loop for alternative translation.
-
-Thu Nov 23 01:45:29 1995  Ulrich Drepper  <drepper@myware>
-
-       * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
-       Some further simplifications in message number generation.
-
-Mon Nov 20 21:08:43 1995  Ulrich Drepper  <drepper@myware>
-
-       * libintl.h.glibc: Use __const instead of const in prototypes.
-
-       * Makefile.in (install-src):
-       Install libintl.h.install instead of libintl.h.  This
-       is a stripped-down version.  Suggested by Peter Miller.
-
-       * libintl.h.install, libintl.h.glibc: Initial revision.
-
-       * localealias.c (_nl_expand_alias, read_alias_file):
-       Protect prototypes in type casts by __P.
-
-Tue Nov 14 16:43:58 1995  Ulrich Drepper  <drepper@myware>
-
-       * hash-string.h: Correct prototype for hash_string.
-
-Sun Nov 12 12:42:30 1995  Ulrich Drepper  <drepper@myware>
-
-       * hash-string.h (hash_string): Add prototype.
-
-       * gettextP.h: Fix copyright.
-       (SWAP): Add prototype.
-
-Wed Nov  8 22:56:33 1995  Ulrich Drepper  <drepper@myware>
-
-       * localealias.c (read_alias_file): Forgot sizeof.
-       Avoid calling *printf function.  This introduces a big overhead.
-       Patch by Roland McGrath.
-
-Tue Nov  7 14:21:08 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
-
-       * finddomain.c (stpcpy):
-       Define substitution function local.  The macro was to flaky.
-
-       * cat-compat.c: Fix typo.
-
-       * xopen-msg.sed, linux-msg.sed:
-       While bringing message number to right place only accept digits.
-
-       * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
-       leading 0s we don't need to remove them.  Reported by Marcus
-       Daniels.
-
-       * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
-       dependency.  Reported by Marcus Daniels.
-
-       * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
-       Generally cleanup using #if instead of #ifndef.
-
-       * Makefile.in: Correct typos in comment.  By Franc,ois Pinard.
-
-Mon Nov  6 00:27:02 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (install-src): Don't install libintl.h and libintl.a
-       if we use an available gettext implementation.
-
-Sun Nov  5 22:02:08 1995  Ulrich Drepper  <drepper@myware>
-
-       * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS.  Reported
-       by Franc,ois Pinard.
-
-       * libgettext.h: Use #if instead of #ifdef/#ifndef.
-
-       * finddomain.c:
-       Comments describing what has to be done should start with FIXME.
-
-Sun Nov  5 19:38:01 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (DISTFILES): Split.  Use DISTFILES with normal meaning.
-       DISTFILES.common names the files common to both dist goals.
-       DISTFILES.gettext are the files only distributed in GNU gettext.
-
-Sun Nov  5 17:32:54 1995  Ulrich Drepper  <drepper@myware>
-
-       * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
-       This was necessary since a change in _nl_find_msg several weeks
-       ago.  I really don't know this is still not fixed.
-
-Sun Nov  5 12:43:12 1995  Ulrich Drepper  <drepper@myware>
-
-       * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL.  This
-       might mark a special condition.
-
-       * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
-
-       * Makefile.in (dist): Suppress error message when ln failed.
-       Get files from $(srcdir) explicitly.
-
-       * libgettext.h (gettext_const): Rename to gettext_noop.
-
-Fri Nov  3 07:36:50 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (make_entry_rec):
-       Protect against wrong locale names by testing mask.
-
-       * libgettext.h (gettext_const): Add macro definition.
-       Capitalize macro arguments.
-
-Thu Nov  2 23:15:51 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (_nl_find_domain):
-       Test for pointer != NULL before accessing value.
-       Reported by Tom Tromey.
-
-       * gettext.c (NULL):
-       Define as (void*)0 instad of 0.  Reported by Franc,ois Pinard.
-
-Mon Oct 30 21:28:52 1995  Ulrich Drepper  <drepper@myware>
-
-       * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
-
-Sat Oct 28 23:20:47 1995  Ulrich Drepper  <drepper@myware>
-
-       * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
-
-       * localealias.c (alias_compare):
-       Peter Miller reported that tolower in some systems is
-       even dumber than I thought.  Protect call by `isupper'.
-
-Fri Oct 27 22:22:51 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (libdir, includedir): New variables.
-       (install-src): Install libintl.a and libintl.h in correct dirs.
-
-Fri Oct 27 22:07:29 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
-
-       * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
-
-       * localealias.c:
-       Fix typo and superflous test.  Reported by Christian von Roques.
-
-Fri Oct  6 11:52:05 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (_nl_find_domain):
-       Correct some remainder from the pre-CEN syntax.  Now
-       we don't have a constant number of successors anymore.
-
-Wed Sep 27 21:41:13 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (DISTFILES): Add libintl.h.glibc.
-
-       * Makefile.in (dist-libc): Add goal for packing sources for glibc.
-       (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
-
-       * loadmsgcat.c: Forget to continue #if line.
-
-       * localealias.c:
-       [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
-       space clean.
-
-       * dcgettext.c, finddomain.c: Better comment to last change.
-
-       * loadmsgcat.c:
-       [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
-       __fstat, __open, __close, __read, __mmap, and __munmap resp
-       to keep ANSI C name space clean.
-
-       * finddomain.c:
-       [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
-
-       * dcgettext.c:
-       [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
-       keep ANSI C name space clean.
-
-       * libgettext.h:
-       Include sys/types.h for those old SysV systems out there.
-       Reported by Francesco Potorti`.
-
-       * loadmsgcat.c (use_mmap): Define if compiled for glibc.
-
-       * bindtextdom.c: Include all those standard headers
-       unconditionally if _LIBC is defined.
-
-       * finddomain.c: Fix 2 times defiend -> defined.
-
-       * textdomain.c: Include libintl.h instead of libgettext.h when
-       compiling for glibc.  Include all those standard headers
-       unconditionally if _LIBC is defined.
-
-       * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
-
-       * gettext.c:
-       Include libintl.h instead of libgettext.h when compiling for glibc.
-       Get NULL from stddef.h if we compile for glibc.
-
-       * finddomain.c: Include libintl.h instead of libgettext.h when
-       compiling for glibc.  Include all those standard headers
-       unconditionally if _LIBC is defined.
-
-       * dcgettext.c: Include all those standard headers unconditionally
-       if _LIBC is defined.
-
-       * dgettext.c: If compiled in glibc include libintl.h instead of
-       libgettext.h.
-       (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
-
-       * dcgettext.c: If compiled in glibc include libintl.h instead of
-       libgettext.h.
-       (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
-
-       * bindtextdom.c:
-       If compiled in glibc include libintl.h instead of libgettext.h.
-
-Mon Sep 25 22:23:06 1995  Ulrich Drepper  <drepper@myware>
-
-       * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
-       Reported by Marcus Daniels.
-
-       * cat-compat.c (bindtextdomain):
-       String used in putenv must not be recycled.
-       Reported by Marcus Daniels.
-
-       * libgettext.h (__USE_GNU_GETTEXT):
-       Additional symbol to signal that we use GNU gettext
-       library.
-
-       * cat-compat.c (bindtextdomain):
-       Fix bug with the strange stpcpy replacement.
-       Reported by Nelson Beebe.
-
-Sat Sep 23 08:23:51 1995  Ulrich Drepper  <drepper@myware>
-
-       * cat-compat.c: Include <string.h> for stpcpy prototype.
-
-       * localealias.c (read_alias_file):
-       While expand strdup code temporary variable `cp' hided
-       higher level variable with same name.  Rename to `tp'.
-
-       * textdomain.c (textdomain):
-       Avoid warning by using temporary variable in strdup code.
-
-       * finddomain.c (_nl_find_domain): Remove unused variable `application'.
-
-Thu Sep 21 15:51:44 1995  Ulrich Drepper  <drepper@myware>
-
-       * localealias.c (alias_compare):
-       Use strcasecmp() only if available.  Else use
-       implementation in place.
-
-       * intl-compat.c:
-       Wrapper functions now call *__ functions instead of __*.
-
-       * libgettext.h: Declare prototypes for *__ functions instead for __*.
-
-       * cat-compat.c, loadmsgcat.c:
-       Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-       of the standard libc and so prevent libintl.a from being used
-       standalone.
-
-       * bindtextdom.c:
-       Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-       of the standard libc and so prevent libintl.a from being used
-       standalone.
-       Rename to bindtextdomain__ if not used in GNU C Library.
-
-       * dgettext.c:
-       Rename function to dgettext__ if not used in GNU C Library.
-
-       * gettext.c:
-       Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-       of the standard libc and so prevent libintl.a from being used
-       standalone.
-       Functions now called gettext__ if not used in GNU C Library.
-
-       * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
-       Don't use xmalloc, xstrdup, and stpcpy.  These functions are not part
-       of the standard libc and so prevent libintl.a from being used
-       standalone.
-
-Sun Sep 17 23:14:49 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c: Correct some bugs in handling of CEN standard
-       locale definitions.
-
-Thu Sep  7 01:49:28 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c: Implement CEN syntax.
-
-       * gettextP.h (loaded_domain): Extend number of successors to 31.
-
-Sat Aug 19 19:25:29 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (aliaspath): Remove path to X11 locale dir.
-
-       * Makefile.in: Make install-src depend on install.  This helps
-       gettext to install the sources and other packages can use the
-       install goal.
-
-Sat Aug 19 15:19:33 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (uninstall): Remove stuff installed by install-src.
-
-Tue Aug 15 13:13:53 1995  Ulrich Drepper  <drepper@myware>
-
-       * VERSION.in: Initial revision.
-
-       * Makefile.in (DISTFILES):
-       Add VERSION file.  This is not necessary for gettext, but
-       for other packages using this library.
-
-Tue Aug 15 06:16:44 1995  Ulrich Drepper  <drepper@myware>
-
-       * gettextP.h (_nl_find_domain):
-       New prototype after changing search strategy.
-
-       * finddomain.c (_nl_find_domain):
-       We now try only to find a specified catalog.  Fall back to other
-       catalogs listed in the locale list is now done in __dcgettext.
-
-       * dcgettext.c (__dcgettext):
-       Now we provide message fall back even to different languages.
-       I.e. if a message is not available in one language all the other
-       in the locale list a tried.  Formerly fall back was only possible
-       within one language.  Implemented by moving one loop from
-       _nl_find_domain to here.
-
-Mon Aug 14 23:45:50 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (gettextsrcdir):
-       Directory where source of GNU gettext library are made
-       available.
-       (INSTALL, INSTALL_DATA): Programs used for installing sources.
-       (gettext-src): New.  Rule to install GNU gettext sources for use in
-       gettextize shell script.
-
-Sun Aug 13 14:40:48 1995  Ulrich Drepper  <drepper@myware>
-
-       * loadmsgcat.c (_nl_load_domain):
-       Use mmap for loading only when munmap function is
-       also available.
-
-       * Makefile.in (install): Depend on `all' goal.
-
-Wed Aug  9 11:04:33 1995  Ulrich Drepper  <drepper@myware>
-
-       * localealias.c (read_alias_file):
-       Do not overwrite '\n' when terminating alias value string.
-
-       * localealias.c (read_alias_file):
-       Handle long lines.  Ignore the rest not fitting in
-       the buffer after the initial `fgets' call.
-
-Wed Aug  9 00:54:29 1995  Ulrich Drepper  <drepper@myware>
-
-       * gettextP.h (_nl_load_domain):
-       Add prototype, replacing prototype for _nl_load_msg_cat.
-
-       * finddomain.c (_nl_find_domain):
-       Remove unneeded variable filename and filename_len.
-       (expand_alias): Remove prototype because functions does not
-       exist anymore.
-
-       * localealias.c (read_alias_file):
-       Change type of fname_len parameter to int.
-       (xmalloc): Add prototype.
-
-       * loadmsgcat.c: Better prototypes for xmalloc.
-
-Tue Aug  8 22:30:39 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (_nl_find_domain):
-       Allow alias name to be constructed from the four components.
-
-       * Makefile.in (aliaspath): New variable.  Set to preliminary value.
-       (SOURCES): Add localealias.c.
-       (OBJECTS): Add localealias.o.
-
-       * gettextP.h: Add prototype for _nl_expand_alias.
-
-       * finddomain.c: Aliasing handled in intl/localealias.c.
-
-       * localealias.c: Aliasing for locale names.
-
-       * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
-
-Mon Aug  7 23:47:42 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
-
-       * cat-compat.c (bindtextdomain):
-       Correct implementation.  dirname parameter was not used.
-       Reported by Marcus Daniels.
-
-       * gettextP.h (loaded_domain):
-       New fields `successor' and `decided' for oo, lazy
-       message handling implementation.
-
-       * dcgettext.c:
-       Adopt for oo, lazy message handliing.
-       Now we can inherit translations from less specific locales.
-       (find_msg): New function.
-
-       * loadmsgcat.c, finddomain.c:
-       Complete rewrite.  Implement oo, lazy message handling :-).
-       We now have an additional environment variable `LANGUAGE' with
-       a higher priority than LC_ALL for the LC_MESSAGE locale.
-       Here we can set a colon separated list of specifications each
-       of the form `language[_territory[.codeset]][@modifier]'.
-
-Sat Aug  5 09:55:42 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (unistd.h):
-       Include to get _PC_PATH_MAX defined on system having it.
-
-Fri Aug  4 22:42:00 1995  Ulrich Drepper  <drepper@myware>
-
-       * finddomain.c (stpcpy): Include prototype.
-
-       * Makefile.in (dist): Remove `copying instead' message.
-
-Wed Aug  2 18:52:03 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (ID, TAGS): Do not use $^.
-
-Tue Aug  1 20:07:11 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (TAGS, ID): Use $^ as command argument.
-       (TAGS): Give etags -o option t write to current directory,
-       not $(srcdir).
-       (ID): Use $(srcdir) instead os $(top_srcdir)/src.
-       (distclean): Remove ID.
-
-Sun Jul 30 11:51:46 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (gnulocaledir):
-       New variable, always using share/ for data directory.
-       (DEFS): Add GNULOCALEDIR, used in finddomain.c.
-
-       * finddomain.c (_nl_default_dirname):
-       Set to GNULOCALEDIR, because it always has to point
-       to the directory where GNU gettext Library writes it to.
-
-       * intl-compat.c (textdomain, bindtextdomain):
-       Undefine macros before function definition.
-
-Sat Jul 22 01:10:02 1995  Ulrich Drepper  <drepper@myware>
-
-       * libgettext.h (_LIBINTL_H):
-       Protect definition in case where this file is included as
-       libgettext.h on Solaris machines.  Add comment about this.
-
-Wed Jul 19 02:36:42 1995  Ulrich Drepper  <drepper@myware>
-
-       * intl-compat.c (textdomain): Correct typo.
-
-Wed Jul 19 01:51:35 1995  Ulrich Drepper  <drepper@myware>
-
-       * dcgettext.c (dcgettext): Function now called __dcgettext.
-
-       * dgettext.c (dgettext): Now called __dgettext and calls
-       __dcgettext.
-
-       * gettext.c (gettext):
-       Function now called __gettext and calls __dgettext.
-
-       * textdomain.c (textdomain): Function now called __textdomain.
-
-       * bindtextdom.c (bindtextdomain): Function now called
-       __bindtextdomain.
-
-       * intl-compat.c: Initial revision.
-
-       * Makefile.in (SOURCES): Add intl-compat.c.
-       (OBJECTS): We always compile the GNU gettext library functions.
-       OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
-       and intl-compat.o.
-       (GETTOBJS): Contains now only intl-compat.o.
-
-       * libgettext.h:
-       Re-include protection matches dualistic character of libgettext.h.
-       For all functions in GNU gettext library define __ counter part.
-
-       * finddomain.c (strchr): Define as index if not found in C library.
-       (_nl_find_domain): For relative paths paste / in between.
-
-Tue Jul 18 16:37:45 1995  Ulrich Drepper  <drepper@myware>
-
-       * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
-
-       * xopen-msg.sed: Fix bug with `msgstr ""' lines.
-       A little bit better comments.
-
-Tue Jul 18 01:18:27 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in:
-       po-mode.el, makelinks, combine-sh are now found in ../misc.
-
-       * po-mode.el, makelinks, combine-sh, elisp-comp:
-       Moved to ../misc/.
-
-       * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
-
-Sun Jul 16 22:33:02 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (INSTALL, INSTALL_DATA): New variables.
-       (install-data, uninstall): Install/uninstall .elc file.
-
-       * po-mode.el (Installation comment):
-       Add .pox as possible extension of .po files.
-
-Sun Jul 16 13:23:27 1995  Ulrich Drepper  <drepper@myware>
-
-       * elisp-comp: Complete new version by Franc,ois: This does not
-       fail when not compiling in the source directory.
-
-Sun Jul 16 00:12:17 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (../po/cat-id-tbl.o):
-       Use $(MAKE) instead of make for recursive make.
-
-       * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
-       (install-exec): Add missing dummy goal.
-       (install-data, uninstall): @ in multi-line shell command at
-       beginning, not in front of echo.  Reported by Eric Backus.
-
-Sat Jul 15 00:21:28 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (DISTFILES):
-       Rename libgettext.perl to gettext.perl to fit in 14 chars
-       file systems.
-
-       * gettext.perl:
-       Rename to gettext.perl to fit in 14 chars file systems.
-
-Thu Jul 13 23:17:20 1995  Ulrich Drepper  <drepper@myware>
-
-       * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
-
-Thu Jul 13 20:55:02 1995  Ulrich Drepper  <drepper@myware>
-
-       * po2tbl.sed.in: Pretty printing.
-
-       * linux-msg.sed, xopen-msg.sed:
-       Correct bugs with handling substitute flags in branches.
-
-       * hash-string.h (hash_string):
-       Old K&R compilers don't under stand `unsigned char'.
-
-       * gettext.h (nls_uint32):
-       Some old K&R compilers (eg HP) don't understand `unsigned int'.
-
-       * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
-
-Thu Jul 13 01:34:33 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (ELCFILES): New variable.
-       (DISTFILES): Add elisp-comp.
-       Add implicit rule for .el -> .elc compilation.
-       (install-data): install $ELCFILES
-       (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
-
-       * elisp-comp: Initial revision
-
-Wed Jul 12 16:14:52 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in:
-       cat-id-tbl.c is now found in po/.  This enables us to use an identical
-       intl/ directory in all packages.
-
-       * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
-
-       * textdomain.c: fix typo (#if def -> #if defined)
-
-Tue Jul 11 18:44:43 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in (stamp-cat-id): use top_srcdir to address source files
-       (DISTFILES,distclean): move tupdate.perl to src/
-
-       * po-to-tbl.sed.in:
-       add additional jump to clear change flag to recognize multiline strings
-
-Tue Jul 11 01:32:50 1995  Ulrich Drepper  <drepper@myware>
-
-       * textdomain.c: Protect inclusion of stdlib.h and string.h.
-
-       * loadmsgcat.c: Protect inclusion of stdlib.h.
-
-       * libgettext.h: Protect inclusion of locale.h.
-       Allow use in C++ programs.
-       Define NULL is not happened already.
-
-       * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
-       po-to-tbl.sed.
-       (distclean): remove po-to-tbl.sed and tupdate.perl.
-
-       * tupdate.perl.in: Substitute Perl path even in exec line.
-       Don't include entries without translation from old .po file.
-
-Tue Jul  4 00:41:51 1995  Ulrich Drepper  <drepper@myware>
-
-       * tupdate.perl.in: use "Updated: " in msgid "".
-
-       * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
-       Define getenv if !__STDC__.
-
-       * bindtextdom.c: Protect stdlib.h and string.h inclusion.
-       Define free if !__STDC__.
-
-       * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
-       Define free if !__STDC__.
-
-       * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
-
-Mon Jul  3 23:56:30 1995  Ulrich Drepper  <drepper@myware>
-
-       * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
-       Remove unneeded $(srcdir) from Makefile.in dependency.
-
-       * makelinks: Add copyright and short description.
-
-       * po-mode.el: Last version for 0.7.
-
-       * tupdate.perl.in: Fix die message.
-
-       * dcgettext.c: Protect include of string.h.
-
-       * gettext.c: Protect include of stdlib.h and further tries to get NULL.
-
-       * finddomain.c: Some corrections in includes.
-
-       * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
-
-       * po-to-tbl.sed: Adopt for new .po file format.
-
-       * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
-
-Sun Jul  2 23:55:03 1995  Ulrich Drepper  <drepper@myware>
-
-       * tupdate.perl.in: Complete rewrite for new .po file format.
-
-Sun Jul  2 02:06:50 1995  Ulrich Drepper  <drepper@myware>
-
-       * First official release.  This directory contains all the code
-       needed to internationalize own packages.  It provides functions
-       which allow to use the X/Open catgets function with an interface
-       like the Uniforum gettext function.  For system which does not
-       have neither of those a complete implementation is provided.
diff --git a/intl/Makefile.in b/intl/Makefile.in
deleted file mode 100644 (file)
index 4bdb186..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-# Makefile for directory with message catalog handling in GNU NLS Utilities.
-# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-top_builddir = ..
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-transform = @program_transform_name@
-libdir = $(exec_prefix)/lib
-includedir = $(prefix)/include
-datadir = $(prefix)/@DATADIRNAME@
-localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = @datadir@/gettext/intl
-aliaspath = $(localedir):.
-subdir = intl
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-
-l = @l@
-
-AR = ar
-CC = @CC@
-LIBTOOL = @LIBTOOL@
-RANLIB = @RANLIB@
-
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \
--DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@
-CPPFLAGS = @CPPFLAGS@
-CFLAGS = @CFLAGS@
-LDFLAGS = @LDFLAGS@
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-HEADERS = $(COMHDRS) libgettext.h loadinfo.h
-COMHDRS = gettext.h gettextP.h hash-string.h
-SOURCES = $(COMSRCS) intl-compat.c cat-compat.c
-COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
-finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
-explodename.c
-OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
-finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
-explodename.$lo
-CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo
-GETTOBJS = intl-compat.$lo
-DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
-xopen-msg.sed $(HEADERS) $(SOURCES)
-DISTFILES.normal = VERSION
-DISTFILES.gettext = libintl.glibc intlh.inst.in
-
-.SUFFIXES:
-.SUFFIXES: .c .o .lo
-.c.o:
-       $(COMPILE) $<
-.c.lo:
-       $(LIBTOOL) --mode=compile $(COMPILE) $<
-
-INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib
-
-all: all-@USE_INCLUDED_LIBINTL@
-
-all-yes: libintl.$la intlh.inst
-all-no:
-
-libintl.a: $(OBJECTS)
-       rm -f $@
-       $(AR) cru $@ $(OBJECTS)
-       $(RANLIB) $@
-
-libintl.la: $(OBJECTS)
-       $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
-                  -version-info 1:0 -rpath $(libdir)
-
-../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
-       cd ../po && $(MAKE) cat-id-tbl.$lo
-
-check: all
-
-# This installation goal is only used in GNU gettext.  Packages which
-# only use the library should use install instead.
-
-# We must not install the libintl.h/libintl.a files if we are on a
-# system which has the gettext() function in its C library or in a
-# separate library or use the catgets interface.  A special case is
-# where configure found a previously installed GNU gettext library.
-# If you want to use the one which comes with this version of the
-# package, you have to use `configure --with-included-gettext'.
-install: install-exec install-data
-install-exec: all
-       if test "$(PACKAGE)" = "gettext" \
-          && test '@INTLOBJS@' = '$(GETTOBJS)'; then \
-         if test -r $(MKINSTALLDIRS); then \
-           $(MKINSTALLDIRS) $(libdir) $(includedir); \
-         else \
-           $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \
-         fi; \
-         $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \
-         $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \
-       else \
-         : ; \
-       fi
-install-data: all
-       if test "$(PACKAGE)" = "gettext"; then \
-         if test -r $(MKINSTALLDIRS); then \
-           $(MKINSTALLDIRS) $(gettextsrcdir); \
-         else \
-           $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
-         fi; \
-         $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \
-         dists="$(DISTFILES.common)"; \
-         for file in $$dists; do \
-           $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \
-         done; \
-       else \
-         : ; \
-       fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall:
-       dists="$(DISTFILES.common)"; \
-       for file in $$dists; do \
-         rm -f $(gettextsrcdir)/$$file; \
-       done
-
-info dvi:
-
-$(OBJECTS): ../config.h libgettext.h
-bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
-dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
-
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES)
-       here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
-
-id: ID
-
-ID: $(HEADERS) $(SOURCES)
-       here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
-
-
-mostlyclean:
-       rm -f *.a *.o *.lo core core.*
-
-clean: mostlyclean
-
-distclean: clean
-       rm -f Makefile ID TAGS po2msg.sed po2tbl.sed
-
-maintainer-clean: distclean
-       @echo "This command is intended for maintainers to use;"
-       @echo "it deletes files that may require special tools to rebuild."
-
-
-# GNU gettext needs not contain the file `VERSION' but contains some
-# other files which should not be distributed in other packages.
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: Makefile $(DISTFILES)
-       if test "$(PACKAGE)" = gettext; then \
-         additional="$(DISTFILES.gettext)"; \
-       else \
-         additional="$(DISTFILES.normal)"; \
-       fi; \
-       for file in $(DISTFILES.common) $$additional; do \
-         ln $(srcdir)/$$file $(distdir) 2> /dev/null \
-           || cp -p $(srcdir)/$$file $(distdir); \
-       done
-
-dist-libc:
-       tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc
-
-Makefile: Makefile.in ../config.status
-       cd .. \
-         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-# The dependency for intlh.inst is different in gettext and all other
-# packages.  Because we cannot you GNU make features we have to solve
-# the problem while rewriting Makefile.in.
-@GT_YES@intlh.inst: intlh.inst.in ../config.status
-@GT_YES@       cd .. \
-@GT_YES@       && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
-@GT_YES@         $(SHELL) ./config.status
-@GT_NO@.PHONY: intlh.inst
-@GT_NO@intlh.inst:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/intl/VERSION b/intl/VERSION
deleted file mode 100644 (file)
index ee66b06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-GNU gettext library from gettext-0.10.35
diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c
deleted file mode 100644 (file)
index d9c3f34..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Implementation of the bindtextdomain(3) function
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#else
-# ifdef HAVE_MALLOC_H
-#  include <malloc.h>
-# else
-void free ();
-# endif
-#endif
-
-#if defined HAVE_STRING_H || defined _LIBC
-# include <string.h>
-#else
-# include <strings.h>
-# ifndef memcpy
-#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
-# endif
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgettext.h"
-#endif
-#include "gettext.h"
-#include "gettextP.h"
-
-/* @@ end of prolog @@ */
-
-/* Contains the default location of the message catalogs.  */
-extern const char _nl_default_dirname[];
-
-/* List with bindings of specific domains.  */
-extern struct binding *_nl_domain_bindings;
-
-
-/* Names for the libintl functions are a problem.  They must not clash
-   with existing names and they should follow ANSI C.  But this source
-   code is also used in GNU C Library where the names have a __
-   prefix.  So we have to make a difference here.  */
-#ifdef _LIBC
-# define BINDTEXTDOMAIN __bindtextdomain
-# ifndef strdup
-#  define strdup(str) __strdup (str)
-# endif
-#else
-# define BINDTEXTDOMAIN bindtextdomain__
-#endif
-
-/* Specify that the DOMAINNAME message catalog will be found
-   in DIRNAME rather than in the system locale data base.  */
-char *
-BINDTEXTDOMAIN (domainname, dirname)
-     const char *domainname;
-     const char *dirname;
-{
-  struct binding *binding;
-
-  /* Some sanity checks.  */
-  if (domainname == NULL || domainname[0] == '\0')
-    return NULL;
-
-  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
-    {
-      int compare = strcmp (domainname, binding->domainname);
-      if (compare == 0)
-       /* We found it!  */
-       break;
-      if (compare < 0)
-       {
-         /* It is not in the list.  */
-         binding = NULL;
-         break;
-       }
-    }
-
-  if (dirname == NULL)
-    /* The current binding has be to returned.  */
-    return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
-
-  if (binding != NULL)
-    {
-      /* The domain is already bound.  If the new value and the old
-        one are equal we simply do nothing.  Otherwise replace the
-        old binding.  */
-      if (strcmp (dirname, binding->dirname) != 0)
-       {
-         char *new_dirname;
-
-         if (strcmp (dirname, _nl_default_dirname) == 0)
-           new_dirname = (char *) _nl_default_dirname;
-         else
-           {
-#if defined _LIBC || defined HAVE_STRDUP
-             new_dirname = strdup (dirname);
-             if (new_dirname == NULL)
-               return NULL;
-#else
-             size_t len = strlen (dirname) + 1;
-             new_dirname = (char *) malloc (len);
-             if (new_dirname == NULL)
-               return NULL;
-
-             memcpy (new_dirname, dirname, len);
-#endif
-           }
-
-         if (binding->dirname != _nl_default_dirname)
-           free (binding->dirname);
-
-         binding->dirname = new_dirname;
-       }
-    }
-  else
-    {
-      /* We have to create a new binding.  */
-#if !defined _LIBC && !defined HAVE_STRDUP
-      size_t len;
-#endif
-      struct binding *new_binding =
-       (struct binding *) malloc (sizeof (*new_binding));
-
-      if (new_binding == NULL)
-       return NULL;
-
-#if defined _LIBC || defined HAVE_STRDUP
-      new_binding->domainname = strdup (domainname);
-      if (new_binding->domainname == NULL)
-       return NULL;
-#else
-      len = strlen (domainname) + 1;
-      new_binding->domainname = (char *) malloc (len);
-      if (new_binding->domainname == NULL)
-       return NULL;
-      memcpy (new_binding->domainname, domainname, len);
-#endif
-
-      if (strcmp (dirname, _nl_default_dirname) == 0)
-       new_binding->dirname = (char *) _nl_default_dirname;
-      else
-       {
-#if defined _LIBC || defined HAVE_STRDUP
-         new_binding->dirname = strdup (dirname);
-         if (new_binding->dirname == NULL)
-           return NULL;
-#else
-         len = strlen (dirname) + 1;
-         new_binding->dirname = (char *) malloc (len);
-         if (new_binding->dirname == NULL)
-           return NULL;
-         memcpy (new_binding->dirname, dirname, len);
-#endif
-       }
-
-      /* Now enqueue it.  */
-      if (_nl_domain_bindings == NULL
-         || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
-       {
-         new_binding->next = _nl_domain_bindings;
-         _nl_domain_bindings = new_binding;
-       }
-      else
-       {
-         binding = _nl_domain_bindings;
-         while (binding->next != NULL
-                && strcmp (domainname, binding->next->domainname) > 0)
-           binding = binding->next;
-
-         new_binding->next = binding->next;
-         binding->next = new_binding;
-       }
-
-      binding = new_binding;
-    }
-
-  return binding->dirname;
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library.  */
-weak_alias (__bindtextdomain, bindtextdomain);
-#endif
diff --git a/intl/cat-compat.c b/intl/cat-compat.c
deleted file mode 100644 (file)
index 867d901..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-/* Compatibility code for gettext-using-catgets interface.
-   Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <string.h>
-#else
-char *getenv ();
-# ifdef HAVE_MALLOC_H
-#  include <malloc.h>
-# endif
-#endif
-
-#ifdef HAVE_NL_TYPES_H
-# include <nl_types.h>
-#endif
-
-#include "libgettext.h"
-
-/* @@ end of prolog @@ */
-
-/* XPG3 defines the result of `setlocale (category, NULL)' as:
-   ``Directs `setlocale()' to query `category' and return the current
-     setting of `local'.''
-   However it does not specify the exact format.  And even worse: POSIX
-   defines this not at all.  So we can use this feature only on selected
-   system (e.g. those using GNU C Library).  */
-#ifdef _LIBC
-# define HAVE_LOCALE_NULL
-#endif
-
-/* The catalog descriptor.  */
-static nl_catd catalog = (nl_catd) -1;
-
-/* Name of the default catalog.  */
-static const char default_catalog_name[] = "messages";
-
-/* Name of currently used catalog.  */
-static const char *catalog_name = default_catalog_name;
-
-/* Get ID for given string.  If not found return -1.  */
-static int msg_to_cat_id PARAMS ((const char *msg));
-
-/* Substitution for systems lacking this function in their C library.  */
-#if !_LIBC && !HAVE_STPCPY
-static char *stpcpy PARAMS ((char *dest, const char *src));
-#endif
-
-
-/* Set currently used domain/catalog.  */
-char *
-textdomain (domainname)
-     const char *domainname;
-{
-  nl_catd new_catalog;
-  char *new_name;
-  size_t new_name_len;
-  char *lang;
-
-#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \
-    && defined HAVE_LOCALE_NULL
-  lang = setlocale (LC_MESSAGES, NULL);
-#else
-  lang = getenv ("LC_ALL");
-  if (lang == NULL || lang[0] == '\0')
-    {
-      lang = getenv ("LC_MESSAGES");
-      if (lang == NULL || lang[0] == '\0')
-       lang = getenv ("LANG");
-    }
-#endif
-  if (lang == NULL || lang[0] == '\0')
-    lang = "C";
-
-  /* See whether name of currently used domain is asked.  */
-  if (domainname == NULL)
-    return (char *) catalog_name;
-
-  if (domainname[0] == '\0')
-    domainname = default_catalog_name;
-
-  /* Compute length of added path element.  */
-  new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
-                + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
-                + sizeof (".cat");
-
-  new_name = (char *) malloc (new_name_len);
-  if (new_name == NULL)
-    return NULL;
-
-  strcpy (new_name, PACKAGE);
-  new_catalog = catopen (new_name, 0);
-
-  if (new_catalog == (nl_catd) -1)
-    {
-      /* NLSPATH search didn't work, try absolute path */
-      sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
-              PACKAGE);
-      new_catalog = catopen (new_name, 0);
-
-      if (new_catalog == (nl_catd) -1)
-       {
-         free (new_name);
-         return (char *) catalog_name;
-       }
-    }
-
-  /* Close old catalog.  */
-  if (catalog != (nl_catd) -1)
-    catclose (catalog);
-  if (catalog_name != default_catalog_name)
-    free ((char *) catalog_name);
-
-  catalog = new_catalog;
-  catalog_name = new_name;
-
-  return (char *) catalog_name;
-}
-
-char *
-bindtextdomain (domainname, dirname)
-     const char *domainname;
-     const char *dirname;
-{
-#if HAVE_SETENV || HAVE_PUTENV
-  char *old_val, *new_val, *cp;
-  size_t new_val_len;
-
-  /* This does not make much sense here but to be compatible do it.  */
-  if (domainname == NULL)
-    return NULL;
-
-  /* Compute length of added path element.  If we use setenv we don't need
-     the first byts for NLSPATH=, but why complicate the code for this
-     peanuts.  */
-  new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
-               + sizeof ("/%L/LC_MESSAGES/%N.cat");
-
-  old_val = getenv ("NLSPATH");
-  if (old_val == NULL || old_val[0] == '\0')
-    {
-      old_val = NULL;
-      new_val_len += 1 + sizeof (LOCALEDIR) - 1
-                    + sizeof ("/%L/LC_MESSAGES/%N.cat");
-    }
-  else
-    new_val_len += strlen (old_val);
-
-  new_val = (char *) malloc (new_val_len);
-  if (new_val == NULL)
-    return NULL;
-
-# if HAVE_SETENV
-  cp = new_val;
-# else
-  cp = stpcpy (new_val, "NLSPATH=");
-# endif
-
-  cp = stpcpy (cp, dirname);
-  cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
-
-  if (old_val == NULL)
-    {
-# if __STDC__
-      stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
-# else
-
-      cp = stpcpy (cp, LOCALEDIR);
-      stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
-# endif
-    }
-  else
-    stpcpy (cp, old_val);
-
-# if HAVE_SETENV
-  setenv ("NLSPATH", new_val, 1);
-  free (new_val);
-# else
-  putenv (new_val);
-  /* Do *not* free the environment entry we just entered.  It is used
-     from now on.   */
-# endif
-
-#endif
-
-  return (char *) domainname;
-}
-
-#undef gettext
-char *
-gettext (msg)
-     const char *msg;
-{
-  int msgid;
-
-  if (msg == NULL || catalog == (nl_catd) -1)
-    return (char *) msg;
-
-  /* Get the message from the catalog.  We always use set number 1.
-     The message ID is computed by the function `msg_to_cat_id'
-     which works on the table generated by `po-to-tbl'.  */
-  msgid = msg_to_cat_id (msg);
-  if (msgid == -1)
-    return (char *) msg;
-
-  return catgets (catalog, 1, msgid, (char *) msg);
-}
-
-/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
-   for the one equal to msg.  If it is found return the ID.  In case when
-   the string is not found return -1.  */
-static int
-msg_to_cat_id (msg)
-     const char *msg;
-{
-  int cnt;
-
-  for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
-    if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
-      return _msg_tbl[cnt]._msg_number;
-
-  return -1;
-}
-
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library.  So we
-   avoid the non-standard function stpcpy.  In GNU C Library this
-   function is available, though.  Also allow the symbol HAVE_STPCPY
-   to be defined.  */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (dest, src)
-     char *dest;
-     const char *src;
-{
-  while ((*dest++ = *src++) != '\0')
-    /* Do nothing. */ ;
-  return dest - 1;
-}
-#endif
diff --git a/intl/dcgettext.c b/intl/dcgettext.c
deleted file mode 100644 (file)
index c4c7a2c..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-/* Implementation of the dcgettext(3) function.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-#  include <alloca.h>
-# else
-#  ifdef _AIX
- #pragma alloca
-#  else
-#   ifndef alloca
-char *alloca ();
-#   endif
-#  endif
-# endif
-#endif
-
-#include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
-#ifndef __set_errno
-# define __set_errno(val) errno = (val)
-#endif
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#else
-char *getenv ();
-# ifdef HAVE_MALLOC_H
-#  include <malloc.h>
-# else
-void free ();
-# endif
-#endif
-
-#if defined HAVE_STRING_H || defined _LIBC
-# ifndef _GNU_SOURCE
-#  define _GNU_SOURCE  1
-# endif
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#if !HAVE_STRCHR && !defined _LIBC
-# ifndef strchr
-#  define strchr index
-# endif
-#endif
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include "gettext.h"
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgettext.h"
-#endif
-#include "hash-string.h"
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions.  This is required by the standard
-   because some ANSI C functions will require linking with this object
-   file and the name space must not be polluted.  */
-# define getcwd __getcwd
-# ifndef stpcpy
-#  define stpcpy __stpcpy
-# endif
-#else
-# if !defined HAVE_GETCWD
-char *getwd ();
-#  define getcwd(buf, max) getwd (buf)
-# else
-char *getcwd ();
-# endif
-# ifndef HAVE_STPCPY
-static char *stpcpy PARAMS ((char *dest, const char *src));
-# endif
-#endif
-
-/* Amount to increase buffer size by in each try.  */
-#define PATH_INCR 32
-
-/* The following is from pathmax.h.  */
-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
-   PATH_MAX but might cause redefinition warnings when sys/param.h is
-   later included (as on MORE/BSD 4.3).  */
-#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
-# include <limits.h>
-#endif
-
-#ifndef _POSIX_PATH_MAX
-# define _POSIX_PATH_MAX 255
-#endif
-
-#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
-#endif
-
-/* Don't include sys/param.h if it already has been.  */
-#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
-# include <sys/param.h>
-#endif
-
-#if !defined(PATH_MAX) && defined(MAXPATHLEN)
-# define PATH_MAX MAXPATHLEN
-#endif
-
-#ifndef PATH_MAX
-# define PATH_MAX _POSIX_PATH_MAX
-#endif
-
-/* XPG3 defines the result of `setlocale (category, NULL)' as:
-   ``Directs `setlocale()' to query `category' and return the current
-     setting of `local'.''
-   However it does not specify the exact format.  And even worse: POSIX
-   defines this not at all.  So we can use this feature only on selected
-   system (e.g. those using GNU C Library).  */
-#ifdef _LIBC
-# define HAVE_LOCALE_NULL
-#endif
-
-/* Name of the default domain used for gettext(3) prior any call to
-   textdomain(3).  The default value for this is "messages".  */
-const char _nl_default_default_domain[] = "messages";
-
-/* Value used as the default domain for gettext(3).  */
-const char *_nl_current_default_domain = _nl_default_default_domain;
-
-/* Contains the default location of the message catalogs.  */
-const char _nl_default_dirname[] = GNULOCALEDIR;
-
-/* List with bindings of specific domains created by bindtextdomain()
-   calls.  */
-struct binding *_nl_domain_bindings;
-
-/* Prototypes for local functions.  */
-static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
-                              const char *msgid)) internal_function;
-static const char *category_to_name PARAMS ((int category)) internal_function;
-static const char *guess_category_value PARAMS ((int category,
-                                                const char *categoryname))
-     internal_function;
-
-
-/* For those loosing systems which don't have `alloca' we have to add
-   some additional code emulating it.  */
-#ifdef HAVE_ALLOCA
-/* Nothing has to be done.  */
-# define ADD_BLOCK(list, address) /* nothing */
-# define FREE_BLOCKS(list) /* nothing */
-#else
-struct block_list
-{
-  void *address;
-  struct block_list *next;
-};
-# define ADD_BLOCK(list, addr)                                               \
-  do {                                                                       \
-    struct block_list *newp = (struct block_list *) malloc (sizeof (*newp));  \
-    /* If we cannot get a free block we cannot add the new element to        \
-       the list.  */                                                         \
-    if (newp != NULL) {                                                              \
-      newp->address = (addr);                                                \
-      newp->next = (list);                                                   \
-      (list) = newp;                                                         \
-    }                                                                        \
-  } while (0)
-# define FREE_BLOCKS(list)                                                   \
-  do {                                                                       \
-    while (list != NULL) {                                                   \
-      struct block_list *old = list;                                         \
-      list = list->next;                                                     \
-      free (old);                                                            \
-    }                                                                        \
-  } while (0)
-# undef alloca
-# define alloca(size) (malloc (size))
-#endif /* have alloca */
-
-
-/* Names for the libintl functions are a problem.  They must not clash
-   with existing names and they should follow ANSI C.  But this source
-   code is also used in GNU C Library where the names have a __
-   prefix.  So we have to make a difference here.  */
-#ifdef _LIBC
-# define DCGETTEXT __dcgettext
-#else
-# define DCGETTEXT dcgettext__
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-   locale.  */
-char *
-DCGETTEXT (domainname, msgid, category)
-     const char *domainname;
-     const char *msgid;
-     int category;
-{
-#ifndef HAVE_ALLOCA
-  struct block_list *block_list = NULL;
-#endif
-  struct loaded_l10nfile *domain;
-  struct binding *binding;
-  const char *categoryname;
-  const char *categoryvalue;
-  char *dirname, *xdomainname;
-  char *single_locale;
-  char *retval;
-  int saved_errno = errno;
-
-  /* If no real MSGID is given return NULL.  */
-  if (msgid == NULL)
-    return NULL;
-
-  /* If DOMAINNAME is NULL, we are interested in the default domain.  If
-     CATEGORY is not LC_MESSAGES this might not make much sense but the
-     defintion left this undefined.  */
-  if (domainname == NULL)
-    domainname = _nl_current_default_domain;
-
-  /* First find matching binding.  */
-  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
-    {
-      int compare = strcmp (domainname, binding->domainname);
-      if (compare == 0)
-       /* We found it!  */
-       break;
-      if (compare < 0)
-       {
-         /* It is not in the list.  */
-         binding = NULL;
-         break;
-       }
-    }
-
-  if (binding == NULL)
-    dirname = (char *) _nl_default_dirname;
-  else if (binding->dirname[0] == '/')
-    dirname = binding->dirname;
-  else
-    {
-      /* We have a relative path.  Make it absolute now.  */
-      size_t dirname_len = strlen (binding->dirname) + 1;
-      size_t path_max;
-      char *ret;
-
-      path_max = (unsigned) PATH_MAX;
-      path_max += 2;           /* The getcwd docs say to do this.  */
-
-      dirname = (char *) alloca (path_max + dirname_len);
-      ADD_BLOCK (block_list, dirname);
-
-      __set_errno (0);
-      while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
-       {
-         path_max += PATH_INCR;
-         dirname = (char *) alloca (path_max + dirname_len);
-         ADD_BLOCK (block_list, dirname);
-         __set_errno (0);
-       }
-
-      if (ret == NULL)
-       {
-         /* We cannot get the current working directory.  Don't signal an
-            error but simply return the default string.  */
-         FREE_BLOCKS (block_list);
-         __set_errno (saved_errno);
-         return (char *) msgid;
-       }
-
-      stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
-    }
-
-  /* Now determine the symbolic name of CATEGORY and its value.  */
-  categoryname = category_to_name (category);
-  categoryvalue = guess_category_value (category, categoryname);
-
-  xdomainname = (char *) alloca (strlen (categoryname)
-                                + strlen (domainname) + 5);
-  ADD_BLOCK (block_list, xdomainname);
-
-  stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
-                 domainname),
-         ".mo");
-
-  /* Creating working area.  */
-  single_locale = (char *) alloca (strlen (categoryvalue) + 1);
-  ADD_BLOCK (block_list, single_locale);
-
-
-  /* Search for the given string.  This is a loop because we perhaps
-     got an ordered list of languages to consider for th translation.  */
-  while (1)
-    {
-      /* Make CATEGORYVALUE point to the next element of the list.  */
-      while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
-       ++categoryvalue;
-      if (categoryvalue[0] == '\0')
-       {
-         /* The whole contents of CATEGORYVALUE has been searched but
-            no valid entry has been found.  We solve this situation
-            by implicitly appending a "C" entry, i.e. no translation
-            will take place.  */
-         single_locale[0] = 'C';
-         single_locale[1] = '\0';
-       }
-      else
-       {
-         char *cp = single_locale;
-         while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
-           *cp++ = *categoryvalue++;
-         *cp = '\0';
-       }
-
-      /* If the current locale value is C (or POSIX) we don't load a
-        domain.  Return the MSGID.  */
-      if (strcmp (single_locale, "C") == 0
-         || strcmp (single_locale, "POSIX") == 0)
-       {
-         FREE_BLOCKS (block_list);
-         __set_errno (saved_errno);
-         return (char *) msgid;
-       }
-
-
-      /* Find structure describing the message catalog matching the
-        DOMAINNAME and CATEGORY.  */
-      domain = _nl_find_domain (dirname, single_locale, xdomainname);
-
-      if (domain != NULL)
-       {
-         retval = find_msg (domain, msgid);
-
-         if (retval == NULL)
-           {
-             int cnt;
-
-             for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
-               {
-                 retval = find_msg (domain->successor[cnt], msgid);
-
-                 if (retval != NULL)
-                   break;
-               }
-           }
-
-         if (retval != NULL)
-           {
-             FREE_BLOCKS (block_list);
-             __set_errno (saved_errno);
-             return retval;
-           }
-       }
-    }
-  /* NOTREACHED */
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library.  */
-weak_alias (__dcgettext, dcgettext);
-#endif
-
-
-static char *
-internal_function
-find_msg (domain_file, msgid)
-     struct loaded_l10nfile *domain_file;
-     const char *msgid;
-{
-  size_t top, act, bottom;
-  struct loaded_domain *domain;
-
-  if (domain_file->decided == 0)
-    _nl_load_domain (domain_file);
-
-  if (domain_file->data == NULL)
-    return NULL;
-
-  domain = (struct loaded_domain *) domain_file->data;
-
-  /* Locate the MSGID and its translation.  */
-  if (domain->hash_size > 2 && domain->hash_tab != NULL)
-    {
-      /* Use the hashing table.  */
-      nls_uint32 len = strlen (msgid);
-      nls_uint32 hash_val = hash_string (msgid);
-      nls_uint32 idx = hash_val % domain->hash_size;
-      nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-      nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
-
-      if (nstr == 0)
-       /* Hash table entry is empty.  */
-       return NULL;
-
-      if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
-         && strcmp (msgid,
-                    domain->data + W (domain->must_swap,
-                                      domain->orig_tab[nstr - 1].offset)) == 0)
-       return (char *) domain->data + W (domain->must_swap,
-                                         domain->trans_tab[nstr - 1].offset);
-
-      while (1)
-       {
-         if (idx >= domain->hash_size - incr)
-           idx -= domain->hash_size - incr;
-         else
-           idx += incr;
-
-         nstr = W (domain->must_swap, domain->hash_tab[idx]);
-         if (nstr == 0)
-           /* Hash table entry is empty.  */
-           return NULL;
-
-         if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
-             && strcmp (msgid,
-                        domain->data + W (domain->must_swap,
-                                          domain->orig_tab[nstr - 1].offset))
-                == 0)
-           return (char *) domain->data
-             + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
-       }
-      /* NOTREACHED */
-    }
-
-  /* Now we try the default method:  binary search in the sorted
-     array of messages.  */
-  bottom = 0;
-  top = domain->nstrings;
-  while (bottom < top)
-    {
-      int cmp_val;
-
-      act = (bottom + top) / 2;
-      cmp_val = strcmp (msgid, domain->data
-                              + W (domain->must_swap,
-                                   domain->orig_tab[act].offset));
-      if (cmp_val < 0)
-       top = act;
-      else if (cmp_val > 0)
-       bottom = act + 1;
-      else
-       break;
-    }
-
-  /* If an translation is found return this.  */
-  return bottom >= top ? NULL : (char *) domain->data
-                                + W (domain->must_swap,
-                                    domain->trans_tab[act].offset);
-}
-
-
-/* Return string representation of locale CATEGORY.  */
-static const char *
-internal_function
-category_to_name (category)
-     int category;
-{
-  const char *retval;
-
-  switch (category)
-  {
-#ifdef LC_COLLATE
-  case LC_COLLATE:
-    retval = "LC_COLLATE";
-    break;
-#endif
-#ifdef LC_CTYPE
-  case LC_CTYPE:
-    retval = "LC_CTYPE";
-    break;
-#endif
-#ifdef LC_MONETARY
-  case LC_MONETARY:
-    retval = "LC_MONETARY";
-    break;
-#endif
-#ifdef LC_NUMERIC
-  case LC_NUMERIC:
-    retval = "LC_NUMERIC";
-    break;
-#endif
-#ifdef LC_TIME
-  case LC_TIME:
-    retval = "LC_TIME";
-    break;
-#endif
-#ifdef LC_MESSAGES
-  case LC_MESSAGES:
-    retval = "LC_MESSAGES";
-    break;
-#endif
-#ifdef LC_RESPONSE
-  case LC_RESPONSE:
-    retval = "LC_RESPONSE";
-    break;
-#endif
-#ifdef LC_ALL
-  case LC_ALL:
-    /* This might not make sense but is perhaps better than any other
-       value.  */
-    retval = "LC_ALL";
-    break;
-#endif
-  default:
-    /* If you have a better idea for a default value let me know.  */
-    retval = "LC_XXX";
-  }
-
-  return retval;
-}
-
-/* Guess value of current locale from value of the environment variables.  */
-static const char *
-internal_function
-guess_category_value (category, categoryname)
-     int category;
-     const char *categoryname;
-{
-  const char *retval;
-
-  /* The highest priority value is the `LANGUAGE' environment
-     variable.  This is a GNU extension.  */
-  retval = getenv ("LANGUAGE");
-  if (retval != NULL && retval[0] != '\0')
-    return retval;
-
-  /* `LANGUAGE' is not set.  So we have to proceed with the POSIX
-     methods of looking to `LC_ALL', `LC_xxx', and `LANG'.  On some
-     systems this can be done by the `setlocale' function itself.  */
-#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
-  return setlocale (category, NULL);
-#else
-  /* Setting of LC_ALL overwrites all other.  */
-  retval = getenv ("LC_ALL");
-  if (retval != NULL && retval[0] != '\0')
-    return retval;
-
-  /* Next comes the name of the desired category.  */
-  retval = getenv (categoryname);
-  if (retval != NULL && retval[0] != '\0')
-    return retval;
-
-  /* Last possibility is the LANG environment variable.  */
-  retval = getenv ("LANG");
-  if (retval != NULL && retval[0] != '\0')
-    return retval;
-
-  /* We use C as the default domain.  POSIX says this is implementation
-     defined.  */
-  return "C";
-#endif
-}
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library.  So we
-   avoid the non-standard function stpcpy.  In GNU C Library this
-   function is available, though.  Also allow the symbol HAVE_STPCPY
-   to be defined.  */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (dest, src)
-     char *dest;
-     const char *src;
-{
-  while ((*dest++ = *src++) != '\0')
-    /* Do nothing. */ ;
-  return dest - 1;
-}
-#endif
-
-
-#ifdef _LIBC
-/* If we want to free all resources we have to do some work at
-   program's end.  */
-static void __attribute__ ((unused))
-free_mem (void)
-{
-  struct binding *runp;
-
-  for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next)
-    {
-      free (runp->domainname);
-      if (runp->dirname != _nl_default_dirname)
-       /* Yes, this is a pointer comparison.  */
-       free (runp->dirname);
-    }
-
-  if (_nl_current_default_domain != _nl_default_default_domain)
-    /* Yes, again a pointer comparison.  */
-    free ((char *) _nl_current_default_domain);
-}
-
-text_set_element (__libc_subfreeres, free_mem);
-#endif
diff --git a/intl/dgettext.c b/intl/dgettext.c
deleted file mode 100644 (file)
index 0510c2b..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Implementation of the dgettext(3) function
-   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined HAVE_LOCALE_H || defined _LIBC
-# include <locale.h>
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgettext.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem.  They must not clash
-   with existing names and they should follow ANSI C.  But this source
-   code is also used in GNU C Library where the names have a __
-   prefix.  So we have to make a difference here.  */
-#ifdef _LIBC
-# define DGETTEXT __dgettext
-# define DCGETTEXT __dcgettext
-#else
-# define DGETTEXT dgettext__
-# define DCGETTEXT dcgettext__
-#endif
-
-/* Look up MSGID in the DOMAINNAME message catalog of the current
-   LC_MESSAGES locale.  */
-char *
-DGETTEXT (domainname, msgid)
-     const char *domainname;
-     const char *msgid;
-{
-  return DCGETTEXT (domainname, msgid, LC_MESSAGES);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library.  */
-weak_alias (__dgettext, dgettext);
-#endif
diff --git a/intl/explodename.c b/intl/explodename.c
deleted file mode 100644 (file)
index 8066dc2..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#endif
-
-#if defined HAVE_STRING_H || defined _LIBC
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-#include <sys/types.h>
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found.  Sigh!  */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-#  define NULL ((void *) 0)
-# else
-#  define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-int
-_nl_explode_name (name, language, modifier, territory, codeset,
-                 normalized_codeset, special, sponsor, revision)
-     char *name;
-     const char **language;
-     const char **modifier;
-     const char **territory;
-     const char **codeset;
-     const char **normalized_codeset;
-     const char **special;
-     const char **sponsor;
-     const char **revision;
-{
-  enum { undecided, xpg, cen } syntax;
-  char *cp;
-  int mask;
-
-  *modifier = NULL;
-  *territory = NULL;
-  *codeset = NULL;
-  *normalized_codeset = NULL;
-  *special = NULL;
-  *sponsor = NULL;
-  *revision = NULL;
-
-  /* Now we determine the single parts of the locale name.  First
-     look for the language.  Termination symbols are `_' and `@' if
-     we use XPG4 style, and `_', `+', and `,' if we use CEN syntax.  */
-  mask = 0;
-  syntax = undecided;
-  *language = cp = name;
-  while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
-        && cp[0] != '+' && cp[0] != ',')
-    ++cp;
-
-  if (*language == cp)
-    /* This does not make sense: language has to be specified.  Use
-       this entry as it is without exploding.  Perhaps it is an alias.  */
-    cp = strchr (*language, '\0');
-  else if (cp[0] == '_')
-    {
-      /* Next is the territory.  */
-      cp[0] = '\0';
-      *territory = ++cp;
-
-      while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
-            && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
-       ++cp;
-
-      mask |= TERRITORY;
-
-      if (cp[0] == '.')
-       {
-         /* Next is the codeset.  */
-         syntax = xpg;
-         cp[0] = '\0';
-         *codeset = ++cp;
-
-         while (cp[0] != '\0' && cp[0] != '@')
-           ++cp;
-
-         mask |= XPG_CODESET;
-
-         if (*codeset != cp && (*codeset)[0] != '\0')
-           {
-             *normalized_codeset = _nl_normalize_codeset (*codeset,
-                                                          cp - *codeset);
-             if (strcmp (*codeset, *normalized_codeset) == 0)
-               free ((char *) *normalized_codeset);
-             else
-               mask |= XPG_NORM_CODESET;
-           }
-       }
-    }
-
-  if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
-    {
-      /* Next is the modifier.  */
-      syntax = cp[0] == '@' ? xpg : cen;
-      cp[0] = '\0';
-      *modifier = ++cp;
-
-      while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
-            && cp[0] != ',' && cp[0] != '_')
-       ++cp;
-
-      mask |= XPG_MODIFIER | CEN_AUDIENCE;
-    }
-
-  if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
-    {
-      syntax = cen;
-
-      if (cp[0] == '+')
-       {
-         /* Next is special application (CEN syntax).  */
-         cp[0] = '\0';
-         *special = ++cp;
-
-         while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
-           ++cp;
-
-         mask |= CEN_SPECIAL;
-       }
-
-      if (cp[0] == ',')
-       {
-         /* Next is sponsor (CEN syntax).  */
-         cp[0] = '\0';
-         *sponsor = ++cp;
-
-         while (cp[0] != '\0' && cp[0] != '_')
-           ++cp;
-
-         mask |= CEN_SPONSOR;
-       }
-
-      if (cp[0] == '_')
-       {
-         /* Next is revision (CEN syntax).  */
-         cp[0] = '\0';
-         *revision = ++cp;
-
-         mask |= CEN_REVISION;
-       }
-    }
-
-  /* For CEN syntax values it might be important to have the
-     separator character in the file name, not for XPG syntax.  */
-  if (syntax == xpg)
-    {
-      if (*territory != NULL && (*territory)[0] == '\0')
-       mask &= ~TERRITORY;
-
-      if (*codeset != NULL && (*codeset)[0] == '\0')
-       mask &= ~XPG_CODESET;
-
-      if (*modifier != NULL && (*modifier)[0] == '\0')
-       mask &= ~XPG_MODIFIER;
-    }
-
-  return mask;
-}
diff --git a/intl/finddomain.c b/intl/finddomain.c
deleted file mode 100644 (file)
index 81ea29b..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/* Handle list of needed message catalogs
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <sys/types.h>
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#else
-# ifdef HAVE_MALLOC_H
-#  include <malloc.h>
-# else
-void free ();
-# endif
-#endif
-
-#if defined HAVE_STRING_H || defined _LIBC
-# include <string.h>
-#else
-# include <strings.h>
-# ifndef memcpy
-#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
-# endif
-#endif
-#if !HAVE_STRCHR && !defined _LIBC
-# ifndef strchr
-#  define strchr index
-# endif
-#endif
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#include "gettext.h"
-#include "gettextP.h"
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgettext.h"
-#endif
-
-/* @@ end of prolog @@ */
-/* List of already loaded domains.  */
-static struct loaded_l10nfile *_nl_loaded_domains;
-
-
-/* Return a data structure describing the message catalog described by
-   the DOMAINNAME and CATEGORY parameters with respect to the currently
-   established bindings.  */
-struct loaded_l10nfile *
-internal_function
-_nl_find_domain (dirname, locale, domainname)
-     const char *dirname;
-     char *locale;
-     const char *domainname;
-{
-  struct loaded_l10nfile *retval;
-  const char *language;
-  const char *modifier;
-  const char *territory;
-  const char *codeset;
-  const char *normalized_codeset;
-  const char *special;
-  const char *sponsor;
-  const char *revision;
-  const char *alias_value;
-  int mask;
-
-  /* LOCALE can consist of up to four recognized parts for the XPG syntax:
-
-               language[_territory[.codeset]][@modifier]
-
-     and six parts for the CEN syntax:
-
-       language[_territory][+audience][+special][,[sponsor][_revision]]
-
-     Beside the first part all of them are allowed to be missing.  If
-     the full specified locale is not found, the less specific one are
-     looked for.  The various parts will be stripped off according to
-     the following order:
-               (1) revision
-               (2) sponsor
-               (3) special
-               (4) codeset
-               (5) normalized codeset
-               (6) territory
-               (7) audience/modifier
-   */
-
-  /* If we have already tested for this locale entry there has to
-     be one data set in the list of loaded domains.  */
-  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
-                              strlen (dirname) + 1, 0, locale, NULL, NULL,
-                              NULL, NULL, NULL, NULL, NULL, domainname, 0);
-  if (retval != NULL)
-    {
-      /* We know something about this locale.  */
-      int cnt;
-
-      if (retval->decided == 0)
-       _nl_load_domain (retval);
-
-      if (retval->data != NULL)
-       return retval;
-
-      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
-       {
-         if (retval->successor[cnt]->decided == 0)
-           _nl_load_domain (retval->successor[cnt]);
-
-         if (retval->successor[cnt]->data != NULL)
-           break;
-       }
-      return cnt >= 0 ? retval : NULL;
-      /* NOTREACHED */
-    }
-
-  /* See whether the locale value is an alias.  If yes its value
-     *overwrites* the alias name.  No test for the original value is
-     done.  */
-  alias_value = _nl_expand_alias (locale);
-  if (alias_value != NULL)
-    {
-#if defined _LIBC || defined HAVE_STRDUP
-      locale = strdup (alias_value);
-      if (locale == NULL)
-       return NULL;
-#else
-      size_t len = strlen (alias_value) + 1;
-      locale = (char *) malloc (len);
-      if (locale == NULL)
-       return NULL;
-
-      memcpy (locale, alias_value, len);
-#endif
-    }
-
-  /* Now we determine the single parts of the locale name.  First
-     look for the language.  Termination symbols are `_' and `@' if
-     we use XPG4 style, and `_', `+', and `,' if we use CEN syntax.  */
-  mask = _nl_explode_name (locale, &language, &modifier, &territory,
-                          &codeset, &normalized_codeset, &special,
-                          &sponsor, &revision);
-
-  /* Create all possible locale entries which might be interested in
-     generalization.  */
-  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
-                              strlen (dirname) + 1, mask, language, territory,
-                              codeset, normalized_codeset, modifier, special,
-                              sponsor, revision, domainname, 1);
-  if (retval == NULL)
-    /* This means we are out of core.  */
-    return NULL;
-
-  if (retval->decided == 0)
-    _nl_load_domain (retval);
-  if (retval->data == NULL)
-    {
-      int cnt;
-      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
-       {
-         if (retval->successor[cnt]->decided == 0)
-           _nl_load_domain (retval->successor[cnt]);
-         if (retval->successor[cnt]->data != NULL)
-           break;
-       }
-    }
-
-  /* The room for an alias was dynamically allocated.  Free it now.  */
-  if (alias_value != NULL)
-    free (locale);
-
-  return retval;
-}
-
-
-#ifdef _LIBC
-static void __attribute__ ((unused))
-free_mem (void)
-{
-  struct loaded_l10nfile *runp = _nl_loaded_domains;
-
-  while (runp != NULL)
-    {
-      struct loaded_l10nfile *here = runp;
-      if (runp->data != NULL)
-       _nl_unload_domain ((struct loaded_domain *) runp->data);
-      runp = runp->next;
-      free (here);
-    }
-}
-
-text_set_element (__libc_subfreeres, free_mem);
-#endif
diff --git a/intl/gettext.c b/intl/gettext.c
deleted file mode 100644 (file)
index d929f98..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Implementation of gettext(3) function.
-   Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifdef _LIBC
-# define __need_NULL
-# include <stddef.h>
-#else
-# ifdef STDC_HEADERS
-#  include <stdlib.h>          /* Just for NULL.  */
-# else
-#  ifdef HAVE_STRING_H
-#   include <string.h>
-#  else
-#   define NULL ((void *) 0)
-#  endif
-# endif
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgettext.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Names for the libintl functions are a problem.  They must not clash
-   with existing names and they should follow ANSI C.  But this source
-   code is also used in GNU C Library where the names have a __
-   prefix.  So we have to make a difference here.  */
-#ifdef _LIBC
-# define GETTEXT __gettext
-# define DGETTEXT __dgettext
-#else
-# define GETTEXT gettext__
-# define DGETTEXT dgettext__
-#endif
-
-/* Look up MSGID in the current default message catalog for the current
-   LC_MESSAGES locale.  If not found, returns MSGID itself (the default
-   text).  */
-char *
-GETTEXT (msgid)
-     const char *msgid;
-{
-  return DGETTEXT (NULL, msgid);
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library.  */
-weak_alias (__gettext, gettext);
-#endif
diff --git a/intl/gettext.h b/intl/gettext.h
deleted file mode 100644 (file)
index 3cd23d7..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Internal header for GNU gettext internationalization functions.
-   Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 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.  */
-
-#ifndef _GETTEXT_H
-#define _GETTEXT_H 1
-
-#include <stdio.h>
-
-#if HAVE_LIMITS_H || _LIBC
-# include <limits.h>
-#endif
-
-/* @@ end of prolog @@ */
-
-/* The magic number of the GNU message catalog format.  */
-#define _MAGIC 0x950412de
-#define _MAGIC_SWAPPED 0xde120495
-
-/* Revision number of the currently used .mo (binary) file format.  */
-#define MO_REVISION_NUMBER 0
-
-/* The following contortions are an attempt to use the C preprocessor
-   to determine an unsigned integral type that is 32 bits wide.  An
-   alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
-   doing that would require that the configure script compile and *run*
-   the resulting executable.  Locally running cross-compiled executables
-   is usually not possible.  */
-
-#if __STDC__
-# define UINT_MAX_32_BITS 4294967295U
-#else
-# define UINT_MAX_32_BITS 0xFFFFFFFF
-#endif
-
-/* If UINT_MAX isn't defined, assume it's a 32-bit type.
-   This should be valid for all systems GNU cares about because
-   that doesn't include 16-bit systems, and only modern systems
-   (that certainly have <limits.h>) have 64+-bit integral types.  */
-
-#ifndef UINT_MAX
-# define UINT_MAX UINT_MAX_32_BITS
-#endif
-
-#if UINT_MAX == UINT_MAX_32_BITS
-typedef unsigned nls_uint32;
-#else
-# if USHRT_MAX == UINT_MAX_32_BITS
-typedef unsigned short nls_uint32;
-# else
-#  if ULONG_MAX == UINT_MAX_32_BITS
-typedef unsigned long nls_uint32;
-#  else
-  /* The following line is intended to throw an error.  Using #error is
-     not portable enough.  */
-  "Cannot determine unsigned 32-bit data type."
-#  endif
-# endif
-#endif
-
-
-/* Header for binary .mo file format.  */
-struct mo_file_header
-{
-  /* The magic number.  */
-  nls_uint32 magic;
-  /* The revision number of the file format.  */
-  nls_uint32 revision;
-  /* The number of strings pairs.  */
-  nls_uint32 nstrings;
-  /* Offset of table with start offsets of original strings.  */
-  nls_uint32 orig_tab_offset;
-  /* Offset of table with start offsets of translation strings.  */
-  nls_uint32 trans_tab_offset;
-  /* Size of hashing table.  */
-  nls_uint32 hash_tab_size;
-  /* Offset of first hashing entry.  */
-  nls_uint32 hash_tab_offset;
-};
-
-struct string_desc
-{
-  /* Length of addressed string.  */
-  nls_uint32 length;
-  /* Offset of string in file.  */
-  nls_uint32 offset;
-};
-
-/* @@ begin of epilog @@ */
-
-#endif /* gettext.h  */
diff --git a/intl/gettextP.h b/intl/gettextP.h
deleted file mode 100644 (file)
index 00c5203..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Header describing internals of gettext library
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifndef _GETTEXTP_H
-#define _GETTEXTP_H
-
-#include "loadinfo.h"
-
-/* @@ end of prolog @@ */
-
-#ifndef PARAMS
-# if __STDC__
-#  define PARAMS(args) args
-# else
-#  define PARAMS(args) ()
-# endif
-#endif
-
-#ifndef internal_function
-# define internal_function
-#endif
-
-#ifndef W
-# define W(flag, data) ((flag) ? SWAP (data) : (data))
-#endif
-
-
-#ifdef _LIBC
-# include <byteswap.h>
-# define SWAP(i) bswap_32 (i)
-#else
-static nls_uint32 SWAP PARAMS ((nls_uint32 i));
-
-static inline nls_uint32
-SWAP (i)
-     nls_uint32 i;
-{
-  return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
-}
-#endif
-
-
-struct loaded_domain
-{
-  const char *data;
-  int use_mmap;
-  size_t mmap_size;
-  int must_swap;
-  nls_uint32 nstrings;
-  struct string_desc *orig_tab;
-  struct string_desc *trans_tab;
-  nls_uint32 hash_size;
-  nls_uint32 *hash_tab;
-};
-
-struct binding
-{
-  struct binding *next;
-  char *domainname;
-  char *dirname;
-};
-
-struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
-                                                char *__locale,
-                                                const char *__domainname))
-     internal_function;
-void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
-     internal_function;
-void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
-     internal_function;
-
-/* @@ begin of epilog @@ */
-
-#endif /* gettextP.h  */
diff --git a/intl/hash-string.h b/intl/hash-string.h
deleted file mode 100644 (file)
index cacb38e..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Implements a string hashing function.
-   Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 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.  */
-
-/* @@ end of prolog @@ */
-
-#ifndef PARAMS
-# if __STDC__
-#  define PARAMS(Args) Args
-# else
-#  define PARAMS(Args) ()
-# endif
-#endif
-
-/* We assume to have `unsigned long int' value with at least 32 bits.  */
-#define HASHWORDBITS 32
-
-
-/* Defines the so called `hashpjw' function by P.J. Weinberger
-   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
-   1986, 1987 Bell Telephone Laboratories, Inc.]  */
-static unsigned long hash_string PARAMS ((const char *__str_param));
-
-static inline unsigned long
-hash_string (str_param)
-     const char *str_param;
-{
-  unsigned long int hval, g;
-  const char *str = str_param;
-
-  /* Compute the hash value for the given string.  */
-  hval = 0;
-  while (*str != '\0')
-    {
-      hval <<= 4;
-      hval += (unsigned long) *str++;
-      g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
-      if (g != 0)
-       {
-         hval ^= g >> (HASHWORDBITS - 8);
-         hval ^= g;
-       }
-    }
-  return hval;
-}
diff --git a/intl/intl-compat.c b/intl/intl-compat.c
deleted file mode 100644 (file)
index 503efa0..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
-   Library.
-   Copyright (C) 1995 Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "libgettext.h"
-
-/* @@ end of prolog @@ */
-
-
-#undef gettext
-#undef dgettext
-#undef dcgettext
-#undef textdomain
-#undef bindtextdomain
-
-
-char *
-bindtextdomain (domainname, dirname)
-     const char *domainname;
-     const char *dirname;
-{
-  return bindtextdomain__ (domainname, dirname);
-}
-
-
-char *
-dcgettext (domainname, msgid, category)
-     const char *domainname;
-     const char *msgid;
-     int category;
-{
-  return dcgettext__ (domainname, msgid, category);
-}
-
-
-char *
-dgettext (domainname, msgid)
-     const char *domainname;
-     const char *msgid;
-{
-  return dgettext__ (domainname, msgid);
-}
-
-
-char *
-gettext (msgid)
-     const char *msgid;
-{
-  return gettext__ (msgid);
-}
-
-
-char *
-textdomain (domainname)
-     const char *domainname;
-{
-  return textdomain__ (domainname);
-}
diff --git a/intl/l10nflist.c b/intl/l10nflist.c
deleted file mode 100644 (file)
index 9c7dc18..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-/* Handle list of needed message catalogs
-   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-
-#if defined HAVE_STRING_H || defined _LIBC
-# ifndef _GNU_SOURCE
-#  define _GNU_SOURCE  1
-# endif
-# include <string.h>
-#else
-# include <strings.h>
-# ifndef memcpy
-#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
-# endif
-#endif
-#if !HAVE_STRCHR && !defined _LIBC
-# ifndef strchr
-#  define strchr index
-# endif
-#endif
-
-#if defined _LIBC || defined HAVE_ARGZ_H
-# include <argz.h>
-#endif
-#include <ctype.h>
-#include <sys/types.h>
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#endif
-
-#include "loadinfo.h"
-
-/* On some strange systems still no definition of NULL is found.  Sigh!  */
-#ifndef NULL
-# if defined __STDC__ && __STDC__
-#  define NULL ((void *) 0)
-# else
-#  define NULL 0
-# endif
-#endif
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions.  This is required by the standard
-   because some ANSI C functions will require linking with this object
-   file and the name space must not be polluted.  */
-# ifndef stpcpy
-#  define stpcpy(dest, src) __stpcpy(dest, src)
-# endif
-#else
-# ifndef HAVE_STPCPY
-static char *stpcpy PARAMS ((char *dest, const char *src));
-# endif
-#endif
-
-/* Define function which are usually not available.  */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
-/* Returns the number of strings in ARGZ.  */
-static size_t argz_count__ PARAMS ((const char *argz, size_t len));
-
-static size_t
-argz_count__ (argz, len)
-     const char *argz;
-     size_t len;
-{
-  size_t count = 0;
-  while (len > 0)
-    {
-      size_t part_len = strlen (argz);
-      argz += part_len + 1;
-      len -= part_len + 1;
-      count++;
-    }
-  return count;
-}
-# undef __argz_count
-# define __argz_count(argz, len) argz_count__ (argz, len)
-#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
-/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
-   except the last into the character SEP.  */
-static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
-
-static void
-argz_stringify__ (argz, len, sep)
-     char *argz;
-     size_t len;
-     int sep;
-{
-  while (len > 0)
-    {
-      size_t part_len = strlen (argz);
-      argz += part_len;
-      len -= part_len + 1;
-      if (len > 0)
-       *argz++ = sep;
-    }
-}
-# undef __argz_stringify
-# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
-#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
-
-#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
-static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
-                                 const char *entry));
-
-static char *
-argz_next__ (argz, argz_len, entry)
-     char *argz;
-     size_t argz_len;
-     const char *entry;
-{
-  if (entry)
-    {
-      if (entry < argz + argz_len)
-        entry = strchr (entry, '\0') + 1;
-
-      return entry >= argz + argz_len ? NULL : (char *) entry;
-    }
-  else
-    if (argz_len > 0)
-      return argz;
-    else
-      return 0;
-}
-# undef __argz_next
-# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
-#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
-
-
-/* Return number of bits set in X.  */
-static int pop PARAMS ((int x));
-
-static inline int
-pop (x)
-     int x;
-{
-  /* We assume that no more than 16 bits are used.  */
-  x = ((x & ~0x5555) >> 1) + (x & 0x5555);
-  x = ((x & ~0x3333) >> 2) + (x & 0x3333);
-  x = ((x >> 4) + x) & 0x0f0f;
-  x = ((x >> 8) + x) & 0xff;
-
-  return x;
-}
-
-\f
-struct loaded_l10nfile *
-_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
-                   territory, codeset, normalized_codeset, modifier, special,
-                   sponsor, revision, filename, do_allocate)
-     struct loaded_l10nfile **l10nfile_list;
-     const char *dirlist;
-     size_t dirlist_len;
-     int mask;
-     const char *language;
-     const char *territory;
-     const char *codeset;
-     const char *normalized_codeset;
-     const char *modifier;
-     const char *special;
-     const char *sponsor;
-     const char *revision;
-     const char *filename;
-     int do_allocate;
-{
-  char *abs_filename;
-  struct loaded_l10nfile *last = NULL;
-  struct loaded_l10nfile *retval;
-  char *cp;
-  size_t entries;
-  int cnt;
-
-  /* Allocate room for the full file name.  */
-  abs_filename = (char *) malloc (dirlist_len
-                                 + strlen (language)
-                                 + ((mask & TERRITORY) != 0
-                                    ? strlen (territory) + 1 : 0)
-                                 + ((mask & XPG_CODESET) != 0
-                                    ? strlen (codeset) + 1 : 0)
-                                 + ((mask & XPG_NORM_CODESET) != 0
-                                    ? strlen (normalized_codeset) + 1 : 0)
-                                 + (((mask & XPG_MODIFIER) != 0
-                                     || (mask & CEN_AUDIENCE) != 0)
-                                    ? strlen (modifier) + 1 : 0)
-                                 + ((mask & CEN_SPECIAL) != 0
-                                    ? strlen (special) + 1 : 0)
-                                 + (((mask & CEN_SPONSOR) != 0
-                                     || (mask & CEN_REVISION) != 0)
-                                    ? (1 + ((mask & CEN_SPONSOR) != 0
-                                            ? strlen (sponsor) + 1 : 0)
-                                       + ((mask & CEN_REVISION) != 0
-                                          ? strlen (revision) + 1 : 0)) : 0)
-                                 + 1 + strlen (filename) + 1);
-
-  if (abs_filename == NULL)
-    return NULL;
-
-  retval = NULL;
-  last = NULL;
-
-  /* Construct file name.  */
-  memcpy (abs_filename, dirlist, dirlist_len);
-  __argz_stringify (abs_filename, dirlist_len, ':');
-  cp = abs_filename + (dirlist_len - 1);
-  *cp++ = '/';
-  cp = stpcpy (cp, language);
-
-  if ((mask & TERRITORY) != 0)
-    {
-      *cp++ = '_';
-      cp = stpcpy (cp, territory);
-    }
-  if ((mask & XPG_CODESET) != 0)
-    {
-      *cp++ = '.';
-      cp = stpcpy (cp, codeset);
-    }
-  if ((mask & XPG_NORM_CODESET) != 0)
-    {
-      *cp++ = '.';
-      cp = stpcpy (cp, normalized_codeset);
-    }
-  if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
-    {
-      /* This component can be part of both syntaces but has different
-        leading characters.  For CEN we use `+', else `@'.  */
-      *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
-      cp = stpcpy (cp, modifier);
-    }
-  if ((mask & CEN_SPECIAL) != 0)
-    {
-      *cp++ = '+';
-      cp = stpcpy (cp, special);
-    }
-  if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
-    {
-      *cp++ = ',';
-      if ((mask & CEN_SPONSOR) != 0)
-       cp = stpcpy (cp, sponsor);
-      if ((mask & CEN_REVISION) != 0)
-       {
-         *cp++ = '_';
-         cp = stpcpy (cp, revision);
-       }
-    }
-
-  *cp++ = '/';
-  stpcpy (cp, filename);
-
-  /* Look in list of already loaded domains whether it is already
-     available.  */
-  last = NULL;
-  for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
-    if (retval->filename != NULL)
-      {
-       int compare = strcmp (retval->filename, abs_filename);
-       if (compare == 0)
-         /* We found it!  */
-         break;
-       if (compare < 0)
-         {
-           /* It's not in the list.  */
-           retval = NULL;
-           break;
-         }
-
-       last = retval;
-      }
-
-  if (retval != NULL || do_allocate == 0)
-    {
-      free (abs_filename);
-      return retval;
-    }
-
-  retval = (struct loaded_l10nfile *)
-    malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
-                               * (1 << pop (mask))
-                               * sizeof (struct loaded_l10nfile *)));
-  if (retval == NULL)
-    return NULL;
-
-  retval->filename = abs_filename;
-  retval->decided = (__argz_count (dirlist, dirlist_len) != 1
-                    || ((mask & XPG_CODESET) != 0
-                        && (mask & XPG_NORM_CODESET) != 0));
-  retval->data = NULL;
-
-  if (last == NULL)
-    {
-      retval->next = *l10nfile_list;
-      *l10nfile_list = retval;
-    }
-  else
-    {
-      retval->next = last->next;
-      last->next = retval;
-    }
-
-  entries = 0;
-  /* If the DIRLIST is a real list the RETVAL entry corresponds not to
-     a real file.  So we have to use the DIRLIST separation mechanism
-     of the inner loop.  */
-  cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
-  for (; cnt >= 0; --cnt)
-    if ((cnt & ~mask) == 0
-       && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
-       && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
-      {
-       /* Iterate over all elements of the DIRLIST.  */
-       char *dir = NULL;
-
-       while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
-              != NULL)
-         retval->successor[entries++]
-           = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
-                                 language, territory, codeset,
-                                 normalized_codeset, modifier, special,
-                                 sponsor, revision, filename, 1);
-      }
-  retval->successor[entries] = NULL;
-
-  return retval;
-}
-\f
-/* Normalize codeset name.  There is no standard for the codeset
-   names.  Normalization allows the user to use any of the common
-   names.  */
-const char *
-_nl_normalize_codeset (codeset, name_len)
-     const unsigned char *codeset;
-     size_t name_len;
-{
-  int len = 0;
-  int only_digit = 1;
-  char *retval;
-  char *wp;
-  size_t cnt;
-
-  for (cnt = 0; cnt < name_len; ++cnt)
-    if (isalnum (codeset[cnt]))
-      {
-       ++len;
-
-       if (isalpha (codeset[cnt]))
-         only_digit = 0;
-      }
-
-  retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
-
-  if (retval != NULL)
-    {
-      if (only_digit)
-       wp = stpcpy (retval, "iso");
-      else
-       wp = retval;
-
-      for (cnt = 0; cnt < name_len; ++cnt)
-       if (isalpha (codeset[cnt]))
-         *wp++ = tolower (codeset[cnt]);
-       else if (isdigit (codeset[cnt]))
-         *wp++ = codeset[cnt];
-
-      *wp = '\0';
-    }
-
-  return (const char *) retval;
-}
-
-
-/* @@ begin of epilog @@ */
-
-/* We don't want libintl.a to depend on any other library.  So we
-   avoid the non-standard function stpcpy.  In GNU C Library this
-   function is available, though.  Also allow the symbol HAVE_STPCPY
-   to be defined.  */
-#if !_LIBC && !HAVE_STPCPY
-static char *
-stpcpy (dest, src)
-     char *dest;
-     const char *src;
-{
-  while ((*dest++ = *src++) != '\0')
-    /* Do nothing. */ ;
-  return dest - 1;
-}
-#endif
diff --git a/intl/linux-msg.sed b/intl/linux-msg.sed
deleted file mode 100644 (file)
index 5918e72..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
-# Copyright (C) 1995 Free Software Foundation, Inc.
-# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-#
-# The first directive in the .msg should be the definition of the
-# message set number.  We use always set number 1.
-#
-1 {
-  i\
-$set 1 # Automatically created by po2msg.sed
-  h
-  s/.*/0/
-  x
-}
-#
-# Mitch's old catalog format does not allow comments.
-#
-# We copy the original message as a comment into the .msg file.
-#
-/^msgid/ {
-  s/msgid[     ]*"//
-#
-# This does not work now with the new format.
-# /"$/! {
-#   s/\\$//
-#   s/$/ ... (more lines following)"/
-# }
-  x
-# The following nice solution is by
-# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-  td
-# Increment a decimal number in pattern space.
-# First hide trailing `9' digits.
-  :d
-  s/9\(_*\)$/_\1/
-  td
-# Assure at least one digit is available.
-  s/^\(_*\)$/0\1/
-# Increment the last digit.
-  s/8\(_*\)$/9\1/
-  s/7\(_*\)$/8\1/
-  s/6\(_*\)$/7\1/
-  s/5\(_*\)$/6\1/
-  s/4\(_*\)$/5\1/
-  s/3\(_*\)$/4\1/
-  s/2\(_*\)$/3\1/
-  s/1\(_*\)$/2\1/
-  s/0\(_*\)$/1\1/
-# Convert the hidden `9' digits to `0's.
-  s/_/0/g
-  x
-  G
-  s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
-}
-#
-# The .msg file contains, other then the .po file, only the translations
-# but each given a unique ID.  Starting from 1 and incrementing by 1 for
-# each message we assign them to the messages.
-# It is important that the .po file used to generate the cat-id-tbl.c file
-# (with po-to-tbl) is the same as the one used here.  (At least the order
-# of declarations must not be changed.)
-#
-/^msgstr/ {
-  s/msgstr[    ]*"\(.*\)"/# \1/
-# Clear substitution flag.
-  tb
-# Append the next line.
-  :b
-  N
-# Look whether second part is continuation line.
-  s/\(.*\n\)"\(.*\)"/\1\2/
-# Yes, then branch.
-  ta
-  P
-  D
-# Note that D includes a jump to the start!!
-# We found a continuation line.  But before printing insert '\'.
-  :a
-  s/\(.*\)\(\n.*\)/\1\\\2/
-  P
-# We cannot use D here.
-  s/.*\n\(.*\)/\1/
-  tb
-}
-d
diff --git a/intl/loadinfo.h b/intl/loadinfo.h
deleted file mode 100644 (file)
index f4ebf6d..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifndef PARAMS
-# if __STDC__
-#  define PARAMS(args) args
-# else
-#  define PARAMS(args) ()
-# endif
-#endif
-
-/* Encoding of locale name parts.  */
-#define CEN_REVISION           1
-#define CEN_SPONSOR            2
-#define CEN_SPECIAL            4
-#define XPG_NORM_CODESET       8
-#define XPG_CODESET            16
-#define TERRITORY              32
-#define CEN_AUDIENCE           64
-#define XPG_MODIFIER           128
-
-#define CEN_SPECIFIC   (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
-#define XPG_SPECIFIC   (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
-
-
-struct loaded_l10nfile
-{
-  const char *filename;
-  int decided;
-
-  const void *data;
-
-  struct loaded_l10nfile *next;
-  struct loaded_l10nfile *successor[1];
-};
-
-
-extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset,
-                                                 size_t name_len));
-
-extern struct loaded_l10nfile *
-_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
-                           const char *dirlist, size_t dirlist_len, int mask,
-                           const char *language, const char *territory,
-                           const char *codeset,
-                           const char *normalized_codeset,
-                           const char *modifier, const char *special,
-                           const char *sponsor, const char *revision,
-                           const char *filename, int do_allocate));
-
-
-extern const char *_nl_expand_alias PARAMS ((const char *name));
-
-extern int _nl_explode_name PARAMS ((char *name, const char **language,
-                                    const char **modifier,
-                                    const char **territory,
-                                    const char **codeset,
-                                    const char **normalized_codeset,
-                                    const char **special,
-                                    const char **sponsor,
-                                    const char **revision));
diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c
deleted file mode 100644 (file)
index 515892d..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Load needed message catalogs.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#endif
-
-#if defined HAVE_UNISTD_H || defined _LIBC
-# include <unistd.h>
-#endif
-
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
-# include <sys/mman.h>
-#endif
-
-#include "gettext.h"
-#include "gettextP.h"
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ISO C functions.  This is required by the standard
-   because some ISO C functions will require linking with this object
-   file and the name space must not be polluted.  */
-# define open   __open
-# define close  __close
-# define read   __read
-# define mmap   __mmap
-# define munmap __munmap
-#endif
-
-/* We need a sign, whether a new catalog was loaded, which can be associated
-   with all translations.  This is important if the translations are
-   cached by one of GCC's features.  */
-int _nl_msg_cat_cntr = 0;
-
-
-/* Load the message catalogs specified by FILENAME.  If it is no valid
-   message catalog do nothing.  */
-void
-internal_function
-_nl_load_domain (domain_file)
-     struct loaded_l10nfile *domain_file;
-{
-  int fd;
-  size_t size;
-  struct stat st;
-  struct mo_file_header *data = (struct mo_file_header *) -1;
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-    || defined _LIBC
-  int use_mmap = 0;
-#endif
-  struct loaded_domain *domain;
-
-  domain_file->decided = 1;
-  domain_file->data = NULL;
-
-  /* If the record does not represent a valid locale the FILENAME
-     might be NULL.  This can happen when according to the given
-     specification the locale file name is different for XPG and CEN
-     syntax.  */
-  if (domain_file->filename == NULL)
-    return;
-
-  /* Try to open the addressed file.  */
-  fd = open (domain_file->filename, O_RDONLY);
-  if (fd == -1)
-    return;
-
-  /* We must know about the size of the file.  */
-  if (fstat (fd, &st) != 0
-      || (size = (size_t) st.st_size) != st.st_size
-      || size < sizeof (struct mo_file_header))
-    {
-      /* Something went wrong.  */
-      close (fd);
-      return;
-    }
-
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-    || defined _LIBC
-  /* Now we are ready to load the file.  If mmap() is available we try
-     this first.  If not available or it failed we try to load it.  */
-  data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
-                                        MAP_PRIVATE, fd, 0);
-
-  if (data != (struct mo_file_header *) -1)
-    {
-      /* mmap() call was successful.  */
-      close (fd);
-      use_mmap = 1;
-    }
-#endif
-
-  /* If the data is not yet available (i.e. mmap'ed) we try to load
-     it manually.  */
-  if (data == (struct mo_file_header *) -1)
-    {
-      size_t to_read;
-      char *read_ptr;
-
-      data = (struct mo_file_header *) malloc (size);
-      if (data == NULL)
-       return;
-
-      to_read = size;
-      read_ptr = (char *) data;
-      do
-       {
-         long int nb = (long int) read (fd, read_ptr, to_read);
-         if (nb == -1)
-           {
-             close (fd);
-             return;
-           }
-
-         read_ptr += nb;
-         to_read -= nb;
-       }
-      while (to_read > 0);
-
-      close (fd);
-    }
-
-  /* Using the magic number we can test whether it really is a message
-     catalog file.  */
-  if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
-    {
-      /* The magic number is wrong: not a message catalog file.  */
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-    || defined _LIBC
-      if (use_mmap)
-       munmap ((caddr_t) data, size);
-      else
-#endif
-       free (data);
-      return;
-    }
-
-  domain_file->data
-    = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
-  if (domain_file->data == NULL)
-    return;
-
-  domain = (struct loaded_domain *) domain_file->data;
-  domain->data = (char *) data;
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-    || defined _LIBC
-  domain->use_mmap = use_mmap;
-#endif
-  domain->mmap_size = size;
-  domain->must_swap = data->magic != _MAGIC;
-
-  /* Fill in the information about the available tables.  */
-  switch (W (domain->must_swap, data->revision))
-    {
-    case 0:
-      domain->nstrings = W (domain->must_swap, data->nstrings);
-      domain->orig_tab = (struct string_desc *)
-       ((char *) data + W (domain->must_swap, data->orig_tab_offset));
-      domain->trans_tab = (struct string_desc *)
-       ((char *) data + W (domain->must_swap, data->trans_tab_offset));
-      domain->hash_size = W (domain->must_swap, data->hash_tab_size);
-      domain->hash_tab = (nls_uint32 *)
-       ((char *) data + W (domain->must_swap, data->hash_tab_offset));
-      break;
-    default:
-      /* This is an illegal revision.  */
-#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-    || defined _LIBC
-      if (use_mmap)
-       munmap ((caddr_t) data, size);
-      else
-#endif
-       free (data);
-      free (domain);
-      domain_file->data = NULL;
-      return;
-    }
-
-  /* Show that one domain is changed.  This might make some cached
-     translations invalid.  */
-  ++_nl_msg_cat_cntr;
-}
-
-
-#ifdef _LIBC
-void
-internal_function
-_nl_unload_domain (domain)
-     struct loaded_domain *domain;
-{
-  if (domain->use_mmap)
-    munmap ((caddr_t) domain->data, domain->mmap_size);
-  else
-    free ((void *) domain->data);
-
-  free (domain);
-}
-#endif
diff --git a/intl/localealias.c b/intl/localealias.c
deleted file mode 100644 (file)
index bca555a..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-/* Handle aliases for locale names.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-# define HAVE_ALLOCA 1
-#else
-# if defined HAVE_ALLOCA_H || defined _LIBC
-#  include <alloca.h>
-# else
-#  ifdef _AIX
- #pragma alloca
-#  else
-#   ifndef alloca
-char *alloca ();
-#   endif
-#  endif
-# endif
-#endif
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#else
-char *getenv ();
-# ifdef HAVE_MALLOC_H
-#  include <malloc.h>
-# else
-void free ();
-# endif
-#endif
-
-#if defined HAVE_STRING_H || defined _LIBC
-# ifndef _GNU_SOURCE
-#  define _GNU_SOURCE  1
-# endif
-# include <string.h>
-#else
-# include <strings.h>
-# ifndef memcpy
-#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
-# endif
-#endif
-#if !HAVE_STRCHR && !defined _LIBC
-# ifndef strchr
-#  define strchr index
-# endif
-#endif
-
-#include "gettext.h"
-#include "gettextP.h"
-
-/* @@ end of prolog @@ */
-
-#ifdef _LIBC
-/* Rename the non ANSI C functions.  This is required by the standard
-   because some ANSI C functions will require linking with this object
-   file and the name space must not be polluted.  */
-# define strcasecmp __strcasecmp
-
-# define mempcpy __mempcpy
-# define HAVE_MEMPCPY  1
-
-/* We need locking here since we can be called from different places.  */
-# include <bits/libc-lock.h>
-
-__libc_lock_define_initialized (static, lock);
-#endif
-
-
-/* For those loosing systems which don't have `alloca' we have to add
-   some additional code emulating it.  */
-#ifdef HAVE_ALLOCA
-/* Nothing has to be done.  */
-# define ADD_BLOCK(list, address) /* nothing */
-# define FREE_BLOCKS(list) /* nothing */
-#else
-struct block_list
-{
-  void *address;
-  struct block_list *next;
-};
-# define ADD_BLOCK(list, addr)                                               \
-  do {                                                                       \
-    struct block_list *newp = (struct block_list *) malloc (sizeof (*newp));  \
-    /* If we cannot get a free block we cannot add the new element to        \
-       the list.  */                                                         \
-    if (newp != NULL) {                                                              \
-      newp->address = (addr);                                                \
-      newp->next = (list);                                                   \
-      (list) = newp;                                                         \
-    }                                                                        \
-  } while (0)
-# define FREE_BLOCKS(list)                                                   \
-  do {                                                                       \
-    while (list != NULL) {                                                   \
-      struct block_list *old = list;                                         \
-      list = list->next;                                                     \
-      free (old);                                                            \
-    }                                                                        \
-  } while (0)
-# undef alloca
-# define alloca(size) (malloc (size))
-#endif /* have alloca */
-
-
-struct alias_map
-{
-  const char *alias;
-  const char *value;
-};
-
-
-static char *string_space = NULL;
-static size_t string_space_act = 0;
-static size_t string_space_max = 0;
-static struct alias_map *map;
-static size_t nmap = 0;
-static size_t maxmap = 0;
-
-
-/* Prototypes for local functions.  */
-static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
-     internal_function;
-static void extend_alias_table PARAMS ((void));
-static int alias_compare PARAMS ((const struct alias_map *map1,
-                                 const struct alias_map *map2));
-
-
-const char *
-_nl_expand_alias (name)
-    const char *name;
-{
-  static const char *locale_alias_path = LOCALE_ALIAS_PATH;
-  struct alias_map *retval;
-  const char *result = NULL;
-  size_t added;
-
-#ifdef _LIBC
-  __libc_lock_lock (lock);
-#endif
-
-  do
-    {
-      struct alias_map item;
-
-      item.alias = name;
-
-      if (nmap > 0)
-       retval = (struct alias_map *) bsearch (&item, map, nmap,
-                                              sizeof (struct alias_map),
-                                              (int (*) PARAMS ((const void *,
-                                                                const void *))
-                                               ) alias_compare);
-      else
-       retval = NULL;
-
-      /* We really found an alias.  Return the value.  */
-      if (retval != NULL)
-       {
-         result = retval->value;
-         break;
-       }
-
-      /* Perhaps we can find another alias file.  */
-      added = 0;
-      while (added == 0 && locale_alias_path[0] != '\0')
-       {
-         const char *start;
-
-         while (locale_alias_path[0] == ':')
-           ++locale_alias_path;
-         start = locale_alias_path;
-
-         while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
-           ++locale_alias_path;
-
-         if (start < locale_alias_path)
-           added = read_alias_file (start, locale_alias_path - start);
-       }
-    }
-  while (added != 0);
-
-#ifdef _LIBC
-  __libc_lock_unlock (lock);
-#endif
-
-  return result;
-}
-
-
-static size_t
-internal_function
-read_alias_file (fname, fname_len)
-     const char *fname;
-     int fname_len;
-{
-#ifndef HAVE_ALLOCA
-  struct block_list *block_list = NULL;
-#endif
-  FILE *fp;
-  char *full_fname;
-  size_t added;
-  static const char aliasfile[] = "/locale.alias";
-
-  full_fname = (char *) alloca (fname_len + sizeof aliasfile);
-  ADD_BLOCK (block_list, full_fname);
-#ifdef HAVE_MEMPCPY
-  mempcpy (mempcpy (full_fname, fname, fname_len),
-          aliasfile, sizeof aliasfile);
-#else
-  memcpy (full_fname, fname, fname_len);
-  memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
-#endif
-
-  fp = fopen (full_fname, "r");
-  if (fp == NULL)
-    {
-      FREE_BLOCKS (block_list);
-      return 0;
-    }
-
-  added = 0;
-  while (!feof (fp))
-    {
-      /* It is a reasonable approach to use a fix buffer here because
-        a) we are only interested in the first two fields
-        b) these fields must be usable as file names and so must not
-           be that long
-       */
-      unsigned char buf[BUFSIZ];
-      unsigned char *alias;
-      unsigned char *value;
-      unsigned char *cp;
-
-      if (fgets (buf, sizeof buf, fp) == NULL)
-       /* EOF reached.  */
-       break;
-
-      /* Possibly not the whole line fits into the buffer.  Ignore
-        the rest of the line.  */
-      if (strchr (buf, '\n') == NULL)
-       {
-         char altbuf[BUFSIZ];
-         do
-           if (fgets (altbuf, sizeof altbuf, fp) == NULL)
-             /* Make sure the inner loop will be left.  The outer loop
-                will exit at the `feof' test.  */
-             break;
-         while (strchr (altbuf, '\n') == NULL);
-       }
-
-      cp = buf;
-      /* Ignore leading white space.  */
-      while (isspace (cp[0]))
-       ++cp;
-
-      /* A leading '#' signals a comment line.  */
-      if (cp[0] != '\0' && cp[0] != '#')
-       {
-         alias = cp++;
-         while (cp[0] != '\0' && !isspace (cp[0]))
-           ++cp;
-         /* Terminate alias name.  */
-         if (cp[0] != '\0')
-           *cp++ = '\0';
-
-         /* Now look for the beginning of the value.  */
-         while (isspace (cp[0]))
-           ++cp;
-
-         if (cp[0] != '\0')
-           {
-             size_t alias_len;
-             size_t value_len;
-
-             value = cp++;
-             while (cp[0] != '\0' && !isspace (cp[0]))
-               ++cp;
-             /* Terminate value.  */
-             if (cp[0] == '\n')
-               {
-                 /* This has to be done to make the following test
-                    for the end of line possible.  We are looking for
-                    the terminating '\n' which do not overwrite here.  */
-                 *cp++ = '\0';
-                 *cp = '\n';
-               }
-             else if (cp[0] != '\0')
-               *cp++ = '\0';
-
-             if (nmap >= maxmap)
-               extend_alias_table ();
-
-             alias_len = strlen (alias) + 1;
-             value_len = strlen (value) + 1;
-
-             if (string_space_act + alias_len + value_len > string_space_max)
-               {
-                 /* Increase size of memory pool.  */
-                 size_t new_size = (string_space_max
-                                    + (alias_len + value_len > 1024
-                                       ? alias_len + value_len : 1024));
-                 char *new_pool = (char *) realloc (string_space, new_size);
-                 if (new_pool == NULL)
-                   {
-                     FREE_BLOCKS (block_list);
-                     return added;
-                   }
-                 string_space = new_pool;
-                 string_space_max = new_size;
-               }
-
-             map[nmap].alias = memcpy (&string_space[string_space_act],
-                                       alias, alias_len);
-             string_space_act += alias_len;
-
-             map[nmap].value = memcpy (&string_space[string_space_act],
-                                       value, value_len);
-             string_space_act += value_len;
-
-             ++nmap;
-             ++added;
-           }
-       }
-    }
-
-  /* Should we test for ferror()?  I think we have to silently ignore
-     errors.  --drepper  */
-  fclose (fp);
-
-  if (added > 0)
-    qsort (map, nmap, sizeof (struct alias_map),
-          (int (*) PARAMS ((const void *, const void *))) alias_compare);
-
-  FREE_BLOCKS (block_list);
-  return added;
-}
-
-
-static void
-extend_alias_table ()
-{
-  size_t new_size;
-  struct alias_map *new_map;
-
-  new_size = maxmap == 0 ? 100 : 2 * maxmap;
-  new_map = (struct alias_map *) realloc (map, (new_size
-                                               * sizeof (struct alias_map)));
-  if (new_map == NULL)
-    /* Simply don't extend: we don't have any more core.  */
-    return;
-
-  map = new_map;
-  maxmap = new_size;
-}
-
-
-#ifdef _LIBC
-static void __attribute__ ((unused))
-free_mem (void)
-{
-  if (string_space != NULL)
-    free (string_space);
-  if (map != NULL)
-    free (map);
-}
-text_set_element (__libc_subfreeres, free_mem);
-#endif
-
-
-static int
-alias_compare (map1, map2)
-     const struct alias_map *map1;
-     const struct alias_map *map2;
-{
-#if defined _LIBC || defined HAVE_STRCASECMP
-  return strcasecmp (map1->alias, map2->alias);
-#else
-  const unsigned char *p1 = (const unsigned char *) map1->alias;
-  const unsigned char *p2 = (const unsigned char *) map2->alias;
-  unsigned char c1, c2;
-
-  if (p1 == p2)
-    return 0;
-
-  do
-    {
-      /* I know this seems to be odd but the tolower() function in
-        some systems libc cannot handle nonalpha characters.  */
-      c1 = isupper (*p1) ? tolower (*p1) : *p1;
-      c2 = isupper (*p2) ? tolower (*p2) : *p2;
-      if (c1 == '\0')
-       break;
-      ++p1;
-      ++p2;
-    }
-  while (c1 == c2);
-
-  return c1 - c2;
-#endif
-}
diff --git a/intl/po2tbl.sed.in b/intl/po2tbl.sed.in
deleted file mode 100644 (file)
index b3bcca4..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
-# Copyright (C) 1995 Free Software Foundation, Inc.
-# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-1 {
-  i\
-/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot.  */\
-\
-#if HAVE_CONFIG_H\
-# include <config.h>\
-#endif\
-\
-#include "libgettext.h"\
-\
-const struct _msg_ent _msg_tbl[] = {
-  h
-  s/.*/0/
-  x
-}
-#
-# Write msgid entries in C array form.
-#
-/^msgid/ {
-  s/msgid[     ]*\(".*"\)/  {\1/
-  tb
-# Append the next line
-  :b
-  N
-# Look whether second part is continuation line.
-  s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
-# Yes, then branch.
-  ta
-# Because we assume that the input file correctly formed the line
-# just read cannot be again be a msgid line.  So it's safe to ignore
-# it.
-  s/\(.*\)\n.*/\1/
-  bc
-# We found a continuation line.  But before printing insert '\'.
-  :a
-  s/\(.*\)\(\n.*\)/\1\\\2/
-  P
-# We cannot use D here.
-  s/.*\n\(.*\)/\1/
-# Some buggy seds do not clear the `successful substitution since last ``t'''
-# flag on `N', so we do a `t' here to clear it.
-  tb
-# Not reached
-  :c
-  x
-# The following nice solution is by
-# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-  td
-# Increment a decimal number in pattern space.
-# First hide trailing `9' digits.
-  :d
-  s/9\(_*\)$/_\1/
-  td
-# Assure at least one digit is available.
-  s/^\(_*\)$/0\1/
-# Increment the last digit.
-  s/8\(_*\)$/9\1/
-  s/7\(_*\)$/8\1/
-  s/6\(_*\)$/7\1/
-  s/5\(_*\)$/6\1/
-  s/4\(_*\)$/5\1/
-  s/3\(_*\)$/4\1/
-  s/2\(_*\)$/3\1/
-  s/1\(_*\)$/2\1/
-  s/0\(_*\)$/1\1/
-# Convert the hidden `9' digits to `0's.
-  s/_/0/g
-  x
-  G
-  s/\(.*\)\n\([0-9]*\)/\1, \2},/
-  s/\(.*\)"$/\1/
-  p
-}
-#
-# Last line.
-#
-$ {
-  i\
-};\
-
-  g
-  s/0*\(.*\)/int _msg_tbl_length = \1;/p
-}
-d
diff --git a/intl/textdomain.c b/intl/textdomain.c
deleted file mode 100644 (file)
index 8855746..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Implementation of the textdomain(3) function.
-   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program 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 General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software Foundation,
-   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined STDC_HEADERS || defined _LIBC
-# include <stdlib.h>
-#endif
-
-#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
-# include <string.h>
-#else
-# include <strings.h>
-# ifndef memcpy
-#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
-# endif
-#endif
-
-#ifdef _LIBC
-# include <libintl.h>
-#else
-# include "libgettext.h"
-#endif
-
-/* @@ end of prolog @@ */
-
-/* Name of the default text domain.  */
-extern const char _nl_default_default_domain[];
-
-/* Default text domain in which entries for gettext(3) are to be found.  */
-extern const char *_nl_current_default_domain;
-
-
-/* Names for the libintl functions are a problem.  They must not clash
-   with existing names and they should follow ANSI C.  But this source
-   code is also used in GNU C Library where the names have a __
-   prefix.  So we have to make a difference here.  */
-#ifdef _LIBC
-# define TEXTDOMAIN __textdomain
-# ifndef strdup
-#  define strdup(str) __strdup (str)
-# endif
-#else
-# define TEXTDOMAIN textdomain__
-#endif
-
-/* Set the current default message catalog to DOMAINNAME.
-   If DOMAINNAME is null, return the current default.
-   If DOMAINNAME is "", reset to the default of "messages".  */
-char *
-TEXTDOMAIN (domainname)
-     const char *domainname;
-{
-  char *old;
-
-  /* A NULL pointer requests the current setting.  */
-  if (domainname == NULL)
-    return (char *) _nl_current_default_domain;
-
-  old = (char *) _nl_current_default_domain;
-
-  /* If domain name is the null string set to default domain "messages".  */
-  if (domainname[0] == '\0'
-      || strcmp (domainname, _nl_default_default_domain) == 0)
-    _nl_current_default_domain = _nl_default_default_domain;
-  else
-    {
-      /* If the following malloc fails `_nl_current_default_domain'
-        will be NULL.  This value will be returned and so signals we
-        are out of core.  */
-#if defined _LIBC || defined HAVE_STRDUP
-      _nl_current_default_domain = strdup (domainname);
-#else
-      size_t len = strlen (domainname) + 1;
-      char *cp = (char *) malloc (len);
-      if (cp != NULL)
-       memcpy (cp, domainname, len);
-      _nl_current_default_domain = cp;
-#endif
-    }
-
-  if (old != _nl_default_default_domain)
-    free (old);
-
-  return (char *) _nl_current_default_domain;
-}
-
-#ifdef _LIBC
-/* Alias for function name in GNU C Library.  */
-weak_alias (__textdomain, textdomain);
-#endif
diff --git a/intl/xopen-msg.sed b/intl/xopen-msg.sed
deleted file mode 100644 (file)
index b19c0bb..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
-# Copyright (C) 1995 Free Software Foundation, Inc.
-# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-#
-# The first directive in the .msg should be the definition of the
-# message set number.  We use always set number 1.
-#
-1 {
-  i\
-$set 1 # Automatically created by po2msg.sed
-  h
-  s/.*/0/
-  x
-}
-#
-# We copy all comments into the .msg file.  Perhaps they can help.
-#
-/^#/ s/^#[     ]*/$ /p
-#
-# We copy the original message as a comment into the .msg file.
-#
-/^msgid/ {
-# Does not work now
-#  /"$/! {
-#    s/\\$//
-#    s/$/ ... (more lines following)"/
-#  }
-  s/^msgid[    ]*"\(.*\)"$/$ Original Message: \1/
-  p
-}
-#
-# The .msg file contains, other then the .po file, only the translations
-# but each given a unique ID.  Starting from 1 and incrementing by 1 for
-# each message we assign them to the messages.
-# It is important that the .po file used to generate the cat-id-tbl.c file
-# (with po-to-tbl) is the same as the one used here.  (At least the order
-# of declarations must not be changed.)
-#
-/^msgstr/ {
-  s/msgstr[    ]*"\(.*\)"/\1/
-  x
-# The following nice solution is by
-# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-  td
-# Increment a decimal number in pattern space.
-# First hide trailing `9' digits.
-  :d
-  s/9\(_*\)$/_\1/
-  td
-# Assure at least one digit is available.
-  s/^\(_*\)$/0\1/
-# Increment the last digit.
-  s/8\(_*\)$/9\1/
-  s/7\(_*\)$/8\1/
-  s/6\(_*\)$/7\1/
-  s/5\(_*\)$/6\1/
-  s/4\(_*\)$/5\1/
-  s/3\(_*\)$/4\1/
-  s/2\(_*\)$/3\1/
-  s/1\(_*\)$/2\1/
-  s/0\(_*\)$/1\1/
-# Convert the hidden `9' digits to `0's.
-  s/_/0/g
-  x
-# Bring the line in the format `<number> <message>'
-  G
-  s/^[^\n]*$/& /
-  s/\(.*\)\n\([0-9]*\)/\2 \1/
-# Clear flag from last substitution.
-  tb
-# Append the next line.
-  :b
-  N
-# Look whether second part is a continuation line.
-  s/\(.*\n\)"\(.*\)"/\1\2/
-# Yes, then branch.
-  ta
-  P
-  D
-# Note that `D' includes a jump to the start!!
-# We found a continuation line.  But before printing insert '\'.
-  :a
-  s/\(.*\)\(\n.*\)/\1\\\2/
-  P
-# We cannot use the sed command `D' here
-  s/.*\n\(.*\)/\1/
-  tb
-}
-d
index 0254d182b0600894f38c5e53f10edd1282c2e80c..2d66af6df19f46b2195b347597ac4b54046621a1 100644 (file)
@@ -1,3 +1,20 @@
+1999-12-14  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am: Adapt to the gettext scheme used in wdiff.
+       * gettext.c, gettext.h: New files.
+
+1999-12-12  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am: Replace strtol and strtoul only when missing.
+       Reported by Tom Hageman.
+
+1999-06-15  François Pinard  <pinard@iro.umontreal.ca>
+
+       * alloca.c, malloc.c, realloc.c: New files, from elsewhere.
+       * Makefile.am (EXTRA_DIST): Distribute them.
+       (libreco_a_LIBADD): Uncomment.
+       Reported by Alan J. Flavell, Alexandre Oliva and Peter Turcan.
+\f
 1998-12-13  François Pinard  <pinard@iro.umontreal.ca>
 
        * argmatch.c, argmatch.h, hash.c, hash.h: Moved away, into src.
index 52dbbca5d72821cdbbfb5f09ed9bea18240ad9be..0cf1f825c16506c2f34159a2e302cbbf339445f3 100644 (file)
@@ -1,5 +1,5 @@
 # Makefile for `recode' (own internal) library.
-# Copyright © 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright © 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
 # François Pinard <pinard@iro.umontreal.ca>
 
 # This program is free software; you can redistribute it and/or modify
 AUTOMAKE_OPTIONS = gnits
 
 noinst_LIBRARIES = libreco.a
-noinst_HEADERS = error.h getopt.h pathmax.h xalloc.h xstring.h
-libreco_a_SOURCES = error.c getopt.c getopt1.c strtoul.c xmalloc.c \
-xstrdup.c
+noinst_HEADERS = error.h getopt.h gettext.h pathmax.h xalloc.h xstring.h
+libreco_a_SOURCES = error.c getopt.c getopt1.c xmalloc.c xstrdup.c
 
-EXTRA_DIST = strtol.c
+EXTRA_DIST = alloca.c gettext.c malloc.c realloc.c strtol.c strtoul.c
 
 INCLUDES = -I.. -I$(srcdir) -I../intl
 
-## libreco_a_LIBADD = @ALLOCA@ @LIBOBJS@
+libreco_a_LIBADD = @ALLOCA@ @LIBOBJS@
 ## libreco_a_DEPENDENCIES = $(libtar_a_LIBADD)
+localedir = $(prefix)/share/locale
+aliaspath = $(localedir):.
+
+gettext.o: gettext.c
+       $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \
+         -c $(srcdir)/gettext.c
+
+gettext._o: gettext._c
+       @rm -f _gettext.c
+       @ln gettext._c _gettext.c
+       $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \
+         -c _gettext.c
+       @mv _gettext.o $@
+       @rm _gettext.c
index 1cfb877d8e4e300dc914f2d1a9751189be6f280a..0c5f1cbc8838551231e39f65a970e3bc85079de1 100644 (file)
@@ -11,7 +11,7 @@
 # PARTICULAR PURPOSE.
 
 # Makefile for `recode' (own internal) library.
-# Copyright © 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+# Copyright © 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
 # François Pinard <pinard@iro.umontreal.ca>
 
 # This program is free software; you can redistribute it and/or modify
@@ -78,9 +78,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
-AWK = @AWK@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -99,16 +101,16 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
 LEX = @LEX@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
@@ -123,13 +125,16 @@ l = @l@
 AUTOMAKE_OPTIONS = gnits
 
 noinst_LIBRARIES = libreco.a
-noinst_HEADERS = error.h getopt.h pathmax.h xalloc.h xstring.h
-libreco_a_SOURCES = error.c getopt.c getopt1.c strtoul.c xmalloc.c xstrdup.c
+noinst_HEADERS = error.h getopt.h gettext.h pathmax.h xalloc.h xstring.h
+libreco_a_SOURCES = error.c getopt.c getopt1.c xmalloc.c xstrdup.c
 
-
-EXTRA_DIST = strtol.c
+EXTRA_DIST = alloca.c gettext.c malloc.c realloc.c strtol.c strtoul.c
 
 INCLUDES = -I.. -I$(srcdir) -I../intl
+
+libreco_a_LIBADD = @ALLOCA@ @LIBOBJS@
+localedir = $(prefix)/share/locale
+aliaspath = $(localedir):.
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
 CONFIG_CLEAN_FILES = 
@@ -140,9 +145,8 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I..
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-libreco_a_LIBADD = 
-libreco_a_OBJECTS =  error.o getopt.o getopt1.o strtoul.o xmalloc.o \
-xstrdup.o
+libreco_a_DEPENDENCIES =  @ALLOCA@ @LIBOBJS@
+libreco_a_OBJECTS =  error.o getopt.o getopt1.o xmalloc.o xstrdup.o
 AR = ar
 CFLAGS = @CFLAGS@
 COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -151,7 +155,8 @@ CCLD = $(CC)
 LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
 HEADERS =  $(noinst_HEADERS)
 
-DIST_COMMON =  ChangeLog Makefile.am Makefile.in
+DIST_COMMON =  ChangeLog Makefile.am Makefile.in alloca.c gettext.c \
+malloc.c realloc.c strtol.c strtoul.c
 
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
@@ -271,7 +276,6 @@ distdir: $(DISTFILES)
 error.o: error.c ../config.h error.h
 getopt.o: getopt.c ../config.h
 getopt1.o: getopt1.c ../config.h getopt.h
-strtoul.o: strtoul.c strtol.c ../config.h
 xmalloc.o: xmalloc.c ../config.h error.h xalloc.h
 xstrdup.o: xstrdup.c ../config.h
 
@@ -350,6 +354,18 @@ mostlyclean-generic distclean-generic clean-generic \
 maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
+gettext.o: gettext.c
+       $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \
+         -c $(srcdir)/gettext.c
+
+gettext._o: gettext._c
+       @rm -f _gettext.c
+       @ln gettext._c _gettext.c
+       $(COMPILE) -DALIASPATH=\"$(aliaspath)\" -DLOCALEDIR=\"$(localedir)\" \
+         -c _gettext.c
+       @mv _gettext.o $@
+       @rm _gettext.c
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/lib/alloca.c b/lib/alloca.c
new file mode 100644 (file)
index 0000000..10e5d65
--- /dev/null
@@ -0,0 +1,494 @@
+/* alloca.c -- allocate automatically reclaimed memory
+   (Mostly) portable public-domain implementation -- D A Gwyn
+
+   This implementation of the PWB library alloca function,
+   which is used to allocate space off the run-time stack so
+   that it is automatically reclaimed upon procedure exit,
+   was inspired by discussions with J. Q. Johnson of Cornell.
+   J.Otto Tennant <jot@cray.com> contributed the Cray support.
+
+   There are some preprocessor constants that can
+   be defined when compiling for your specific system, for
+   improved efficiency; however, the defaults should be okay.
+
+   The general concept of this implementation is to keep
+   track of all alloca-allocated blocks, and reclaim any
+   that are found to be deeper in the stack than the current
+   invocation.  This heuristic does not reclaim storage as
+   soon as it becomes invalid, but it will do so eventually.
+
+   As a special case, alloca(0) reclaims storage without
+   allocating any.  It is a good idea to use alloca(0) in
+   your main control loop, etc. to force garbage collection.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef emacs
+# include "blockinput.h"
+#endif
+
+/* If compiling with GCC 2, this file's not needed.  */
+#if !defined (__GNUC__) || __GNUC__ < 2
+
+/* If someone has defined alloca as a macro,
+   there must be some other way alloca is supposed to work.  */
+# ifndef alloca
+
+#  ifdef emacs
+#   ifdef static
+/* actually, only want this if static is defined as ""
+   -- this is for usg, in which emacs must undefine static
+   in order to make unexec workable
+   */
+#    ifndef STACK_DIRECTION
+you
+lose
+-- must know STACK_DIRECTION at compile-time
+#    endif /* STACK_DIRECTION undefined */
+#   endif /* static */
+#  endif /* emacs */
+
+/* If your stack is a linked list of frames, you have to
+   provide an "address metric" ADDRESS_FUNCTION macro.  */
+
+#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
+long i00afunc ();
+#   define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
+#  else
+#   define ADDRESS_FUNCTION(arg) &(arg)
+#  endif
+
+#  if __STDC__
+typedef void *pointer;
+#  else
+typedef char *pointer;
+#  endif
+
+#  ifndef NULL
+#   define NULL 0
+#  endif
+
+/* Different portions of Emacs need to call different versions of
+   malloc.  The Emacs executable needs alloca to call xmalloc, because
+   ordinary malloc isn't protected from input signals.  On the other
+   hand, the utilities in lib-src need alloca to call malloc; some of
+   them are very simple, and don't have an xmalloc routine.
+
+   Non-Emacs programs expect this to call xmalloc.
+
+   Callers below should use malloc.  */
+
+#  ifndef emacs
+#   define malloc xmalloc
+#  endif
+extern pointer malloc ();
+
+/* Define STACK_DIRECTION if you know the direction of stack
+   growth for your system; otherwise it will be automatically
+   deduced at run-time.
+
+   STACK_DIRECTION > 0 => grows toward higher addresses
+   STACK_DIRECTION < 0 => grows toward lower addresses
+   STACK_DIRECTION = 0 => direction of growth unknown  */
+
+#  ifndef STACK_DIRECTION
+#   define STACK_DIRECTION     0       /* Direction unknown.  */
+#  endif
+
+#  if STACK_DIRECTION != 0
+
+#   define STACK_DIR   STACK_DIRECTION /* Known at compile-time.  */
+
+#  else /* STACK_DIRECTION == 0; need run-time code.  */
+
+static int stack_dir;          /* 1 or -1 once known.  */
+#   define STACK_DIR   stack_dir
+
+static void
+find_stack_direction ()
+{
+  static char *addr = NULL;    /* Address of first `dummy', once known.  */
+  auto char dummy;             /* To get stack address.  */
+
+  if (addr == NULL)
+    {                          /* Initial entry.  */
+      addr = ADDRESS_FUNCTION (dummy);
+
+      find_stack_direction (); /* Recurse once.  */
+    }
+  else
+    {
+      /* Second entry.  */
+      if (ADDRESS_FUNCTION (dummy) > addr)
+       stack_dir = 1;          /* Stack grew upward.  */
+      else
+       stack_dir = -1;         /* Stack grew downward.  */
+    }
+}
+
+#  endif /* STACK_DIRECTION == 0 */
+
+/* An "alloca header" is used to:
+   (a) chain together all alloca'ed blocks;
+   (b) keep track of stack depth.
+
+   It is very important that sizeof(header) agree with malloc
+   alignment chunk size.  The following default should work okay.  */
+
+#  ifndef      ALIGN_SIZE
+#   define ALIGN_SIZE  sizeof(double)
+#  endif
+
+typedef union hdr
+{
+  char align[ALIGN_SIZE];      /* To force sizeof(header).  */
+  struct
+    {
+      union hdr *next;         /* For chaining headers.  */
+      char *deep;              /* For stack depth measure.  */
+    } h;
+} header;
+
+static header *last_alloca_header = NULL;      /* -> last alloca header.  */
+
+/* Return a pointer to at least SIZE bytes of storage,
+   which will be automatically reclaimed upon exit from
+   the procedure that called alloca.  Originally, this space
+   was supposed to be taken from the current stack frame of the
+   caller, but that method cannot be made to work for some
+   implementations of C, for example under Gould's UTX/32.  */
+
+pointer
+alloca (size)
+     unsigned size;
+{
+  auto char probe;             /* Probes stack depth: */
+  register char *depth = ADDRESS_FUNCTION (probe);
+
+#  if STACK_DIRECTION == 0
+  if (STACK_DIR == 0)          /* Unknown growth direction.  */
+    find_stack_direction ();
+#  endif
+
+  /* Reclaim garbage, defined as all alloca'd storage that
+     was allocated from deeper in the stack than currently.  */
+
+  {
+    register header *hp;       /* Traverses linked list.  */
+
+#  ifdef emacs
+    BLOCK_INPUT;
+#  endif
+
+    for (hp = last_alloca_header; hp != NULL;)
+      if ((STACK_DIR > 0 && hp->h.deep > depth)
+         || (STACK_DIR < 0 && hp->h.deep < depth))
+       {
+         register header *np = hp->h.next;
+
+         free ((pointer) hp);  /* Collect garbage.  */
+
+         hp = np;              /* -> next header.  */
+       }
+      else
+       break;                  /* Rest are not deeper.  */
+
+    last_alloca_header = hp;   /* -> last valid storage.  */
+
+#  ifdef emacs
+    UNBLOCK_INPUT;
+#  endif
+  }
+
+  if (size == 0)
+    return NULL;               /* No allocation required.  */
+
+  /* Allocate combined header + user data storage.  */
+
+  {
+    register pointer new = malloc (sizeof (header) + size);
+    /* Address of header.  */
+
+    ((header *) new)->h.next = last_alloca_header;
+    ((header *) new)->h.deep = depth;
+
+    last_alloca_header = (header *) new;
+
+    /* User storage begins just after header.  */
+
+    return (pointer) ((char *) new + sizeof (header));
+  }
+}
+
+#  if defined (CRAY) && defined (CRAY_STACKSEG_END)
+
+#   ifdef DEBUG_I00AFUNC
+#    include <stdio.h>
+#   endif
+
+#   ifndef CRAY_STACK
+#    define CRAY_STACK
+#    ifndef CRAY2
+/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
+struct stack_control_header
+  {
+    long shgrow:32;            /* Number of times stack has grown.  */
+    long shaseg:32;            /* Size of increments to stack.  */
+    long shhwm:32;             /* High water mark of stack.  */
+    long shsize:32;            /* Current size of stack (all segments).  */
+  };
+
+/* The stack segment linkage control information occurs at
+   the high-address end of a stack segment.  (The stack
+   grows from low addresses to high addresses.)  The initial
+   part of the stack segment linkage control information is
+   0200 (octal) words.  This provides for register storage
+   for the routine which overflows the stack.  */
+
+struct stack_segment_linkage
+  {
+    long ss[0200];             /* 0200 overflow words.  */
+    long sssize:32;            /* Number of words in this segment.  */
+    long ssbase:32;            /* Offset to stack base.  */
+    long:32;
+    long sspseg:32;            /* Offset to linkage control of previous
+                                  segment of stack.  */
+    long:32;
+    long sstcpt:32;            /* Pointer to task common address block.  */
+    long sscsnm;               /* Private control structure number for
+                                  microtasking.  */
+    long ssusr1;               /* Reserved for user.  */
+    long ssusr2;               /* Reserved for user.  */
+    long sstpid;               /* Process ID for pid based multi-tasking.  */
+    long ssgvup;               /* Pointer to multitasking thread giveup.  */
+    long sscray[7];            /* Reserved for Cray Research.  */
+    long ssa0;
+    long ssa1;
+    long ssa2;
+    long ssa3;
+    long ssa4;
+    long ssa5;
+    long ssa6;
+    long ssa7;
+    long sss0;
+    long sss1;
+    long sss2;
+    long sss3;
+    long sss4;
+    long sss5;
+    long sss6;
+    long sss7;
+  };
+
+#    else /* CRAY2 */
+/* The following structure defines the vector of words
+   returned by the STKSTAT library routine.  */
+struct stk_stat
+  {
+    long now;                  /* Current total stack size.  */
+    long maxc;                 /* Amount of contiguous space which would
+                                  be required to satisfy the maximum
+                                  stack demand to date.  */
+    long high_water;           /* Stack high-water mark.  */
+    long overflows;            /* Number of stack overflow ($STKOFEN) calls.  */
+    long hits;                 /* Number of internal buffer hits.  */
+    long extends;              /* Number of block extensions.  */
+    long stko_mallocs;         /* Block allocations by $STKOFEN.  */
+    long underflows;           /* Number of stack underflow calls ($STKRETN).  */
+    long stko_free;            /* Number of deallocations by $STKRETN.  */
+    long stkm_free;            /* Number of deallocations by $STKMRET.  */
+    long segments;             /* Current number of stack segments.  */
+    long maxs;                 /* Maximum number of stack segments so far.  */
+    long pad_size;             /* Stack pad size.  */
+    long current_address;      /* Current stack segment address.  */
+    long current_size;         /* Current stack segment size.  This
+                                  number is actually corrupted by STKSTAT to
+                                  include the fifteen word trailer area.  */
+    long initial_address;      /* Address of initial segment.  */
+    long initial_size;         /* Size of initial segment.  */
+  };
+
+/* The following structure describes the data structure which trails
+   any stack segment.  I think that the description in 'asdef' is
+   out of date.  I only describe the parts that I am sure about.  */
+
+struct stk_trailer
+  {
+    long this_address;         /* Address of this block.  */
+    long this_size;            /* Size of this block (does not include
+                                  this trailer).  */
+    long unknown2;
+    long unknown3;
+    long link;                 /* Address of trailer block of previous
+                                  segment.  */
+    long unknown5;
+    long unknown6;
+    long unknown7;
+    long unknown8;
+    long unknown9;
+    long unknown10;
+    long unknown11;
+    long unknown12;
+    long unknown13;
+    long unknown14;
+  };
+
+#    endif /* CRAY2 */
+#   endif /* not CRAY_STACK */
+
+#   ifdef CRAY2
+/* Determine a "stack measure" for an arbitrary ADDRESS.
+   I doubt that "lint" will like this much.  */
+
+static long
+i00afunc (long *address)
+{
+  struct stk_stat status;
+  struct stk_trailer *trailer;
+  long *block, size;
+  long result = 0;
+
+  /* We want to iterate through all of the segments.  The first
+     step is to get the stack status structure.  We could do this
+     more quickly and more directly, perhaps, by referencing the
+     $LM00 common block, but I know that this works.  */
+
+  STKSTAT (&status);
+
+  /* Set up the iteration.  */
+
+  trailer = (struct stk_trailer *) (status.current_address
+                                   + status.current_size
+                                   - 15);
+
+  /* There must be at least one stack segment.  Therefore it is
+     a fatal error if "trailer" is null.  */
+
+  if (trailer == 0)
+    abort ();
+
+  /* Discard segments that do not contain our argument address.  */
+
+  while (trailer != 0)
+    {
+      block = (long *) trailer->this_address;
+      size = trailer->this_size;
+      if (block == 0 || size == 0)
+       abort ();
+      trailer = (struct stk_trailer *) trailer->link;
+      if ((block <= address) && (address < (block + size)))
+       break;
+    }
+
+  /* Set the result to the offset in this segment and add the sizes
+     of all predecessor segments.  */
+
+  result = address - block;
+
+  if (trailer == 0)
+    {
+      return result;
+    }
+
+  do
+    {
+      if (trailer->this_size <= 0)
+       abort ();
+      result += trailer->this_size;
+      trailer = (struct stk_trailer *) trailer->link;
+    }
+  while (trailer != 0);
+
+  /* We are done.  Note that if you present a bogus address (one
+     not in any segment), you will get a different number back, formed
+     from subtracting the address of the first block.  This is probably
+     not what you want.  */
+
+  return (result);
+}
+
+#   else /* not CRAY2 */
+/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
+   Determine the number of the cell within the stack,
+   given the address of the cell.  The purpose of this
+   routine is to linearize, in some sense, stack addresses
+   for alloca.  */
+
+static long
+i00afunc (long address)
+{
+  long stkl = 0;
+
+  long size, pseg, this_segment, stack;
+  long result = 0;
+
+  struct stack_segment_linkage *ssptr;
+
+  /* Register B67 contains the address of the end of the
+     current stack segment.  If you (as a subprogram) store
+     your registers on the stack and find that you are past
+     the contents of B67, you have overflowed the segment.
+
+     B67 also points to the stack segment linkage control
+     area, which is what we are really interested in.  */
+
+  stkl = CRAY_STACKSEG_END ();
+  ssptr = (struct stack_segment_linkage *) stkl;
+
+  /* If one subtracts 'size' from the end of the segment,
+     one has the address of the first word of the segment.
+
+     If this is not the first segment, 'pseg' will be
+     nonzero.  */
+
+  pseg = ssptr->sspseg;
+  size = ssptr->sssize;
+
+  this_segment = stkl - size;
+
+  /* It is possible that calling this routine itself caused
+     a stack overflow.  Discard stack segments which do not
+     contain the target address.  */
+
+  while (!(this_segment <= address && address <= stkl))
+    {
+#    ifdef DEBUG_I00AFUNC
+      fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
+#    endif
+      if (pseg == 0)
+       break;
+      stkl = stkl - pseg;
+      ssptr = (struct stack_segment_linkage *) stkl;
+      size = ssptr->sssize;
+      pseg = ssptr->sspseg;
+      this_segment = stkl - size;
+    }
+
+  result = address - this_segment;
+
+  /* If you subtract pseg from the current end of the stack,
+     you get the address of the previous stack segment's end.
+     This seems a little convoluted to me, but I'll bet you save
+     a cycle somewhere.  */
+
+  while (pseg != 0)
+    {
+#    ifdef DEBUG_I00AFUNC
+      fprintf (stderr, "%011o %011o\n", pseg, size);
+#    endif
+      stkl = stkl - pseg;
+      ssptr = (struct stack_segment_linkage *) stkl;
+      size = ssptr->sssize;
+      pseg = ssptr->sspseg;
+      result += size;
+    }
+  return (result);
+}
+
+#   endif /* not CRAY2 */
+#  endif /* CRAY */
+
+# endif /* no alloca */
+#endif /* not GCC version 2 */
diff --git a/lib/gettext.c b/lib/gettext.c
new file mode 100644 (file)
index 0000000..e4b6866
--- /dev/null
@@ -0,0 +1,2592 @@
+/* Begin of l10nflist.c */
+
+/* Handle list of needed message catalogs
+   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program 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 General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+# define HAVE_ALLOCA 1
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+#  include <alloca.h>
+# else
+#  ifdef _AIX
+ #pragma alloca
+#  else
+#   ifndef alloca
+char *alloca ();
+#   endif
+#  endif
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# ifndef _GNU_SOURCE
+#  define _GNU_SOURCE  1
+# endif
+# include <string.h>
+#else
+# include <strings.h>
+# ifndef memcpy
+#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+#  define strchr index
+# endif
+#endif
+
+#if defined _LIBC || defined HAVE_ARGZ_H
+# include <argz.h>
+#endif
+#include <ctype.h>
+#include <sys/types.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+/* Interrupt of l10nflist.c */
+\f
+/* Begin of loadinfo.h */
+
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.  */
+
+#ifndef PARAMS
+# if __STDC__
+#  define PARAMS(args) args
+# else
+#  define PARAMS(args) ()
+# endif
+#endif
+
+/* Encoding of locale name parts.  */
+#define CEN_REVISION           1
+#define CEN_SPONSOR            2
+#define CEN_SPECIAL            4
+#define XPG_NORM_CODESET       8
+#define XPG_CODESET            16
+#define TERRITORY              32
+#define CEN_AUDIENCE           64
+#define XPG_MODIFIER           128
+
+#define CEN_SPECIFIC   (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
+#define XPG_SPECIFIC   (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
+
+struct loaded_l10nfile
+{
+  const char *filename;
+  int decided;
+
+  const void *data;
+
+  struct loaded_l10nfile *next;
+  struct loaded_l10nfile *successor[1];
+};
+
+static const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset,
+                                                 size_t name_len));
+
+static struct loaded_l10nfile *
+_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
+                           const char *dirlist, size_t dirlist_len, int mask,
+                           const char *language, const char *territory,
+                           const char *codeset,
+                           const char *normalized_codeset,
+                           const char *modifier, const char *special,
+                           const char *sponsor, const char *revision,
+                           const char *filename, int do_allocate));
+
+static const char *_nl_expand_alias PARAMS ((const char *name));
+
+static int _nl_explode_name PARAMS ((char *name, const char **language,
+                                    const char **modifier,
+                                    const char **territory,
+                                    const char **codeset,
+                                    const char **normalized_codeset,
+                                    const char **special,
+                                    const char **sponsor,
+                                    const char **revision));
+
+/* End of loadinfo.h */
+\f
+/* Resume of l10nflist.c */
+
+/* On some strange systems still no definition of NULL is found.  Sigh!  */
+#ifndef NULL
+# if defined __STDC__ && __STDC__
+#  define NULL ((void *) 0)
+# else
+#  define NULL 0
+# endif
+#endif
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions.  This is required by the standard
+   because some ANSI C functions will require linking with this object
+   file and the name space must not be polluted.  */
+# ifndef stpcpy
+#  define stpcpy(dest, src) __stpcpy(dest, src)
+# endif
+#else
+# ifndef HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+# endif
+#endif
+
+/* Define function which are usually not available.  */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
+/* Returns the number of strings in ARGZ.  */
+static size_t argz_count__ PARAMS ((const char *argz, size_t len));
+
+static size_t
+argz_count__ (argz, len)
+     const char *argz;
+     size_t len;
+{
+  size_t count = 0;
+  while (len > 0)
+    {
+      size_t part_len = strlen (argz);
+      argz += part_len + 1;
+      len -= part_len + 1;
+      count++;
+    }
+  return count;
+}
+# undef __argz_count
+# define __argz_count(argz, len) argz_count__ (argz, len)
+#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
+/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
+   except the last into the character SEP.  */
+static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
+
+static void
+argz_stringify__ (argz, len, sep)
+     char *argz;
+     size_t len;
+     int sep;
+{
+  while (len > 0)
+    {
+      size_t part_len = strlen (argz);
+      argz += part_len;
+      len -= part_len + 1;
+      if (len > 0)
+       *argz++ = sep;
+    }
+}
+# undef __argz_stringify
+# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
+#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
+
+#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
+static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
+                                 const char *entry));
+
+static char *
+argz_next__ (argz, argz_len, entry)
+     char *argz;
+     size_t argz_len;
+     const char *entry;
+{
+  if (entry)
+    {
+      if (entry < argz + argz_len)
+        entry = strchr (entry, '\0') + 1;
+
+      return entry >= argz + argz_len ? NULL : (char *) entry;
+    }
+  else
+    if (argz_len > 0)
+      return argz;
+    else
+      return 0;
+}
+# undef __argz_next
+# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
+#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
+
+/* Return number of bits set in X.  */
+static int pop PARAMS ((int x));
+
+static inline int
+pop (x)
+     int x;
+{
+  /* We assume that no more than 16 bits are used.  */
+  x = ((x & ~0x5555) >> 1) + (x & 0x5555);
+  x = ((x & ~0x3333) >> 2) + (x & 0x3333);
+  x = ((x >> 4) + x) & 0x0f0f;
+  x = ((x >> 8) + x) & 0xff;
+
+  return x;
+}
+
+struct loaded_l10nfile *
+_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
+                   territory, codeset, normalized_codeset, modifier, special,
+                   sponsor, revision, filename, do_allocate)
+     struct loaded_l10nfile **l10nfile_list;
+     const char *dirlist;
+     size_t dirlist_len;
+     int mask;
+     const char *language;
+     const char *territory;
+     const char *codeset;
+     const char *normalized_codeset;
+     const char *modifier;
+     const char *special;
+     const char *sponsor;
+     const char *revision;
+     const char *filename;
+     int do_allocate;
+{
+  char *abs_filename;
+  struct loaded_l10nfile *last = NULL;
+  struct loaded_l10nfile *retval;
+  char *cp;
+  size_t entries;
+  int cnt;
+
+  /* Allocate room for the full file name.  */
+  abs_filename = (char *) malloc (dirlist_len
+                                 + strlen (language)
+                                 + ((mask & TERRITORY) != 0
+                                    ? strlen (territory) + 1 : 0)
+                                 + ((mask & XPG_CODESET) != 0
+                                    ? strlen (codeset) + 1 : 0)
+                                 + ((mask & XPG_NORM_CODESET) != 0
+                                    ? strlen (normalized_codeset) + 1 : 0)
+                                 + (((mask & XPG_MODIFIER) != 0
+                                     || (mask & CEN_AUDIENCE) != 0)
+                                    ? strlen (modifier) + 1 : 0)
+                                 + ((mask & CEN_SPECIAL) != 0
+                                    ? strlen (special) + 1 : 0)
+                                 + (((mask & CEN_SPONSOR) != 0
+                                     || (mask & CEN_REVISION) != 0)
+                                    ? (1 + ((mask & CEN_SPONSOR) != 0
+                                            ? strlen (sponsor) + 1 : 0)
+                                       + ((mask & CEN_REVISION) != 0
+                                          ? strlen (revision) + 1 : 0)) : 0)
+                                 + 1 + strlen (filename) + 1);
+
+  if (abs_filename == NULL)
+    return NULL;
+
+  retval = NULL;
+  last = NULL;
+
+  /* Construct file name.  */
+  memcpy (abs_filename, dirlist, dirlist_len);
+  __argz_stringify (abs_filename, dirlist_len, ':');
+  cp = abs_filename + (dirlist_len - 1);
+  *cp++ = '/';
+  cp = stpcpy (cp, language);
+
+  if ((mask & TERRITORY) != 0)
+    {
+      *cp++ = '_';
+      cp = stpcpy (cp, territory);
+    }
+  if ((mask & XPG_CODESET) != 0)
+    {
+      *cp++ = '.';
+      cp = stpcpy (cp, codeset);
+    }
+  if ((mask & XPG_NORM_CODESET) != 0)
+    {
+      *cp++ = '.';
+      cp = stpcpy (cp, normalized_codeset);
+    }
+  if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
+    {
+      /* This component can be part of both syntaces but has different
+        leading characters.  For CEN we use `+', else `@'.  */
+      *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
+      cp = stpcpy (cp, modifier);
+    }
+  if ((mask & CEN_SPECIAL) != 0)
+    {
+      *cp++ = '+';
+      cp = stpcpy (cp, special);
+    }
+  if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
+    {
+      *cp++ = ',';
+      if ((mask & CEN_SPONSOR) != 0)
+       cp = stpcpy (cp, sponsor);
+      if ((mask & CEN_REVISION) != 0)
+       {
+         *cp++ = '_';
+         cp = stpcpy (cp, revision);
+       }
+    }
+
+  *cp++ = '/';
+  stpcpy (cp, filename);
+
+  /* Look in list of already loaded domains whether it is already
+     available.  */
+  last = NULL;
+  for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
+    if (retval->filename != NULL)
+      {
+       int compare = strcmp (retval->filename, abs_filename);
+       if (compare == 0)
+         /* We found it!  */
+         break;
+       if (compare < 0)
+         {
+           /* It's not in the list.  */
+           retval = NULL;
+           break;
+         }
+
+       last = retval;
+      }
+
+  if (retval != NULL || do_allocate == 0)
+    {
+      free (abs_filename);
+      return retval;
+    }
+
+  retval = (struct loaded_l10nfile *)
+    malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
+                               * (1 << pop (mask))
+                               * sizeof (struct loaded_l10nfile *)));
+  if (retval == NULL)
+    return NULL;
+
+  retval->filename = abs_filename;
+  retval->decided = (__argz_count (dirlist, dirlist_len) != 1
+                    || ((mask & XPG_CODESET) != 0
+                        && (mask & XPG_NORM_CODESET) != 0));
+  retval->data = NULL;
+
+  if (last == NULL)
+    {
+      retval->next = *l10nfile_list;
+      *l10nfile_list = retval;
+    }
+  else
+    {
+      retval->next = last->next;
+      last->next = retval;
+    }
+
+  entries = 0;
+  /* If the DIRLIST is a real list the RETVAL entry corresponds not to
+     a real file.  So we have to use the DIRLIST separation mechanism
+     of the inner loop.  */
+  cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
+  for (; cnt >= 0; --cnt)
+    if ((cnt & ~mask) == 0
+       && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
+       && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
+      {
+       /* Iterate over all elements of the DIRLIST.  */
+       char *dir = NULL;
+
+       while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
+              != NULL)
+         retval->successor[entries++]
+           = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
+                                 language, territory, codeset,
+                                 normalized_codeset, modifier, special,
+                                 sponsor, revision, filename, 1);
+      }
+  retval->successor[entries] = NULL;
+
+  return retval;
+}
+
+/* Normalize codeset name.  There is no standard for the codeset
+   names.  Normalization allows the user to use any of the common
+   names.  */
+static const char *
+_nl_normalize_codeset (codeset, name_len)
+     const unsigned char *codeset;
+     size_t name_len;
+{
+  int len = 0;
+  int only_digit = 1;
+  char *retval;
+  char *wp;
+  size_t cnt;
+
+  for (cnt = 0; cnt < name_len; ++cnt)
+    if (isalnum (codeset[cnt]))
+      {
+       ++len;
+
+       if (isalpha (codeset[cnt]))
+         only_digit = 0;
+      }
+
+  retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
+
+  if (retval != NULL)
+    {
+      if (only_digit)
+       wp = stpcpy (retval, "iso");
+      else
+       wp = retval;
+
+      for (cnt = 0; cnt < name_len; ++cnt)
+       if (isalpha (codeset[cnt]))
+         *wp++ = tolower (codeset[cnt]);
+       else if (isdigit (codeset[cnt]))
+         *wp++ = codeset[cnt];
+
+      *wp = '\0';
+    }
+
+  return (const char *) retval;
+}
+
+/* End of l10nflist.c */
+\f
+/* Begin of explodename.c */
+
+/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
+
+#if defined STDC_HEADERS || defined _LIBC
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+#else
+#endif
+
+static int
+_nl_explode_name (name, language, modifier, territory, codeset,
+                 normalized_codeset, special, sponsor, revision)
+     char *name;
+     const char **language;
+     const char **modifier;
+     const char **territory;
+     const char **codeset;
+     const char **normalized_codeset;
+     const char **special;
+     const char **sponsor;
+     const char **revision;
+{
+  enum { undecided, xpg, cen } syntax;
+  char *cp;
+  int mask;
+
+  *modifier = NULL;
+  *territory = NULL;
+  *codeset = NULL;
+  *normalized_codeset = NULL;
+  *special = NULL;
+  *sponsor = NULL;
+  *revision = NULL;
+
+  /* Now we determine the single parts of the locale name.  First
+     look for the language.  Termination symbols are `_' and `@' if
+     we use XPG4 style, and `_', `+', and `,' if we use CEN syntax.  */
+  mask = 0;
+  syntax = undecided;
+  *language = cp = name;
+  while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
+        && cp[0] != '+' && cp[0] != ',')
+    ++cp;
+
+  if (*language == cp)
+    /* This does not make sense: language has to be specified.  Use
+       this entry as it is without exploding.  Perhaps it is an alias.  */
+    cp = strchr (*language, '\0');
+  else if (cp[0] == '_')
+    {
+      /* Next is the territory.  */
+      cp[0] = '\0';
+      *territory = ++cp;
+
+      while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
+            && cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
+       ++cp;
+
+      mask |= TERRITORY;
+
+      if (cp[0] == '.')
+       {
+         /* Next is the codeset.  */
+         syntax = xpg;
+         cp[0] = '\0';
+         *codeset = ++cp;
+
+         while (cp[0] != '\0' && cp[0] != '@')
+           ++cp;
+
+         mask |= XPG_CODESET;
+
+         if (*codeset != cp && (*codeset)[0] != '\0')
+           {
+             *normalized_codeset = _nl_normalize_codeset (*codeset,
+                                                          cp - *codeset);
+             if (strcmp (*codeset, *normalized_codeset) == 0)
+               free ((char *) *normalized_codeset);
+             else
+               mask |= XPG_NORM_CODESET;
+           }
+       }
+    }
+
+  if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
+    {
+      /* Next is the modifier.  */
+      syntax = cp[0] == '@' ? xpg : cen;
+      cp[0] = '\0';
+      *modifier = ++cp;
+
+      while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
+            && cp[0] != ',' && cp[0] != '_')
+       ++cp;
+
+      mask |= XPG_MODIFIER | CEN_AUDIENCE;
+    }
+
+  if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
+    {
+      syntax = cen;
+
+      if (cp[0] == '+')
+       {
+         /* Next is special application (CEN syntax).  */
+         cp[0] = '\0';
+         *special = ++cp;
+
+         while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
+           ++cp;
+
+         mask |= CEN_SPECIAL;
+       }
+
+      if (cp[0] == ',')
+       {
+         /* Next is sponsor (CEN syntax).  */
+         cp[0] = '\0';
+         *sponsor = ++cp;
+
+         while (cp[0] != '\0' && cp[0] != '_')
+           ++cp;
+
+         mask |= CEN_SPONSOR;
+       }
+
+      if (cp[0] == '_')
+       {
+         /* Next is revision (CEN syntax).  */
+         cp[0] = '\0';
+         *revision = ++cp;
+
+         mask |= CEN_REVISION;
+       }
+    }
+
+  /* For CEN syntax values it might be important to have the
+     separator character in the file name, not for XPG syntax.  */
+  if (syntax == xpg)
+    {
+      if (*territory != NULL && (*territory)[0] == '\0')
+       mask &= ~TERRITORY;
+
+      if (*codeset != NULL && (*codeset)[0] == '\0')
+       mask &= ~XPG_CODESET;
+
+      if (*modifier != NULL && (*modifier)[0] == '\0')
+       mask &= ~XPG_MODIFIER;
+    }
+
+  return mask;
+}
+
+/* End of explodename.c */
+\f
+/* Begin of loadmsgcat.c */
+
+/* Load needed message catalogs.
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.  */
+
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
+# include <sys/mman.h>
+#endif
+
+/* Interrupt of loadmsgcat.c */
+\f
+/* Begin of gettext.h */
+
+/* Internal header for GNU gettext internationalization functions.
+   Copyright (C) 1995, 1997 Free Software Foundation, Inc.  */
+
+#ifndef _GETTEXT_H
+#define _GETTEXT_H 1
+
+#include <stdio.h>
+
+#if HAVE_LIMITS_H || _LIBC
+# include <limits.h>
+#endif
+
+/* The magic number of the GNU message catalog format.  */
+#define _MAGIC 0x950412de
+#define _MAGIC_SWAPPED 0xde120495
+
+/* Revision number of the currently used .mo (binary) file format.  */
+#define MO_REVISION_NUMBER 0
+
+/* The following contortions are an attempt to use the C preprocessor
+   to determine an unsigned integral type that is 32 bits wide.  An
+   alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+   doing that would require that the configure script compile and *run*
+   the resulting executable.  Locally running cross-compiled executables
+   is usually not possible.  */
+
+#if __STDC__
+# define UINT_MAX_32_BITS 4294967295U
+#else
+# define UINT_MAX_32_BITS 0xFFFFFFFF
+#endif
+
+/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+   This should be valid for all systems GNU cares about because
+   that doesn't include 16-bit systems, and only modern systems
+   (that certainly have <limits.h>) have 64+-bit integral types.  */
+
+#ifndef UINT_MAX
+# define UINT_MAX UINT_MAX_32_BITS
+#endif
+
+#if UINT_MAX == UINT_MAX_32_BITS
+typedef unsigned nls_uint32;
+#else
+# if USHRT_MAX == UINT_MAX_32_BITS
+typedef unsigned short nls_uint32;
+# else
+#  if ULONG_MAX == UINT_MAX_32_BITS
+typedef unsigned long nls_uint32;
+#  else
+  /* The following line is intended to throw an error.  Using #error is
+     not portable enough.  */
+  "Cannot determine unsigned 32-bit data type."
+#  endif
+# endif
+#endif
+
+/* Header for binary .mo file format.  */
+struct mo_file_header
+{
+  /* The magic number.  */
+  nls_uint32 magic;
+  /* The revision number of the file format.  */
+  nls_uint32 revision;
+  /* The number of strings pairs.  */
+  nls_uint32 nstrings;
+  /* Offset of table with start offsets of original strings.  */
+  nls_uint32 orig_tab_offset;
+  /* Offset of table with start offsets of translation strings.  */
+  nls_uint32 trans_tab_offset;
+  /* Size of hashing table.  */
+  nls_uint32 hash_tab_size;
+  /* Offset of first hashing entry.  */
+  nls_uint32 hash_tab_offset;
+};
+
+struct string_desc
+{
+  /* Length of addressed string.  */
+  nls_uint32 length;
+  /* Offset of string in file.  */
+  nls_uint32 offset;
+};
+
+#endif /* gettext.h  */
+
+/* End of gettext.h */
+\f
+/* Resume of loadmsgcat.c */
+
+/* Interrupt of loadmsgcat.c */
+\f
+/* Begin of gettextP.h */
+
+/* Header describing internals of gettext library
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
+
+#ifndef _GETTEXTP_H
+#define _GETTEXTP_H
+
+#ifndef PARAMS
+# if __STDC__
+#  define PARAMS(args) args
+# else
+#  define PARAMS(args) ()
+# endif
+#endif
+
+#ifndef internal_function
+# define internal_function
+#endif
+
+#ifndef W
+# define W(flag, data) ((flag) ? SWAP (data) : (data))
+#endif
+
+#ifdef _LIBC
+# include <byteswap.h>
+# define SWAP(i) bswap_32 (i)
+#else
+static nls_uint32 SWAP PARAMS ((nls_uint32 i));
+
+static inline nls_uint32
+SWAP (i)
+     nls_uint32 i;
+{
+  return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+}
+#endif
+
+struct loaded_domain
+{
+  const char *data;
+  int use_mmap;
+  size_t mmap_size;
+  int must_swap;
+  nls_uint32 nstrings;
+  struct string_desc *orig_tab;
+  struct string_desc *trans_tab;
+  nls_uint32 hash_size;
+  nls_uint32 *hash_tab;
+};
+
+struct binding
+{
+  struct binding *next;
+  char *domainname;
+  char *dirname;
+};
+
+static struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
+                                                char *__locale,
+                                                const char *__domainname))
+     internal_function;
+static void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
+     internal_function;
+static void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
+     internal_function;
+
+#endif /* gettextP.h  */
+
+/* End of gettextP.h */
+\f
+/* Resume of loadmsgcat.c */
+
+#ifdef _LIBC
+/* Rename the non ISO C functions.  This is required by the standard
+   because some ISO C functions will require linking with this object
+   file and the name space must not be polluted.  */
+# define open   __open
+# define close  __close
+# define read   __read
+# define mmap   __mmap
+# define munmap __munmap
+#endif
+
+/* We need a sign, whether a new catalog was loaded, which can be associated
+   with all translations.  This is important if the translations are
+   cached by one of GCC's features.  */
+int _nl_msg_cat_cntr = 0;
+
+/* Load the message catalogs specified by FILENAME.  If it is no valid
+   message catalog do nothing.  */
+static void
+internal_function
+_nl_load_domain (domain_file)
+     struct loaded_l10nfile *domain_file;
+{
+  int fd;
+  size_t size;
+  struct stat st;
+  struct mo_file_header *data = (struct mo_file_header *) -1;
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+    || defined _LIBC
+  int use_mmap = 0;
+#endif
+  struct loaded_domain *domain;
+
+  domain_file->decided = 1;
+  domain_file->data = NULL;
+
+  /* If the record does not represent a valid locale the FILENAME
+     might be NULL.  This can happen when according to the given
+     specification the locale file name is different for XPG and CEN
+     syntax.  */
+  if (domain_file->filename == NULL)
+    return;
+
+  /* Try to open the addressed file.  */
+  fd = open (domain_file->filename, O_RDONLY);
+  if (fd == -1)
+    return;
+
+  /* We must know about the size of the file.  */
+  if (fstat (fd, &st) != 0
+      || (size = (size_t) st.st_size) != st.st_size
+      || size < sizeof (struct mo_file_header))
+    {
+      /* Something went wrong.  */
+      close (fd);
+      return;
+    }
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+    || defined _LIBC
+  /* Now we are ready to load the file.  If mmap() is available we try
+     this first.  If not available or it failed we try to load it.  */
+  data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
+                                        MAP_PRIVATE, fd, 0);
+
+  if (data != (struct mo_file_header *) -1)
+    {
+      /* mmap() call was successful.  */
+      close (fd);
+      use_mmap = 1;
+    }
+#endif
+
+  /* If the data is not yet available (i.e. mmap'ed) we try to load
+     it manually.  */
+  if (data == (struct mo_file_header *) -1)
+    {
+      size_t to_read;
+      char *read_ptr;
+
+      data = (struct mo_file_header *) malloc (size);
+      if (data == NULL)
+       return;
+
+      to_read = size;
+      read_ptr = (char *) data;
+      do
+       {
+         long int nb = (long int) read (fd, read_ptr, to_read);
+         if (nb == -1)
+           {
+             close (fd);
+             return;
+           }
+
+         read_ptr += nb;
+         to_read -= nb;
+       }
+      while (to_read > 0);
+
+      close (fd);
+    }
+
+  /* Using the magic number we can test whether it really is a message
+     catalog file.  */
+  if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
+    {
+      /* The magic number is wrong: not a message catalog file.  */
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+    || defined _LIBC
+      if (use_mmap)
+       munmap ((caddr_t) data, size);
+      else
+#endif
+       free (data);
+      return;
+    }
+
+  domain_file->data
+    = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
+  if (domain_file->data == NULL)
+    return;
+
+  domain = (struct loaded_domain *) domain_file->data;
+  domain->data = (char *) data;
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+    || defined _LIBC
+  domain->use_mmap = use_mmap;
+#endif
+  domain->mmap_size = size;
+  domain->must_swap = data->magic != _MAGIC;
+
+  /* Fill in the information about the available tables.  */
+  switch (W (domain->must_swap, data->revision))
+    {
+    case 0:
+      domain->nstrings = W (domain->must_swap, data->nstrings);
+      domain->orig_tab = (struct string_desc *)
+       ((char *) data + W (domain->must_swap, data->orig_tab_offset));
+      domain->trans_tab = (struct string_desc *)
+       ((char *) data + W (domain->must_swap, data->trans_tab_offset));
+      domain->hash_size = W (domain->must_swap, data->hash_tab_size);
+      domain->hash_tab = (nls_uint32 *)
+       ((char *) data + W (domain->must_swap, data->hash_tab_offset));
+      break;
+    default:
+      /* This is an illegal revision.  */
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
+    || defined _LIBC
+      if (use_mmap)
+       munmap ((caddr_t) data, size);
+      else
+#endif
+       free (data);
+      free (domain);
+      domain_file->data = NULL;
+      return;
+    }
+
+  /* Show that one domain is changed.  This might make some cached
+     translations invalid.  */
+  ++_nl_msg_cat_cntr;
+}
+
+#ifdef _LIBC
+static void
+internal_function
+_nl_unload_domain (domain)
+     struct loaded_domain *domain;
+{
+  if (domain->use_mmap)
+    munmap ((caddr_t) domain->data, domain->mmap_size);
+  else
+    free ((void *) domain->data);
+
+  free (domain);
+}
+#endif
+
+/* End of loadmsgcat.c */
+\f
+/* Begin of localealias.c */
+
+/* Handle aliases for locale names.
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
+
+#if defined STDC_HEADERS || defined _LIBC
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+#  include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# ifndef _GNU_SOURCE
+#  define _GNU_SOURCE  1
+# endif
+#else
+# ifndef memcpy
+#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+#  define strchr index
+# endif
+#endif
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions.  This is required by the standard
+   because some ANSI C functions will require linking with this object
+   file and the name space must not be polluted.  */
+# define strcasecmp __strcasecmp
+
+# define mempcpy __mempcpy
+# define HAVE_MEMPCPY  1
+
+/* We need locking here since we can be called from different places.  */
+# include <bits/libc-lock.h>
+
+__libc_lock_define_initialized (static, lock);
+#endif
+
+/* For those loosing systems which don't have `alloca' we have to add
+   some additional code emulating it.  */
+#ifdef HAVE_ALLOCA
+/* Nothing has to be done.  */
+# define ADD_BLOCK(list, address) /* nothing */
+# define FREE_BLOCKS(list) /* nothing */
+#else
+struct block_list
+{
+  void *address;
+  struct block_list *next;
+};
+# define ADD_BLOCK(list, addr)                                               \
+  do {                                                                       \
+    struct block_list *newp = (struct block_list *) malloc (sizeof (*newp));  \
+    /* If we cannot get a free block we cannot add the new element to        \
+       the list.  */                                                         \
+    if (newp != NULL) {                                                              \
+      newp->address = (addr);                                                \
+      newp->next = (list);                                                   \
+      (list) = newp;                                                         \
+    }                                                                        \
+  } while (0)
+# define FREE_BLOCKS(list)                                                   \
+  do {                                                                       \
+    while (list != NULL) {                                                   \
+      struct block_list *old = list;                                         \
+      list = list->next;                                                     \
+      free (old);                                                            \
+    }                                                                        \
+  } while (0)
+# undef alloca
+# define alloca(size) (malloc (size))
+#endif /* have alloca */
+
+struct alias_map
+{
+  const char *alias;
+  const char *value;
+};
+
+static char *string_space = NULL;
+static size_t string_space_act = 0;
+static size_t string_space_max = 0;
+static struct alias_map *map;
+static size_t nmap = 0;
+static size_t maxmap = 0;
+
+/* Prototypes for local functions.  */
+static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
+     internal_function;
+static void extend_alias_table PARAMS ((void));
+static int alias_compare PARAMS ((const struct alias_map *map1,
+                                 const struct alias_map *map2));
+
+static const char *
+_nl_expand_alias (name)
+    const char *name;
+{
+  static const char *locale_alias_path = ALIASPATH;
+  struct alias_map *retval;
+  const char *result = NULL;
+  size_t added;
+
+#ifdef _LIBC
+  __libc_lock_lock (lock);
+#endif
+
+  do
+    {
+      struct alias_map item;
+
+      item.alias = name;
+
+      if (nmap > 0)
+       retval = (struct alias_map *) bsearch (&item, map, nmap,
+                                              sizeof (struct alias_map),
+                                              (int (*) PARAMS ((const void *,
+                                                                const void *))
+                                               ) alias_compare);
+      else
+       retval = NULL;
+
+      /* We really found an alias.  Return the value.  */
+      if (retval != NULL)
+       {
+         result = retval->value;
+         break;
+       }
+
+      /* Perhaps we can find another alias file.  */
+      added = 0;
+      while (added == 0 && locale_alias_path[0] != '\0')
+       {
+         const char *start;
+
+         while (locale_alias_path[0] == ':')
+           ++locale_alias_path;
+         start = locale_alias_path;
+
+         while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
+           ++locale_alias_path;
+
+         if (start < locale_alias_path)
+           added = read_alias_file (start, locale_alias_path - start);
+       }
+    }
+  while (added != 0);
+
+#ifdef _LIBC
+  __libc_lock_unlock (lock);
+#endif
+
+  return result;
+}
+
+static size_t
+internal_function
+read_alias_file (fname, fname_len)
+     const char *fname;
+     int fname_len;
+{
+#ifndef HAVE_ALLOCA
+  struct block_list *block_list = NULL;
+#endif
+  FILE *fp;
+  char *full_fname;
+  size_t added;
+  static const char aliasfile[] = "/locale.alias";
+
+  full_fname = (char *) alloca (fname_len + sizeof aliasfile);
+  ADD_BLOCK (block_list, full_fname);
+#ifdef HAVE_MEMPCPY
+  mempcpy (mempcpy (full_fname, fname, fname_len),
+          aliasfile, sizeof aliasfile);
+#else
+  memcpy (full_fname, fname, fname_len);
+  memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
+#endif
+
+  fp = fopen (full_fname, "r");
+  if (fp == NULL)
+    {
+      FREE_BLOCKS (block_list);
+      return 0;
+    }
+
+  added = 0;
+  while (!feof (fp))
+    {
+      /* It is a reasonable approach to use a fix buffer here because
+        a) we are only interested in the first two fields
+        b) these fields must be usable as file names and so must not
+           be that long
+       */
+      unsigned char buf[BUFSIZ];
+      unsigned char *alias;
+      unsigned char *value;
+      unsigned char *cp;
+
+      if (fgets (buf, sizeof buf, fp) == NULL)
+       /* EOF reached.  */
+       break;
+
+      /* Possibly not the whole line fits into the buffer.  Ignore
+        the rest of the line.  */
+      if (strchr (buf, '\n') == NULL)
+       {
+         char altbuf[BUFSIZ];
+         do
+           if (fgets (altbuf, sizeof altbuf, fp) == NULL)
+             /* Make sure the inner loop will be left.  The outer loop
+                will exit at the `feof' test.  */
+             break;
+         while (strchr (altbuf, '\n') == NULL);
+       }
+
+      cp = buf;
+      /* Ignore leading white space.  */
+      while (isspace (cp[0]))
+       ++cp;
+
+      /* A leading '#' signals a comment line.  */
+      if (cp[0] != '\0' && cp[0] != '#')
+       {
+         alias = cp++;
+         while (cp[0] != '\0' && !isspace (cp[0]))
+           ++cp;
+         /* Terminate alias name.  */
+         if (cp[0] != '\0')
+           *cp++ = '\0';
+
+         /* Now look for the beginning of the value.  */
+         while (isspace (cp[0]))
+           ++cp;
+
+         if (cp[0] != '\0')
+           {
+             size_t alias_len;
+             size_t value_len;
+
+             value = cp++;
+             while (cp[0] != '\0' && !isspace (cp[0]))
+               ++cp;
+             /* Terminate value.  */
+             if (cp[0] == '\n')
+               {
+                 /* This has to be done to make the following test
+                    for the end of line possible.  We are looking for
+                    the terminating '\n' which do not overwrite here.  */
+                 *cp++ = '\0';
+                 *cp = '\n';
+               }
+             else if (cp[0] != '\0')
+               *cp++ = '\0';
+
+             if (nmap >= maxmap)
+               extend_alias_table ();
+
+             alias_len = strlen (alias) + 1;
+             value_len = strlen (value) + 1;
+
+             if (string_space_act + alias_len + value_len > string_space_max)
+               {
+                 /* Increase size of memory pool.  */
+                 size_t new_size = (string_space_max
+                                    + (alias_len + value_len > 1024
+                                       ? alias_len + value_len : 1024));
+                 char *new_pool = (char *) realloc (string_space, new_size);
+                 if (new_pool == NULL)
+                   {
+                     FREE_BLOCKS (block_list);
+                     return added;
+                   }
+                 string_space = new_pool;
+                 string_space_max = new_size;
+               }
+
+             map[nmap].alias = memcpy (&string_space[string_space_act],
+                                       alias, alias_len);
+             string_space_act += alias_len;
+
+             map[nmap].value = memcpy (&string_space[string_space_act],
+                                       value, value_len);
+             string_space_act += value_len;
+
+             ++nmap;
+             ++added;
+           }
+       }
+    }
+
+  /* Should we test for ferror()?  I think we have to silently ignore
+     errors.  --drepper  */
+  fclose (fp);
+
+  if (added > 0)
+    qsort (map, nmap, sizeof (struct alias_map),
+          (int (*) PARAMS ((const void *, const void *))) alias_compare);
+
+  FREE_BLOCKS (block_list);
+  return added;
+}
+
+static void
+extend_alias_table ()
+{
+  size_t new_size;
+  struct alias_map *new_map;
+
+  new_size = maxmap == 0 ? 100 : 2 * maxmap;
+  new_map = (struct alias_map *) realloc (map, (new_size
+                                               * sizeof (struct alias_map)));
+  if (new_map == NULL)
+    /* Simply don't extend: we don't have any more core.  */
+    return;
+
+  map = new_map;
+  maxmap = new_size;
+}
+
+#ifdef _LIBC
+static void __attribute__ ((unused))
+free_mem (void)
+{
+  if (string_space != NULL)
+    free (string_space);
+  if (map != NULL)
+    free (map);
+}
+text_set_element (__libc_subfreeres, free_mem);
+#endif
+
+static int
+alias_compare (map1, map2)
+     const struct alias_map *map1;
+     const struct alias_map *map2;
+{
+#if defined _LIBC || defined HAVE_STRCASECMP
+  return strcasecmp (map1->alias, map2->alias);
+#else
+  const unsigned char *p1 = (const unsigned char *) map1->alias;
+  const unsigned char *p2 = (const unsigned char *) map2->alias;
+  unsigned char c1, c2;
+
+  if (p1 == p2)
+    return 0;
+
+  do
+    {
+      /* I know this seems to be odd but the tolower() function in
+        some systems libc cannot handle nonalpha characters.  */
+      c1 = isupper (*p1) ? tolower (*p1) : *p1;
+      c2 = isupper (*p2) ? tolower (*p2) : *p2;
+      if (c1 == '\0')
+       break;
+      ++p1;
+      ++p2;
+    }
+  while (c1 == c2);
+
+  return c1 - c2;
+#endif
+}
+
+/* End of localealias.c */
+\f
+/* Begin of finddomain.c */
+
+/* Handle list of needed message catalogs
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
+
+#include <errno.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+#else
+# ifdef HAVE_MALLOC_H
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+#else
+# ifndef memcpy
+#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+#  define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#else
+# include "gettext.h"
+#endif
+
+/* List of already loaded domains.  */
+static struct loaded_l10nfile *_nl_loaded_domains;
+
+/* Return a data structure describing the message catalog described by
+   the DOMAINNAME and CATEGORY parameters with respect to the currently
+   established bindings.  */
+static struct loaded_l10nfile *
+internal_function
+_nl_find_domain (dirname, locale, domainname)
+     const char *dirname;
+     char *locale;
+     const char *domainname;
+{
+  struct loaded_l10nfile *retval;
+  const char *language;
+  const char *modifier;
+  const char *territory;
+  const char *codeset;
+  const char *normalized_codeset;
+  const char *special;
+  const char *sponsor;
+  const char *revision;
+  const char *alias_value;
+  int mask;
+
+  /* LOCALE can consist of up to four recognized parts for the XPG syntax:
+
+               language[_territory[.codeset]][@modifier]
+
+     and six parts for the CEN syntax:
+
+       language[_territory][+audience][+special][,[sponsor][_revision]]
+
+     Beside the first part all of them are allowed to be missing.  If
+     the full specified locale is not found, the less specific one are
+     looked for.  The various parts will be stripped off according to
+     the following order:
+               (1) revision
+               (2) sponsor
+               (3) special
+               (4) codeset
+               (5) normalized codeset
+               (6) territory
+               (7) audience/modifier
+   */
+
+  /* If we have already tested for this locale entry there has to
+     be one data set in the list of loaded domains.  */
+  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+                              strlen (dirname) + 1, 0, locale, NULL, NULL,
+                              NULL, NULL, NULL, NULL, NULL, domainname, 0);
+  if (retval != NULL)
+    {
+      /* We know something about this locale.  */
+      int cnt;
+
+      if (retval->decided == 0)
+       _nl_load_domain (retval);
+
+      if (retval->data != NULL)
+       return retval;
+
+      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+       {
+         if (retval->successor[cnt]->decided == 0)
+           _nl_load_domain (retval->successor[cnt]);
+
+         if (retval->successor[cnt]->data != NULL)
+           break;
+       }
+      return cnt >= 0 ? retval : NULL;
+      /* NOTREACHED */
+    }
+
+  /* See whether the locale value is an alias.  If yes its value
+     *overwrites* the alias name.  No test for the original value is
+     done.  */
+  alias_value = _nl_expand_alias (locale);
+  if (alias_value != NULL)
+    {
+#if defined _LIBC || defined HAVE_STRDUP
+      locale = strdup (alias_value);
+      if (locale == NULL)
+       return NULL;
+#else
+      size_t len = strlen (alias_value) + 1;
+      locale = (char *) malloc (len);
+      if (locale == NULL)
+       return NULL;
+
+      memcpy (locale, alias_value, len);
+#endif
+    }
+
+  /* Now we determine the single parts of the locale name.  First
+     look for the language.  Termination symbols are `_' and `@' if
+     we use XPG4 style, and `_', `+', and `,' if we use CEN syntax.  */
+  mask = _nl_explode_name (locale, &language, &modifier, &territory,
+                          &codeset, &normalized_codeset, &special,
+                          &sponsor, &revision);
+
+  /* Create all possible locale entries which might be interested in
+     generalization.  */
+  retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
+                              strlen (dirname) + 1, mask, language, territory,
+                              codeset, normalized_codeset, modifier, special,
+                              sponsor, revision, domainname, 1);
+  if (retval == NULL)
+    /* This means we are out of core.  */
+    return NULL;
+
+  if (retval->decided == 0)
+    _nl_load_domain (retval);
+  if (retval->data == NULL)
+    {
+      int cnt;
+      for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
+       {
+         if (retval->successor[cnt]->decided == 0)
+           _nl_load_domain (retval->successor[cnt]);
+         if (retval->successor[cnt]->data != NULL)
+           break;
+       }
+    }
+
+  /* The room for an alias was dynamically allocated.  Free it now.  */
+  if (alias_value != NULL)
+    free (locale);
+
+  return retval;
+}
+
+#ifdef _LIBC
+static void __attribute__ ((unused))
+free_mem (void)
+{
+  struct loaded_l10nfile *runp = _nl_loaded_domains;
+
+  while (runp != NULL)
+    {
+      struct loaded_l10nfile *here = runp;
+      if (runp->data != NULL)
+       _nl_unload_domain ((struct loaded_domain *) runp->data);
+      runp = runp->next;
+      free (here);
+    }
+}
+
+text_set_element (__libc_subfreeres, free_mem);
+#endif
+
+/* End of finddomain.c */
+\f
+/* Begin of dcgettext.c */
+
+/* Implementation of the dcgettext(3) function.
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.  */
+
+#ifndef errno
+extern int errno;
+#endif
+#ifndef __set_errno
+# define __set_errno(val) errno = (val)
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# ifndef _GNU_SOURCE
+#  define _GNU_SOURCE  1
+# endif
+#else
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+#  define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+#endif
+
+#ifdef _LIBC
+#else
+#endif
+
+/* Interrupt of dcgettext.c */
+\f
+/* Begin of hash-string.h */
+
+/* Implements a string hashing function.
+   Copyright (C) 1995, 1997 Free Software Foundation, Inc.  */
+
+#ifndef PARAMS
+# if __STDC__
+#  define PARAMS(Args) Args
+# else
+#  define PARAMS(Args) ()
+# endif
+#endif
+
+/* We assume to have `unsigned long int' value with at least 32 bits.  */
+#define HASHWORDBITS 32
+
+/* Defines the so called `hashpjw' function by P.J. Weinberger
+   [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
+   1986, 1987 Bell Telephone Laboratories, Inc.]  */
+static unsigned long hash_string PARAMS ((const char *__str_param));
+
+static inline unsigned long
+hash_string (str_param)
+     const char *str_param;
+{
+  unsigned long int hval, g;
+  const char *str = str_param;
+
+  /* Compute the hash value for the given string.  */
+  hval = 0;
+  while (*str != '\0')
+    {
+      hval <<= 4;
+      hval += (unsigned long) *str++;
+      g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
+      if (g != 0)
+       {
+         hval ^= g >> (HASHWORDBITS - 8);
+         hval ^= g;
+       }
+    }
+  return hval;
+}
+
+/* End of hash-string.h */
+\f
+/* Resume of dcgettext.c */
+
+#ifdef _LIBC
+/* Rename the non ANSI C functions.  This is required by the standard
+   because some ANSI C functions will require linking with this object
+   file and the name space must not be polluted.  */
+# define getcwd __getcwd
+# ifndef stpcpy
+#  define stpcpy __stpcpy
+# endif
+#else
+# if !defined HAVE_GETCWD
+char *getwd ();
+#  define getcwd(buf, max) getwd (buf)
+# else
+char *getcwd ();
+# endif
+# ifndef HAVE_STPCPY
+static char *stpcpy PARAMS ((char *dest, const char *src));
+# endif
+#endif
+
+/* Amount to increase buffer size by in each try.  */
+#define PATH_INCR 32
+
+/* The following is from pathmax.h.  */
+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
+   PATH_MAX but might cause redefinition warnings when sys/param.h is
+   later included (as on MORE/BSD 4.3).  */
+#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
+#endif
+
+#ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 255
+#endif
+
+#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
+#endif
+
+/* Don't include sys/param.h if it already has been.  */
+#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
+# include <sys/param.h>
+#endif
+
+#if !defined(PATH_MAX) && defined(MAXPATHLEN)
+# define PATH_MAX MAXPATHLEN
+#endif
+
+#ifndef PATH_MAX
+# define PATH_MAX _POSIX_PATH_MAX
+#endif
+
+/* XPG3 defines the result of `setlocale (category, NULL)' as:
+   ``Directs `setlocale()' to query `category' and return the current
+     setting of `local'.''
+   However it does not specify the exact format.  And even worse: POSIX
+   defines this not at all.  So we can use this feature only on selected
+   system (e.g. those using GNU C Library).  */
+#ifdef _LIBC
+# define HAVE_LOCALE_NULL
+#endif
+
+/* Name of the default domain used for gettext(3) prior any call to
+   textdomain(3).  The default value for this is "messages".  */
+static const char _nl_default_default_domain[] = "messages";
+
+/* Value used as the default domain for gettext(3).  */
+static const char *_nl_current_default_domain = _nl_default_default_domain;
+
+/* Contains the default location of the message catalogs.  */
+static const char _nl_default_dirname[] = LOCALEDIR;
+
+/* List with bindings of specific domains created by bindtextdomain()
+   calls.  */
+static struct binding *_nl_domain_bindings;
+
+/* Prototypes for local functions.  */
+static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
+                              const char *msgid)) internal_function;
+static const char *category_to_name PARAMS ((int category)) internal_function;
+static const char *guess_category_value PARAMS ((int category,
+                                                const char *categoryname))
+     internal_function;
+
+/* For those loosing systems which don't have `alloca' we have to add
+   some additional code emulating it.  */
+#ifdef HAVE_ALLOCA
+/* Nothing has to be done.  */
+# define ADD_BLOCK(list, address) /* nothing */
+# define FREE_BLOCKS(list) /* nothing */
+#else
+struct block_list
+{
+  void *address;
+  struct block_list *next;
+};
+# define ADD_BLOCK(list, addr)                                               \
+  do {                                                                       \
+    struct block_list *newp = (struct block_list *) malloc (sizeof (*newp));  \
+    /* If we cannot get a free block we cannot add the new element to        \
+       the list.  */                                                         \
+    if (newp != NULL) {                                                              \
+      newp->address = (addr);                                                \
+      newp->next = (list);                                                   \
+      (list) = newp;                                                         \
+    }                                                                        \
+  } while (0)
+# define FREE_BLOCKS(list)                                                   \
+  do {                                                                       \
+    while (list != NULL) {                                                   \
+      struct block_list *old = list;                                         \
+      list = list->next;                                                     \
+      free (old);                                                            \
+    }                                                                        \
+  } while (0)
+# undef alloca
+# define alloca(size) (malloc (size))
+#endif /* have alloca */
+
+/* Names for the libintl functions are a problem.  They must not clash
+   with existing names and they should follow ANSI C.  But this source
+   code is also used in GNU C Library where the names have a __
+   prefix.  So we have to make a difference here.  */
+#ifdef _LIBC
+# define DCGETTEXT __dcgettext
+#else
+# define DCGETTEXT dcgettext__
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
+   locale.  */
+char *
+DCGETTEXT (domainname, msgid, category)
+     const char *domainname;
+     const char *msgid;
+     int category;
+{
+#ifndef HAVE_ALLOCA
+  struct block_list *block_list = NULL;
+#endif
+  struct loaded_l10nfile *domain;
+  struct binding *binding;
+  const char *categoryname;
+  const char *categoryvalue;
+  char *dirname, *xdomainname;
+  char *single_locale;
+  char *retval;
+  int saved_errno = errno;
+
+  /* If no real MSGID is given return NULL.  */
+  if (msgid == NULL)
+    return NULL;
+
+  /* If DOMAINNAME is NULL, we are interested in the default domain.  If
+     CATEGORY is not LC_MESSAGES this might not make much sense but the
+     defintion left this undefined.  */
+  if (domainname == NULL)
+    domainname = _nl_current_default_domain;
+
+  /* First find matching binding.  */
+  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+    {
+      int compare = strcmp (domainname, binding->domainname);
+      if (compare == 0)
+       /* We found it!  */
+       break;
+      if (compare < 0)
+       {
+         /* It is not in the list.  */
+         binding = NULL;
+         break;
+       }
+    }
+
+  if (binding == NULL)
+    dirname = (char *) _nl_default_dirname;
+  else if (binding->dirname[0] == '/')
+    dirname = binding->dirname;
+  else
+    {
+      /* We have a relative path.  Make it absolute now.  */
+      size_t dirname_len = strlen (binding->dirname) + 1;
+      size_t path_max;
+      char *ret;
+
+      path_max = (unsigned) PATH_MAX;
+      path_max += 2;           /* The getcwd docs say to do this.  */
+
+      dirname = (char *) alloca (path_max + dirname_len);
+      ADD_BLOCK (block_list, dirname);
+
+      __set_errno (0);
+      while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
+       {
+         path_max += PATH_INCR;
+         dirname = (char *) alloca (path_max + dirname_len);
+         ADD_BLOCK (block_list, dirname);
+         __set_errno (0);
+       }
+
+      if (ret == NULL)
+       {
+         /* We cannot get the current working directory.  Don't signal an
+            error but simply return the default string.  */
+         FREE_BLOCKS (block_list);
+         __set_errno (saved_errno);
+         return (char *) msgid;
+       }
+
+      stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
+    }
+
+  /* Now determine the symbolic name of CATEGORY and its value.  */
+  categoryname = category_to_name (category);
+  categoryvalue = guess_category_value (category, categoryname);
+
+  xdomainname = (char *) alloca (strlen (categoryname)
+                                + strlen (domainname) + 5);
+  ADD_BLOCK (block_list, xdomainname);
+
+  stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
+                 domainname),
+         ".mo");
+
+  /* Creating working area.  */
+  single_locale = (char *) alloca (strlen (categoryvalue) + 1);
+  ADD_BLOCK (block_list, single_locale);
+
+  /* Search for the given string.  This is a loop because we perhaps
+     got an ordered list of languages to consider for th translation.  */
+  while (1)
+    {
+      /* Make CATEGORYVALUE point to the next element of the list.  */
+      while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
+       ++categoryvalue;
+      if (categoryvalue[0] == '\0')
+       {
+         /* The whole contents of CATEGORYVALUE has been searched but
+            no valid entry has been found.  We solve this situation
+            by implicitly appending a "C" entry, i.e. no translation
+            will take place.  */
+         single_locale[0] = 'C';
+         single_locale[1] = '\0';
+       }
+      else
+       {
+         char *cp = single_locale;
+         while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
+           *cp++ = *categoryvalue++;
+         *cp = '\0';
+       }
+
+      /* If the current locale value is C (or POSIX) we don't load a
+        domain.  Return the MSGID.  */
+      if (strcmp (single_locale, "C") == 0
+         || strcmp (single_locale, "POSIX") == 0)
+       {
+         FREE_BLOCKS (block_list);
+         __set_errno (saved_errno);
+         return (char *) msgid;
+       }
+
+      /* Find structure describing the message catalog matching the
+        DOMAINNAME and CATEGORY.  */
+      domain = _nl_find_domain (dirname, single_locale, xdomainname);
+
+      if (domain != NULL)
+       {
+         retval = find_msg (domain, msgid);
+
+         if (retval == NULL)
+           {
+             int cnt;
+
+             for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
+               {
+                 retval = find_msg (domain->successor[cnt], msgid);
+
+                 if (retval != NULL)
+                   break;
+               }
+           }
+
+         if (retval != NULL)
+           {
+             FREE_BLOCKS (block_list);
+             __set_errno (saved_errno);
+             return retval;
+           }
+       }
+    }
+  /* NOTREACHED */
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library.  */
+#endif
+
+static char *
+internal_function
+find_msg (domain_file, msgid)
+     struct loaded_l10nfile *domain_file;
+     const char *msgid;
+{
+  size_t top, act, bottom;
+  struct loaded_domain *domain;
+
+  if (domain_file->decided == 0)
+    _nl_load_domain (domain_file);
+
+  if (domain_file->data == NULL)
+    return NULL;
+
+  domain = (struct loaded_domain *) domain_file->data;
+
+  /* Locate the MSGID and its translation.  */
+  if (domain->hash_size > 2 && domain->hash_tab != NULL)
+    {
+      /* Use the hashing table.  */
+      nls_uint32 len = strlen (msgid);
+      nls_uint32 hash_val = hash_string (msgid);
+      nls_uint32 idx = hash_val % domain->hash_size;
+      nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
+      nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
+
+      if (nstr == 0)
+       /* Hash table entry is empty.  */
+       return NULL;
+
+      if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+         && strcmp (msgid,
+                    domain->data + W (domain->must_swap,
+                                      domain->orig_tab[nstr - 1].offset)) == 0)
+       return (char *) domain->data + W (domain->must_swap,
+                                         domain->trans_tab[nstr - 1].offset);
+
+      while (1)
+       {
+         if (idx >= domain->hash_size - incr)
+           idx -= domain->hash_size - incr;
+         else
+           idx += incr;
+
+         nstr = W (domain->must_swap, domain->hash_tab[idx]);
+         if (nstr == 0)
+           /* Hash table entry is empty.  */
+           return NULL;
+
+         if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
+             && strcmp (msgid,
+                        domain->data + W (domain->must_swap,
+                                          domain->orig_tab[nstr - 1].offset))
+                == 0)
+           return (char *) domain->data
+             + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
+       }
+      /* NOTREACHED */
+    }
+
+  /* Now we try the default method:  binary search in the sorted
+     array of messages.  */
+  bottom = 0;
+  top = domain->nstrings;
+  while (bottom < top)
+    {
+      int cmp_val;
+
+      act = (bottom + top) / 2;
+      cmp_val = strcmp (msgid, domain->data
+                              + W (domain->must_swap,
+                                   domain->orig_tab[act].offset));
+      if (cmp_val < 0)
+       top = act;
+      else if (cmp_val > 0)
+       bottom = act + 1;
+      else
+       break;
+    }
+
+  /* If an translation is found return this.  */
+  return bottom >= top ? NULL : (char *) domain->data
+                                + W (domain->must_swap,
+                                    domain->trans_tab[act].offset);
+}
+
+/* Return string representation of locale CATEGORY.  */
+static const char *
+internal_function
+category_to_name (category)
+     int category;
+{
+  const char *retval;
+
+  switch (category)
+  {
+#ifdef LC_COLLATE
+  case LC_COLLATE:
+    retval = "LC_COLLATE";
+    break;
+#endif
+#ifdef LC_CTYPE
+  case LC_CTYPE:
+    retval = "LC_CTYPE";
+    break;
+#endif
+#ifdef LC_MONETARY
+  case LC_MONETARY:
+    retval = "LC_MONETARY";
+    break;
+#endif
+#ifdef LC_NUMERIC
+  case LC_NUMERIC:
+    retval = "LC_NUMERIC";
+    break;
+#endif
+#ifdef LC_TIME
+  case LC_TIME:
+    retval = "LC_TIME";
+    break;
+#endif
+#ifdef LC_MESSAGES
+  case LC_MESSAGES:
+    retval = "LC_MESSAGES";
+    break;
+#endif
+#ifdef LC_RESPONSE
+  case LC_RESPONSE:
+    retval = "LC_RESPONSE";
+    break;
+#endif
+#ifdef LC_ALL
+  case LC_ALL:
+    /* This might not make sense but is perhaps better than any other
+       value.  */
+    retval = "LC_ALL";
+    break;
+#endif
+  default:
+    /* If you have a better idea for a default value let me know.  */
+    retval = "LC_XXX";
+  }
+
+  return retval;
+}
+
+/* Guess value of current locale from value of the environment variables.  */
+static const char *
+internal_function
+guess_category_value (category, categoryname)
+     int category;
+     const char *categoryname;
+{
+  const char *retval;
+
+  /* The highest priority value is the `LANGUAGE' environment
+     variable.  This is a GNU extension.  */
+  retval = getenv ("LANGUAGE");
+  if (retval != NULL && retval[0] != '\0')
+    return retval;
+
+  /* `LANGUAGE' is not set.  So we have to proceed with the POSIX
+     methods of looking to `LC_ALL', `LC_xxx', and `LANG'.  On some
+     systems this can be done by the `setlocale' function itself.  */
+#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
+  return setlocale (category, NULL);
+#else
+  /* Setting of LC_ALL overwrites all other.  */
+  retval = getenv ("LC_ALL");
+  if (retval != NULL && retval[0] != '\0')
+    return retval;
+
+  /* Next comes the name of the desired category.  */
+  retval = getenv (categoryname);
+  if (retval != NULL && retval[0] != '\0')
+    return retval;
+
+  /* Last possibility is the LANG environment variable.  */
+  retval = getenv ("LANG");
+  if (retval != NULL && retval[0] != '\0')
+    return retval;
+
+  /* We use C as the default domain.  POSIX says this is implementation
+     defined.  */
+  return "C";
+#endif
+}
+
+/* We don't want libintl.a to depend on any other library.  So we
+   avoid the non-standard function stpcpy.  In GNU C Library this
+   function is available, though.  Also allow the symbol HAVE_STPCPY
+   to be defined.  */
+#if !_LIBC && !HAVE_STPCPY
+static char *
+stpcpy (dest, src)
+     char *dest;
+     const char *src;
+{
+  while ((*dest++ = *src++) != '\0')
+    /* Do nothing. */ ;
+  return dest - 1;
+}
+#endif
+
+#ifdef _LIBC
+/* If we want to free all resources we have to do some work at
+   program's end.  */
+static void __attribute__ ((unused))
+free_mem (void)
+{
+  struct binding *runp;
+
+  for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next)
+    {
+      free (runp->domainname);
+      if (runp->dirname != _nl_default_dirname)
+       /* Yes, this is a pointer comparison.  */
+       free (runp->dirname);
+    }
+
+  if (_nl_current_default_domain != _nl_default_default_domain)
+    /* Yes, again a pointer comparison.  */
+    free ((char *) _nl_current_default_domain);
+}
+
+text_set_element (__libc_subfreeres, free_mem);
+#endif
+
+/* End of dcgettext.c */
+\f
+/* Begin of bindtextdom.c */
+
+/* Implementation of the bindtextdomain(3) function
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.  */
+
+#if defined STDC_HEADERS || defined _LIBC
+#else
+# ifdef HAVE_MALLOC_H
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+#else
+# ifndef memcpy
+#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+
+#ifdef _LIBC
+#else
+#endif
+
+/* Contains the default location of the message catalogs.  */
+static const char _nl_default_dirname[];
+
+/* List with bindings of specific domains.  */
+static struct binding *_nl_domain_bindings;
+
+/* Names for the libintl functions are a problem.  They must not clash
+   with existing names and they should follow ANSI C.  But this source
+   code is also used in GNU C Library where the names have a __
+   prefix.  So we have to make a difference here.  */
+#ifdef _LIBC
+# define BINDTEXTDOMAIN __bindtextdomain
+# ifndef strdup
+#  define strdup(str) __strdup (str)
+# endif
+#else
+# define BINDTEXTDOMAIN bindtextdomain__
+#endif
+
+/* Specify that the DOMAINNAME message catalog will be found
+   in DIRNAME rather than in the system locale data base.  */
+static char *
+BINDTEXTDOMAIN (domainname, dirname)
+     const char *domainname;
+     const char *dirname;
+{
+  struct binding *binding;
+
+  /* Some sanity checks.  */
+  if (domainname == NULL || domainname[0] == '\0')
+    return NULL;
+
+  for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
+    {
+      int compare = strcmp (domainname, binding->domainname);
+      if (compare == 0)
+       /* We found it!  */
+       break;
+      if (compare < 0)
+       {
+         /* It is not in the list.  */
+         binding = NULL;
+         break;
+       }
+    }
+
+  if (dirname == NULL)
+    /* The current binding has be to returned.  */
+    return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
+
+  if (binding != NULL)
+    {
+      /* The domain is already bound.  If the new value and the old
+        one are equal we simply do nothing.  Otherwise replace the
+        old binding.  */
+      if (strcmp (dirname, binding->dirname) != 0)
+       {
+         char *new_dirname;
+
+         if (strcmp (dirname, _nl_default_dirname) == 0)
+           new_dirname = (char *) _nl_default_dirname;
+         else
+           {
+#if defined _LIBC || defined HAVE_STRDUP
+             new_dirname = strdup (dirname);
+             if (new_dirname == NULL)
+               return NULL;
+#else
+             size_t len = strlen (dirname) + 1;
+             new_dirname = (char *) malloc (len);
+             if (new_dirname == NULL)
+               return NULL;
+
+             memcpy (new_dirname, dirname, len);
+#endif
+           }
+
+         if (binding->dirname != _nl_default_dirname)
+           free (binding->dirname);
+
+         binding->dirname = new_dirname;
+       }
+    }
+  else
+    {
+      /* We have to create a new binding.  */
+#if !defined _LIBC && !defined HAVE_STRDUP
+      size_t len;
+#endif
+      struct binding *new_binding =
+       (struct binding *) malloc (sizeof (*new_binding));
+
+      if (new_binding == NULL)
+       return NULL;
+
+#if defined _LIBC || defined HAVE_STRDUP
+      new_binding->domainname = strdup (domainname);
+      if (new_binding->domainname == NULL)
+       return NULL;
+#else
+      len = strlen (domainname) + 1;
+      new_binding->domainname = (char *) malloc (len);
+      if (new_binding->domainname == NULL)
+       return NULL;
+      memcpy (new_binding->domainname, domainname, len);
+#endif
+
+      if (strcmp (dirname, _nl_default_dirname) == 0)
+       new_binding->dirname = (char *) _nl_default_dirname;
+      else
+       {
+#if defined _LIBC || defined HAVE_STRDUP
+         new_binding->dirname = strdup (dirname);
+         if (new_binding->dirname == NULL)
+           return NULL;
+#else
+         len = strlen (dirname) + 1;
+         new_binding->dirname = (char *) malloc (len);
+         if (new_binding->dirname == NULL)
+           return NULL;
+         memcpy (new_binding->dirname, dirname, len);
+#endif
+       }
+
+      /* Now enqueue it.  */
+      if (_nl_domain_bindings == NULL
+         || strcmp (domainname, _nl_domain_bindings->domainname) < 0)
+       {
+         new_binding->next = _nl_domain_bindings;
+         _nl_domain_bindings = new_binding;
+       }
+      else
+       {
+         binding = _nl_domain_bindings;
+         while (binding->next != NULL
+                && strcmp (domainname, binding->next->domainname) > 0)
+           binding = binding->next;
+
+         new_binding->next = binding->next;
+         binding->next = new_binding;
+       }
+
+      binding = new_binding;
+    }
+
+  return binding->dirname;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library.  */
+#endif
+
+/* End of bindtextdom.c */
+\f
+/* Begin of dgettext.c */
+
+/* Implementation of the dgettext(3) function
+   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.  */
+
+#if defined HAVE_LOCALE_H || defined _LIBC
+# include <locale.h>
+#endif
+
+#ifdef _LIBC
+#else
+#endif
+
+/* Names for the libintl functions are a problem.  They must not clash
+   with existing names and they should follow ANSI C.  But this source
+   code is also used in GNU C Library where the names have a __
+   prefix.  So we have to make a difference here.  */
+#ifdef _LIBC
+# define DGETTEXT __dgettext
+# define DCGETTEXT __dcgettext
+#else
+# define DGETTEXT dgettext__
+# define DCGETTEXT dcgettext__
+#endif
+
+/* Look up MSGID in the DOMAINNAME message catalog of the current
+   LC_MESSAGES locale.  */
+static char *
+DGETTEXT (domainname, msgid)
+     const char *domainname;
+     const char *msgid;
+{
+  return DCGETTEXT (domainname, msgid, LC_MESSAGES);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library.  */
+#endif
+
+/* End of dgettext.c */
+\f
+/* Begin of gettext.c */
+
+/* Implementation of gettext(3) function.
+   Copyright (C) 1995, 1997 Free Software Foundation, Inc.  */
+
+#ifdef _LIBC
+# define __need_NULL
+# include <stddef.h>
+#else
+# ifdef STDC_HEADERS
+#  include <stdlib.h>          /* Just for NULL.  */
+# else
+#  ifdef HAVE_STRING_H
+#  else
+#   define NULL ((void *) 0)
+#  endif
+# endif
+#endif
+
+#ifdef _LIBC
+#else
+#endif
+
+/* Names for the libintl functions are a problem.  They must not clash
+   with existing names and they should follow ANSI C.  But this source
+   code is also used in GNU C Library where the names have a __
+   prefix.  So we have to make a difference here.  */
+#ifdef _LIBC
+# define GETTEXT __gettext
+# define DGETTEXT __dgettext
+#else
+# define GETTEXT gettext__
+# define DGETTEXT dgettext__
+#endif
+
+/* Look up MSGID in the current default message catalog for the current
+   LC_MESSAGES locale.  If not found, returns MSGID itself (the default
+   text).  */
+static char *
+GETTEXT (msgid)
+     const char *msgid;
+{
+  return DGETTEXT (NULL, msgid);
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library.  */
+#endif
+
+/* End of gettext.c */
+\f
+/* Begin of textdomain.c */
+
+/* Implementation of the textdomain(3) function.
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.  */
+
+#if defined STDC_HEADERS || defined _LIBC
+#endif
+
+#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
+#else
+# ifndef memcpy
+#  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
+# endif
+#endif
+
+#ifdef _LIBC
+#else
+#endif
+
+/* Name of the default text domain.  */
+static const char _nl_default_default_domain[];
+
+/* Default text domain in which entries for gettext(3) are to be found.  */
+static const char *_nl_current_default_domain;
+
+/* Names for the libintl functions are a problem.  They must not clash
+   with existing names and they should follow ANSI C.  But this source
+   code is also used in GNU C Library where the names have a __
+   prefix.  So we have to make a difference here.  */
+#ifdef _LIBC
+# define TEXTDOMAIN __textdomain
+# ifndef strdup
+#  define strdup(str) __strdup (str)
+# endif
+#else
+# define TEXTDOMAIN textdomain__
+#endif
+
+/* Set the current default message catalog to DOMAINNAME.
+   If DOMAINNAME is null, return the current default.
+   If DOMAINNAME is "", reset to the default of "messages".  */
+static char *
+TEXTDOMAIN (domainname)
+     const char *domainname;
+{
+  char *old;
+
+  /* A NULL pointer requests the current setting.  */
+  if (domainname == NULL)
+    return (char *) _nl_current_default_domain;
+
+  old = (char *) _nl_current_default_domain;
+
+  /* If domain name is the null string set to default domain "messages".  */
+  if (domainname[0] == '\0'
+      || strcmp (domainname, _nl_default_default_domain) == 0)
+    _nl_current_default_domain = _nl_default_default_domain;
+  else
+    {
+      /* If the following malloc fails `_nl_current_default_domain'
+        will be NULL.  This value will be returned and so signals we
+        are out of core.  */
+#if defined _LIBC || defined HAVE_STRDUP
+      _nl_current_default_domain = strdup (domainname);
+#else
+      size_t len = strlen (domainname) + 1;
+      char *cp = (char *) malloc (len);
+      if (cp != NULL)
+       memcpy (cp, domainname, len);
+      _nl_current_default_domain = cp;
+#endif
+    }
+
+  if (old != _nl_default_default_domain)
+    free (old);
+
+  return (char *) _nl_current_default_domain;
+}
+
+#ifdef _LIBC
+/* Alias for function name in GNU C Library.  */
+#endif
+
+/* End of textdomain.c */
+\f
+/* Begin of intl-compat.c */
+
+/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
+   Library.
+   Copyright (C) 1995 Software Foundation, Inc.  */
+
+#undef gettext
+#undef dgettext
+#undef dcgettext
+#undef textdomain
+#undef bindtextdomain
+
+char *
+bindtextdomain (domainname, dirname)
+     const char *domainname;
+     const char *dirname;
+{
+  return bindtextdomain__ (domainname, dirname);
+}
+
+char *
+dcgettext (domainname, msgid, category)
+     const char *domainname;
+     const char *msgid;
+     int category;
+{
+  return dcgettext__ (domainname, msgid, category);
+}
+
+char *
+dgettext (domainname, msgid)
+     const char *domainname;
+     const char *msgid;
+{
+  return dgettext__ (domainname, msgid);
+}
+
+char *
+gettext (msgid)
+     const char *msgid;
+{
+  return gettext__ (msgid);
+}
+
+char *
+textdomain (domainname)
+     const char *domainname;
+{
+  return textdomain__ (domainname);
+}
+
+/* End of intl-compat.c */
similarity index 94%
rename from intl/libgettext.h
rename to lib/gettext.h
index 3a92960ae3ee9ff2a1376816de31c179061d390e..fa2d0bae62400900c8e14b67f183426d3efe1827 100644 (file)
@@ -1,3 +1,5 @@
+/* Begin of libgettext.h */
+
 /* Message catalogs for internationalization.
    Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
 
 # include <locale.h>
 #endif
 
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/* @@ end of prolog @@ */
-
 #ifndef PARAMS
 # if __STDC__ || defined __cplusplus
 #  define PARAMS(args) args
@@ -66,7 +65,6 @@ extern "C" {
 # define LC_MESSAGES (-1)
 #endif
 
-
 /* Declarations for gettext-using-catgets interface.  Derived from
    Jim Meyering's libintl.h.  */
 struct _msg_ent
@@ -75,7 +73,6 @@ struct _msg_ent
   int _msg_number;
 };
 
-
 #if HAVE_CATGETS
 /* These two variables are defined in the automatically by po-to-tbl.sed
    generated file `cat-id-tbl.c'.  */
@@ -83,7 +80,6 @@ extern const struct _msg_ent _msg_tbl[];
 extern int _msg_tbl_length;
 #endif
 
-
 /* For automatical extraction of messages sometimes no real
    translation is needed.  Instead the string itself is the result.  */
 #define gettext_noop(Str) (Str)
@@ -92,12 +88,12 @@ extern int _msg_tbl_length;
    LC_MESSAGES locale.  If not found, returns MSGID itself (the default
    text).  */
 extern char *gettext PARAMS ((const char *__msgid));
-extern char *gettext__ PARAMS ((const char *__msgid));
+static char *gettext__ PARAMS ((const char *__msgid));
 
 /* Look up MSGID in the DOMAINNAME message catalog for the current
    LC_MESSAGES locale.  */
 extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
-extern char *dgettext__ PARAMS ((const char *__domainname,
+static char *dgettext__ PARAMS ((const char *__domainname,
                                 const char *__msgid));
 
 /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
@@ -107,18 +103,17 @@ extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
 extern char *dcgettext__ PARAMS ((const char *__domainname,
                                  const char *__msgid, int __category));
 
-
 /* Set the current default message catalog to DOMAINNAME.
    If DOMAINNAME is null, return the current default.
    If DOMAINNAME is "", reset to the default of "messages".  */
 extern char *textdomain PARAMS ((const char *__domainname));
-extern char *textdomain__ PARAMS ((const char *__domainname));
+static char *textdomain__ PARAMS ((const char *__domainname));
 
 /* Specify that the DOMAINNAME message catalog will be found
    in DIRNAME rather than in the system locale data base.  */
 extern char *bindtextdomain PARAMS ((const char *__domainname,
                                  const char *__dirname));
-extern char *bindtextdomain__ PARAMS ((const char *__domainname,
+static char *bindtextdomain__ PARAMS ((const char *__domainname,
                                    const char *__dirname));
 
 #if ENABLE_NLS
@@ -173,10 +168,10 @@ extern int _nl_msg_cat_cntr;
 
 #endif
 
-/* @@ begin of epilog @@ */
-
 #ifdef __cplusplus
 }
 #endif
 
 #endif
+
+/* End of libgettext.h */
diff --git a/lib/malloc.c b/lib/malloc.c
new file mode 100644 (file)
index 0000000..b859e58
--- /dev/null
@@ -0,0 +1,39 @@
+/* Work around bug on some systems where malloc (0) fails.
+   Copyright (C) 1997 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program 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 General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+/* written by Jim Meyering */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+#undef malloc
+
+#include <sys/types.h>
+
+char *malloc ();
+
+/* Allocate an N-byte block of memory from the heap.
+   If N is zero, allocate a 1-byte block.  */
+
+char *
+rpl_malloc (n)
+     size_t n;
+{
+  if (n == 0)
+    n = 1;
+  return malloc (n);
+}
diff --git a/lib/realloc.c b/lib/realloc.c
new file mode 100644 (file)
index 0000000..d0d3e4a
--- /dev/null
@@ -0,0 +1,44 @@
+/* Work around bug on some systems where realloc (NULL, 0) fails.
+   Copyright (C) 1997 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program 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 General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+/* written by Jim Meyering */
+
+#if HAVE_CONFIG_H
+# include <config.h>
+#endif
+#undef realloc
+
+#include <sys/types.h>
+
+char *malloc ();
+char *realloc ();
+
+/* Change the size of an allocated block of memory P to N bytes,
+   with error checking.  If N is zero, change it to 1.  If P is NULL,
+   use malloc.  */
+
+char *
+rpl_realloc (p, n)
+     char *p;
+     size_t n;
+{
+  if (n == 0)
+    n = 1;
+  if (p == 0)
+    return malloc (n);
+  return realloc (p, n);
+}
index a362c48d3170377cecaeca2d4954932c117c4994..a01334f9212c3a8e6a99db2b4d21f3380ccbfe80 100755 (executable)
--- a/ltconfig
+++ b/ltconfig
@@ -53,7 +53,7 @@ fi
 
 # Find the correct PATH separator.  Usually this is `:', but
 # DJGPP uses `;' like DOS.
-if test "X${PATH_SEPARATOR+set}" != "Xset"; then
+if test "X${PATH_SEPARATOR+set}" != Xset; then
   UNAME=${UNAME-`uname 2>/dev/null`}
   case X$UNAME in
     *-DOS) PATH_SEPARATOR=';' ;;
@@ -63,9 +63,9 @@ fi
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
-if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
 
-if test "X${echo_test_string+set}" != "Xset"; then
+if test "X${echo_test_string+set}" != Xset; then
   # find a string as large as possible, as long as the shell can cope with it
   for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
     # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
@@ -169,10 +169,10 @@ progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
 # Constants:
 PROGRAM=ltconfig
 PACKAGE=libtool
-VERSION=1.3.2
-TIMESTAMP=" (1.385.2.150 1999/05/26 00:28:32)"
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5'
+VERSION=1.3.4
+TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 rm="rm -f"
 
 help="Try \`$progname --help' for more information."
@@ -181,7 +181,8 @@ help="Try \`$progname --help' for more information."
 default_ofile=libtool
 can_build_shared=yes
 enable_shared=yes
-# All known linkers require a `.a' archive for static linking.
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
 enable_static=yes
 enable_fast_install=yes
 enable_dlopen=unknown
@@ -201,6 +202,7 @@ need_locks=yes
 ac_ext=c
 objext=o
 libext=a
+exeext=
 cache_file=
 
 old_AR="$AR"
@@ -367,8 +369,8 @@ exec 5>>./config.log
 # Only set LANG and LC_ALL to C if already set.
 # These must not be set unconditionally because not all systems understand
 # e.g. LANG=C (notably SCO).
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
+if test "X${LANG+set}"   = Xset; then LANG=C;   export LANG;   fi
 
 if test -n "$cache_file" && test -r "$cache_file"; then
   echo "loading cache $cache_file within ltconfig"
@@ -460,7 +462,7 @@ aix3*)
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test "${COLLECT_NAMES+set}" != set; then
+  if test "X${COLLECT_NAMES+set}" != Xset; then
     COLLECT_NAMES=
     export COLLECT_NAMES
   fi
@@ -576,7 +578,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
   # Now see if the compiler is really GCC.
   with_gcc=no
   echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
-  echo "$progname:579: checking whether we are using GNU C" >&5
+  echo "$progname:581: checking whether we are using GNU C" >&5
 
   $rm conftest.c
   cat > conftest.c <<EOF
@@ -584,7 +586,7 @@ if test "$with_gcc" != yes || test -z "$CC"; then
   yes;
 #endif
 EOF
-  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:587: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
     with_gcc=yes
   fi
   $rm conftest.c
@@ -598,8 +600,8 @@ compiler="$2"
 echo $ac_n "checking for object suffix... $ac_c" 1>&6
 $rm conftest*
 echo 'int i = 1;' > conftest.c
-echo "$progname:601: checking for object suffix" >& 5
-if { (eval echo $progname:602: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+echo "$progname:603: checking for object suffix" >& 5
+if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
   # Append any warnings to the config.log.
   cat conftest.err 1>&5
 
@@ -617,6 +619,38 @@ fi
 $rm conftest*
 echo "$ac_t$objext" 1>&6
 
+echo $ac_n "checking for executable suffix... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_cv_exeext="no"
+  $rm conftest*
+  echo 'main () { return 0; }' > conftest.c
+  echo "$progname:629: checking for executable suffix" >& 5
+  if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
+    # Append any warnings to the config.log.
+    cat conftest.err 1>&5
+
+    for ac_file in conftest.*; do
+      case $ac_file in
+      *.c | *.err | *.$objext ) ;;
+      *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
+      esac
+    done
+  else
+    cat conftest.err 1>&5
+    echo "$progname: failed program was:" >&5
+    cat conftest.c >&5
+  fi
+  $rm conftest*
+fi
+if test "X$ac_cv_exeext" = Xno; then
+  exeext=""
+else
+  exeext="$ac_cv_exeext"
+fi
+echo "$ac_t$ac_cv_exeext" 1>&6
+
 echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
 pic_flag=
 special_shlib_compile_flags=
@@ -629,7 +663,7 @@ if test "$with_gcc" = yes; then
   link_static_flag='-static'
 
   case "$host_os" in
-  beos* | irix5* | irix6* | osf3* | osf4*)
+  beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
     # PIC is the default for these OSes.
     ;;
   aix*)
@@ -684,7 +718,7 @@ else
     # We can build DLLs from non-PIC.
     ;;
 
-  osf3* | osf4*)
+  osf3* | osf4* | osf5*)
     # All OSF/1 code is PIC.
     wl='-Wl,'
     link_static_flag='-non_shared'
@@ -739,8 +773,8 @@ if test -n "$pic_flag"; then
   echo "int some_variable = 0;" > conftest.c
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $pic_flag -DPIC"
-  echo "$progname:742: checking if $compiler PIC flag $pic_flag works" >&5
-  if { (eval echo $progname:743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+  echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
+  if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
     # Append any warnings to the config.log.
     cat conftest.err 1>&5
     
@@ -792,8 +826,8 @@ mkdir out
 chmod -w .
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -o out/conftest2.o"
-echo "$progname:795: checking if $compiler supports -c -o file.o" >&5
-if { (eval echo $progname:796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
+echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
+if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
 
   # The compiler can only warn and ignore the option if not recognized
   # So say no if there are warnings
@@ -825,8 +859,8 @@ if test x"$compiler_c_o" = x"yes"; then
   echo "int some_variable = 0;" > conftest.c
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -c -o conftest.lo"
-  echo "$progname:828: checking if $compiler supports -c -o file.lo" >&5
-if { (eval echo $progname:829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
+  echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
+if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
 
     # The compiler can only warn and ignore the option if not recognized
     # So say no if there are warnings
@@ -877,8 +911,8 @@ if test "$with_gcc" = yes; then
   echo "int some_variable = 0;" > conftest.c
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
-  echo "$progname:880: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-  if { (eval echo $progname:881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+  echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
 
     # The compiler can only warn and ignore the option if not recognized
     # So say no if there are warnings
@@ -921,8 +955,8 @@ $rm conftest*
 echo 'main(){return(0);}' > conftest.c
 save_LDFLAGS="$LDFLAGS"
 LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:924: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   echo "$ac_t$link_static_flag" 1>&6
 else
   echo "$ac_t"none 1>&6
@@ -954,7 +988,7 @@ if test -z "$LD"; then
   if test "$with_gcc" = yes; then
     # Check if gcc -print-prog-name=ld gives a path.
     echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
-    echo "$progname:957: checking for ld used by GCC" >&5
+    echo "$progname:991: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -978,10 +1012,10 @@ if test -z "$LD"; then
     esac
   elif test "$with_gnu_ld" = yes; then
     echo $ac_n "checking for GNU ld... $ac_c" 1>&6
-    echo "$progname:981: checking for GNU ld" >&5
+    echo "$progname:1015: checking for GNU ld" >&5
   else
     echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-    echo "$progname:984: checking for non-GNU ld" >&5
+    echo "$progname:1018: checking for non-GNU ld" >&5
   fi
 
   if test -z "$LD"; then
@@ -1047,7 +1081,7 @@ hardcode_minus_L=no
 hardcode_shlibpath_var=unsupported
 runpath_var=
 always_export_symbols=no
-export_symbols_cmds='$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
 # include_expsyms should be a list of space-separated symbols to be *always*
 # included in the symbol list
 include_expsyms=
@@ -1130,10 +1164,9 @@ EOF
     # Extract the symbol export list from an `--export-all' def file,
     # then regenerate the def file from the symbol export list, so that
     # the compiled dll only exports the symbol export list.
-    export_symbols_cmds='rm -f $objdir/$soname-ltdll.c~
-      sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
-      (cd $objdir && $CC -c $soname-ltdll.c)~
-      $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def  $objdir/$soname-ltdll.$objext $libobjs~
+    export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+      $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def  $objdir/$soname-ltdll.$objext $libobjs $convenience~
       sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols'
 
     archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
@@ -1142,17 +1175,19 @@ EOF
        echo "  \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def;
        _lt_hint=`expr 1 + \$_lt_hint`;
       done~
+      test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
       $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
       $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
       $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
       $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
       $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
 
-      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
+      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' 
     ;;
 
   netbsd*)
-    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
       archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
       archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
     else
@@ -1161,7 +1196,7 @@ EOF
     fi
     ;;
 
-  solaris*)
+  solaris* | sysv5*)
     if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
       ld_shlibs=no
       cat <<EOF 1>&2
@@ -1209,7 +1244,12 @@ EOF
       whole_archive_flag_spec=
       ;;
     *)
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+        whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+        whole_archive_flag_spec=
+      fi
       ;;
     esac
   fi
@@ -1370,7 +1410,7 @@ else
     old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
     ;;
 
-  osf3* | osf4*)
+  osf3*)
     if test "$with_gcc" = yes; then
       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
@@ -1382,6 +1422,18 @@ else
     hardcode_libdir_separator=:
     ;;
 
+  osf4* | osf5*)  # As osf3* with the addition of the -msym flag
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
   sco3.2v5*)
     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
     hardcode_shlibpath_var=no
@@ -1426,6 +1478,18 @@ else
     export_dynamic_flag_spec='-Bexport'
     ;;
 
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
   uts4*)
     archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
     hardcode_libdir_flag_spec='-L$libdir'
@@ -1439,14 +1503,28 @@ else
     ;;
 
   sysv4*MP*)
-    if test -d /usr/nec ;then
-    # archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs'
-    archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs'
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_minus_L=no
     hardcode_shlibpath_var=no
-    runpath_var=LD_RUN_PATH
     hardcode_runpath_var=yes
-    ld_shlibs=yes
-    fi
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  unixware7*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
     ;;
 
   *)
@@ -1554,11 +1632,11 @@ void nm_test_func(){}
 main(){nm_test_var='a';nm_test_func();return(0);}
 EOF
 
-  echo "$progname:1557: checking if global_symbol_pipe works" >&5
-  if { (eval echo $progname:1558: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+  echo "$progname:1635: checking if global_symbol_pipe works" >&5
+  if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { echo "$progname:1561: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+    if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
 
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
@@ -1610,7 +1688,7 @@ EOF
          save_CFLAGS="$CFLAGS"
          LIBS="conftstm.$objext"
          CFLAGS="$CFLAGS$no_builtin_flag"
-         if { (eval echo $progname:1613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+         if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
            pipe_works=yes
          else
            echo "$progname: failed program was:" >&5
@@ -1752,15 +1830,17 @@ beos*)
 
 bsdi4*)
   version_type=linux
-  library_names_spec='${libname}.so$major ${libname}.so'
-  soname_spec='${libname}.so'
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
-  deplibs_check_method='file_magic ELF 32-bit LSB shared object'
+  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
   file_magic_cmd=/usr/bin/file
   file_magic_test_file=/shlib/libc.so
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
   sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
   # the default ld.so.conf also contains /usr/contrib/lib and
   # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
   # libtool to hard-code these into programs
@@ -1768,6 +1848,8 @@ bsdi4*)
 
 cygwin* | mingw*)
   version_type=windows
+  need_version=no
+  need_lib_prefix=no
   if test "$with_gcc" = yes; then
     library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
   else
@@ -1776,7 +1858,6 @@ cygwin* | mingw*)
   dynamic_linker='Win32 ld.exe'
   deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
   file_magic_cmd='${OBJDUMP} -f'
-  need_lib_prefix=no
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   lt_cv_dlopen="LoadLibrary"
@@ -1805,13 +1886,23 @@ freebsd*)
       need_version=yes
       ;;
   esac
-  finish_cmds='PATH="\$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir'
   shlibpath_var=LD_LIBRARY_PATH
+  case "$host_os" in
+  freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    ;;
+  esac
   ;;
 
 gnu*)
   version_type=linux
-  library_names_spec='${libname}${release}.so$versuffix ${libname}.so'
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -1849,8 +1940,6 @@ irix5* | irix6*)
     *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
     *) libsuff= shlibsuff= libmagic=never-match;;
     esac
-    # this will be overridden with pass_all, but let us keep it just in case
-    deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
     ;;
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
@@ -1925,7 +2014,7 @@ os2*)
   shlibpath_var=LIBPATH
   ;;
 
-osf3* | osf4*)
+osf3* | osf4* | osf5*)
   version_type=osf
   need_version=no
   soname_spec='${libname}${release}.so'
@@ -2120,7 +2209,7 @@ else
 if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
   lt_cv_dlopen=no lt_cv_dlopen_libs=
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "$progname:2123: checking for dlopen in -ldl" >&5
+echo "$progname:2212: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2128,17 +2217,20 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2131 "ltconfig"
+#line 2220 "ltconfig"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char dlopen();
 
 int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo $progname:2141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2157,18 +2249,21 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "$progname:2160: checking for dlopen" >&5
+echo "$progname:2252: checking for dlopen" >&5
 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2165 "ltconfig"
+#line 2257 "ltconfig"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dlopen(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char dlopen();
 
 int main() {
@@ -2184,7 +2279,7 @@ dlopen();
 
 ; return 0; }
 EOF
-if { (eval echo $progname:2187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dlopen=yes"
 else
@@ -2201,7 +2296,7 @@ if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "$progname:2204: checking for dld_link in -ldld" >&5
+echo "$progname:2299: checking for dld_link in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2209,17 +2304,20 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2212 "ltconfig"
+#line 2307 "ltconfig"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char dld_link();
 
 int main() {
 dld_link()
 ; return 0; }
 EOF
-if { (eval echo $progname:2222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2238,18 +2336,21 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "$progname:2241: checking for shl_load" >&5
+echo "$progname:2339: checking for shl_load" >&5
 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2246 "ltconfig"
+#line 2344 "ltconfig"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shl_load(); below.  */
 #include <assert.h>
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char shl_load();
 
 int main() {
@@ -2265,7 +2366,7 @@ shl_load();
 
 ; return 0; }
 EOF
-if { (eval echo $progname:2268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shl_load=yes"
 else
@@ -2283,7 +2384,7 @@ if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "$progname:2286: checking for shl_load in -ldld" >&5
+echo "$progname:2387: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2291,18 +2392,21 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2294 "ltconfig"
+#line 2395 "ltconfig"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
     builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char shl_load();
 
 int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo $progname:2305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2345,17 +2449,17 @@ fi
 for ac_hdr in dlfcn.h; do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "$progname:2348: checking for $ac_hdr" >&5
+echo "$progname:2452: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2353 "ltconfig"
+#line 2457 "ltconfig"
 #include <$ac_hdr>
 int fnord = 0;
 EOF
-ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo $progname:2358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_try="$ac_compile >/dev/null 2>conftest.out"
+{ (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2383,7 +2487,7 @@ done
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
   echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2386: checking whether a program can dlopen itself" >&5
+echo "$progname:2490: checking whether a program can dlopen itself" >&5
 if test "${lt_cv_dlopen_self+set}" = set; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2391,7 +2495,7 @@ else
     lt_cv_dlopen_self=cross
   else
     cat > conftest.c <<EOF
-#line 2394 "ltconfig"
+#line 2498 "ltconfig"
 
 #if HAVE_DLFCN_H
 #include <dlfcn.h>
@@ -2434,10 +2538,10 @@ else
 fnord() { int i=42;}
 main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
     if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
-              if(ptr1 || ptr2) exit(0); } exit(1); } 
+              if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
 
 EOF
-if { (eval echo $progname:2440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   lt_cv_dlopen_self=yes
 else
@@ -2456,7 +2560,7 @@ echo "$ac_t""$lt_cv_dlopen_self" 1>&6
   if test "$lt_cv_dlopen_self" = yes; then
     LDFLAGS="$LDFLAGS $link_static_flag"
   echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2459: checking whether a statically linked program can dlopen itself" >&5
+echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5
 if test "${lt_cv_dlopen_self_static+set}" = set; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2464,7 +2568,7 @@ else
     lt_cv_dlopen_self_static=cross
   else
     cat > conftest.c <<EOF
-#line 2467 "ltconfig"
+#line 2571 "ltconfig"
 
 #if HAVE_DLFCN_H
 #include <dlfcn.h>
@@ -2507,10 +2611,10 @@ else
 fnord() { int i=42;}
 main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
     if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
-    if(ptr1 || ptr2) exit(0); } exit(1); } 
+    if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
 
 EOF
-if { (eval echo $progname:2513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
 then
   lt_cv_dlopen_self_static=yes
 else
@@ -2602,7 +2706,7 @@ case "$ltmain" in
 # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
 #
 # Copyright (C) 1996-1999 Free Software Foundation, Inc.
-# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -2628,7 +2732,7 @@ Xsed="sed -e s/^X//"
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
-if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
 
 ### BEGIN LIBTOOL CONFIG
 EOF
@@ -2729,6 +2833,9 @@ objext="$objext"
 # Old archive suffix (normally "a").
 libext="$libext"
 
+# Executable file suffix (normally "").
+exeext="$exeext"
+
 # Additional compiler flags for building library objects.
 pic_flag=$pic_flag
 
@@ -2888,7 +2995,7 @@ case "$ltmain" in
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test "${COLLECT_NAMES+set}" != set; then
+if test "X${COLLECT_NAMES+set}" != Xset; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -2897,7 +3004,11 @@ EOF
   esac
 
   # Append the ltmain.sh script.
-  cat "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+  sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
 
   chmod +x "$ofile"
   ;;
index 3417294752d7db2e2ce7aa94579319de42318e27..50515ad0b9ee92bb43e26ec0df55270fb013ff0f 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -54,8 +54,8 @@ modename="$progname"
 # Constants.
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.3.2
-TIMESTAMP=" (1.385.2.150 1999/05/26 00:28:32)"
+VERSION=1.3.4
+TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
 
 default_mode=
 help="Try \`$progname --help' for more information."
@@ -69,7 +69,7 @@ rm="rm -f"
 Xsed='sed -e 1s/^X//'
 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
 SP2NL='tr \040 \012'
-NL2SP='tr \01\040'
+NL2SP='tr \015\012 \040\040'
 
 # NLS nuisances.
 # Only set LANG and LC_ALL to C if already set.
@@ -435,7 +435,7 @@ compiler."
       fbsd_hideous_sh_bug=$base_compile
 
       # All platforms use -DPIC, to notify preprocessed assembler code.
-      command="$base_compile $pic_flag -DPIC $srcfile"
+      command="$base_compile $srcfile $pic_flag -DPIC"
       if test "$build_old_libs" = yes; then
        lo_libobj="$libobj"
        dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
@@ -521,9 +521,17 @@ compiler."
          exit $error
        fi
 
+       xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+       if test "X$xdir" = "X$obj"; then
+         xdir="."
+       else
+         xdir="$xdir"
+       fi
+       baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
+       libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
        # Now arrange that obj and lo_libobj become the same file
-       $show "$LN_S $obj $lo_libobj"
-       if $run $LN_S $obj $lo_libobj; then
+       $show "(cd $xdir && $LN_S $baseobj $libobj)"
+       if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
          exit 0
        else
          error=$?
@@ -613,8 +621,6 @@ compiler."
   # libtool link mode
   link)
     modename="$modename: link"
-    C_compiler="$CC" # save it, to compile generated C sources
-    CC="$nonopt"
     case "$host" in
     *-*-cygwin* | *-*-mingw* | *-*-os2*)
       # It is impossible to link a dll without this setting, and
@@ -638,6 +644,12 @@ compiler."
 # #undef WIN32_LEAN_AND_MEAN
 # #include <stdio.h>
 #
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
 # #ifdef __cplusplus
 # extern "C" {
 # #endif
@@ -646,8 +658,10 @@ compiler."
 # }
 # #endif
 #
+# #ifdef __CYGWIN__
 # #include <cygwin/cygwin_dll.h>
 # DECLARE_CYGWIN_DLL( DllMain );
+# #endif
 # HINSTANCE __hDllInstance_base;
 #
 # BOOL APIENTRY
@@ -794,8 +808,8 @@ compiler."
       allow_undefined=yes
       ;;
     esac
-    compile_command="$CC"
-    finalize_command="$CC"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
 
     compile_rpath=
     finalize_rpath=
@@ -893,6 +907,14 @@ compiler."
          fi
          case "$arg" in
          *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
          self)
            if test "$prev" = dlprefiles; then
              dlself=yes
@@ -1222,7 +1244,7 @@ compiler."
        fi
 
        if test -n "$dependency_libs"; then
-         # Extract -R from dependency_libs
+         # Extract -R and -L from dependency_libs
          temp_deplibs=
          for deplib in $dependency_libs; do
            case "$deplib" in
@@ -1234,7 +1256,13 @@ compiler."
            -L*) case "$compile_command $temp_deplibs " in
                 *" $deplib "*) ;;
                 *) temp_deplibs="$temp_deplibs $deplib";;
-                esac;;
+                esac
+                temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+                case " $lib_search_path " in
+                *" $temp_dir "*) ;;
+                *) lib_search_path="$lib_search_path $temp_dir";;
+                esac
+                ;;
            *) temp_deplibs="$temp_deplibs $deplib";;
            esac
          done
@@ -1829,7 +1857,7 @@ compiler."
          int main() { return 0; }
 EOF
          $rm conftest
-         $C_compiler -o conftest conftest.c $deplibs
+         $CC -o conftest conftest.c $deplibs
          if test $? -eq 0 ; then
            ldd_output=`ldd conftest`
            for i in $deplibs; do
@@ -1862,7 +1890,7 @@ EOF
             # If $name is empty we are operating on a -L argument.
              if test "$name" != "" ; then
                $rm conftest
-               $C_compiler -o conftest conftest.c $i
+               $CC -o conftest conftest.c $i
                # Did it work?
                if test $? -eq 0 ; then
                  ldd_output=`ldd conftest`
@@ -2025,63 +2053,25 @@ EOF
        done
 
        # Ensure that we have .o objects for linkers which dislike .lo
-       # (e.g. aix) incase we are running --disable-static
+       # (e.g. aix) in case we are running --disable-static
        for obj in $libobjs; do
-         oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"`
-         if test ! -f $oldobj; then
-           $show "${LN_S} $obj $oldobj"
-           $run ${LN_S} $obj $oldobj || exit $?
+         xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$xdir" = "X$obj"; then
+           xdir="."
+         else
+           xdir="$xdir"
+         fi
+         baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+         oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+         if test ! -f $xdir/$oldobj; then
+           $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+           $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
          fi
        done
 
        # Use standard objects if they are pic
        test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
 
-       if test -n "$whole_archive_flag_spec"; then
-         if test -n "$convenience"; then
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-         fi
-       else
-         gentop="$output_objdir/${outputname}x"
-         $show "${rm}r $gentop"
-         $run ${rm}r "$gentop"
-         $show "mkdir $gentop"
-         $run mkdir "$gentop"
-         status=$?
-         if test $status -ne 0 && test ! -d "$gentop"; then
-           exit $status
-         fi
-         generated="$generated $gentop"
-         
-         for xlib in $convenience; do
-           # Extract the objects.
-           case "$xlib" in
-           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
-           *) xabs=`pwd`"/$xlib" ;;
-           esac
-           xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
-           xdir="$gentop/$xlib"
-
-           $show "${rm}r $xdir"
-           $run ${rm}r "$xdir"
-           $show "mkdir $xdir"
-           $run mkdir "$xdir"
-           status=$?
-           if test $status -ne 0 && test ! -d "$xdir"; then
-             exit $status
-           fi
-           $show "(cd $xdir && $AR x $xabs)"
-           $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
-
-           libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
-         done
-       fi
-
-       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-         eval flag=\"$thread_safe_flag_spec\"
-         linkopts="$linkopts $flag"
-       fi
-
        # Prepare the list of exported symbols
        if test -z "$export_symbols"; then
          if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
@@ -2109,6 +2099,51 @@ EOF
          $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
        fi
 
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         else
+           gentop="$output_objdir/${outputname}x"
+           $show "${rm}r $gentop"
+           $run ${rm}r "$gentop"
+           $show "mkdir $gentop"
+           $run mkdir "$gentop"
+           status=$?
+           if test $status -ne 0 && test ! -d "$gentop"; then
+             exit $status
+           fi
+           generated="$generated $gentop"
+
+           for xlib in $convenience; do
+             # Extract the objects.
+             case "$xlib" in
+             [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+             *) xabs=`pwd`"/$xlib" ;;
+             esac
+             xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+             xdir="$gentop/$xlib"
+
+             $show "${rm}r $xdir"
+             $run ${rm}r "$xdir"
+             $show "mkdir $xdir"
+             $run mkdir "$xdir"
+             status=$?
+             if test $status -ne 0 && test ! -d "$xdir"; then
+               exit $status
+             fi
+             $show "(cd $xdir && $AR x $xabs)"
+             $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+             libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+           done
+         fi
+       fi
+
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         linkopts="$linkopts $flag"
+       fi
+
        # Do each of the archive commands.
        if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
          eval cmds=\"$archive_expsym_cmds\"
@@ -2187,8 +2222,58 @@ EOF
       # Delete the old objects.
       $run $rm $obj $libobj
 
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl= 
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+       else
+         gentop="$output_objdir/${obj}x"
+         $show "${rm}r $gentop"
+         $run ${rm}r "$gentop"
+         $show "mkdir $gentop"
+         $run mkdir "$gentop"
+         status=$?
+         if test $status -ne 0 && test ! -d "$gentop"; then
+           exit $status
+         fi
+         generated="$generated $gentop"
+
+         for xlib in $convenience; do
+           # Extract the objects.
+           case "$xlib" in
+           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+           *) xabs=`pwd`"/$xlib" ;;
+           esac
+           xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+           xdir="$gentop/$xlib"
+
+           $show "${rm}r $xdir"
+           $run ${rm}r "$xdir"
+           $show "mkdir $xdir"
+           $run mkdir "$xdir"
+           status=$?
+           if test $status -ne 0 && test ! -d "$xdir"; then
+             exit $status
+           fi
+           $show "(cd $xdir && $AR x $xabs)"
+           $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+           reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+         done
+       fi
+      fi
+
       # Create the old-style object.
-      reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+      reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
 
       output="$obj"
       eval cmds=\"$reload_cmds\"
@@ -2201,9 +2286,21 @@ EOF
       IFS="$save_ifs"
 
       # Exit if we aren't doing a library object file.
-      test -z "$libobj" && exit 0
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       exit 0
+      fi
 
       if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
        # Create an invalid libtool object if no PIC, so that we don't
        # accidentally link it into a program.
        $show "echo timestamp > $libobj"
@@ -2213,7 +2310,7 @@ EOF
 
       if test -n "$pic_flag"; then
        # Only do commands if we really have different PIC objects.
-       reload_objs="$libobjs"
+       reload_objs="$libobjs $reload_conv_objs"
        output="$libobj"
        eval cmds=\"$reload_cmds\"
        IFS="${IFS=     }"; save_ifs="$IFS"; IFS='~'
@@ -2227,8 +2324,21 @@ EOF
        # Just create a symlink.
        $show $rm $libobj
        $run $rm $libobj
-       $show "$LN_S $obj $libobj"
-       $run $LN_S $obj $libobj || exit $?
+       xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+       if test "X$xdir" = "X$libobj"; then
+         xdir="."
+       else
+         xdir="$xdir"
+       fi
+       baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+       oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+       $show "(cd $xdir && $LN_S $oldobj $baseobj)"
+       $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+       $show "${rm}r $gentop"
+       $run ${rm}r $gentop
       fi
 
       exit 0
@@ -2363,7 +2473,7 @@ EOF
       fi
 
       dlsyms=
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" = yes; then
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
        if test -n "$NM" && test -n "$global_symbol_pipe"; then
          dlsyms="${outputname}S.c"
        else
@@ -2509,16 +2619,21 @@ static const void *lt_preloaded_setup() {
          # linked before any other PIC object.  But we must not use
          # pic_flag when linking with -static.  The problem exists in
          # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-         *-*-freebsd2*|*-*-freebsd3.0*)
+         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)\r
            case "$compile_command " in
            *" -static "*) ;;
            *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+           esac;;
+         *-*-hpux*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag -DPIC";;
            esac
          esac
 
          # Now compile the dynamic symbol file.
-         $show "(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
-         $run eval '(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+         $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+         $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
 
          # Clean up the generated files.
          $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
@@ -2687,7 +2802,7 @@ sed_quote_subst='$sed_quote_subst'
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
 # if CDPATH is set.
-if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
 
 relink_command=\"$relink_command\"
 
@@ -2906,14 +3021,21 @@ fi\
       if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
        eval cmds=\"$old_archive_from_new_cmds\"
       else
-       # Ensure that we have .o objects in place incase we decided
+       # Ensure that we have .o objects in place in case we decided
        # not to build a shared library, and have fallen back to building
        # static libs even though --disable-static was passed!
        for oldobj in $oldobjs; do
          if test ! -f $oldobj; then
-           obj=`$echo "X$oldobj" | $Xsed -e "$o2lo"`
-           $show "${LN_S} $obj $oldobj"
-           $run ${LN_S} $obj $oldobj || exit $?
+           xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+           if test "X$xdir" = "X$oldobj"; then
+             xdir="."
+           else
+             xdir="$xdir"
+           fi
+           baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+           obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+           $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+           $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
          fi
        done
 
@@ -3201,13 +3323,11 @@ libdir='$install_libdir'\
          # Install the shared library and build the symlinks.
          $show "$install_prog $dir/$realname $destdir/$realname"
          $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
-         test "X$dlname" = "X$realname" && dlname=
 
          if test $# -gt 0; then
            # Delete the old symlinks, and create new ones.
            for linkname
            do
-             test "X$dlname" = "X$linkname" && dlname=
              if test "$linkname" != "$realname"; then
                $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
                $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
@@ -3215,12 +3335,6 @@ libdir='$install_libdir'\
            done
          fi
 
-         if test -n "$dlname"; then
-           # Install the dynamically-loadable library.
-           $show "$install_prog $dir/$dlname $destdir/$dlname"
-           $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
-         fi
-
          # Do each command in the postinstall commands.
          lib="$destdir/$realname"
          eval cmds=\"$postinstall_cmds\"
@@ -3591,8 +3705,10 @@ libdir='$install_libdir'\
     done
 
     if test -z "$run"; then
-      # Export the shlibpath_var.
-      eval "export $shlibpath_var"
+      if test -n "$shlibpath_var"; then
+        # Export the shlibpath_var.
+        eval "export $shlibpath_var"
+      fi
 
       # Restore saved enviroment variables
       if test "${save_LC_ALL+set}" = set; then
@@ -3609,8 +3725,10 @@ libdir='$install_libdir'\
       exit 1
     else
       # Display what would be done.
-      eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
-      $echo "export $shlibpath_var"
+      if test -n "$shlibpath_var"; then
+        eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+        $echo "export $shlibpath_var"
+      fi
       $echo "$cmd$args"
       exit 0
     fi
@@ -3652,9 +3770,7 @@ libdir='$install_libdir'\
          # Delete the libtool libraries and symlinks.
          for n in $library_names; do
            rmfiles="$rmfiles $dir/$n"
-           test "X$n" = "X$dlname" && dlname=
          done
-         test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
          test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
 
          $show "$rm $rmfiles"
index ad2e947b2751ab98b4acd8e5c2125308ea51761a..5384c212da17e286204a602a60b7849b2e983f6c 100644 (file)
@@ -1,3 +1,10 @@
+1999-12-14  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am: Adapt to the gettext scheme used in wdiff.
+
+       * gettext.m4: New file.  Have getcwd checked at configuration time.
+       * nls.m4: Deleted.
+\f
 1998-10-20  François Pinard  <pinard@iro.umontreal.ca>
 
        * Makefile.am (AUTOMAKE_OPTIONS): Add --gnits.
index acf7ccd4a53652709cbca3a414e347d2dab289be..a4383dff7742befe00468cd0a60c43f329debbb6 100644 (file)
@@ -1,3 +1,3 @@
 AUTOMAKE_OPTIONS = gnits
 
-EXTRA_DIST = atconfig.m4 malloc.m4 microsoft.m4 nls.m4 realloc.m4
+EXTRA_DIST = atconfig.m4 gettext.m4 malloc.m4 microsoft.m4 realloc.m4
index 08043742153d834b13d3dc8dad5dd63329aac43c..82648b7bf6c4520b243b7e79c7ea47ec6ac50e04 100644 (file)
@@ -59,9 +59,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
-AWK = @AWK@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -80,16 +82,16 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
 LEX = @LEX@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
@@ -103,7 +105,7 @@ l = @l@
 
 AUTOMAKE_OPTIONS = gnits
 
-EXTRA_DIST = atconfig.m4 malloc.m4 microsoft.m4 nls.m4 realloc.m4
+EXTRA_DIST = atconfig.m4 gettext.m4 malloc.m4 microsoft.m4 realloc.m4
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
 CONFIG_CLEAN_FILES = 
similarity index 52%
rename from m4/nls.m4
rename to m4/gettext.m4
index 9827b2b60d98fff0f414f2247a180e437e26364a..f2f345c1dab68f95541cd848c480fc3a7b7decbc 100644 (file)
--- a/m4/nls.m4
@@ -1,6 +1,49 @@
-# Select gettext and choose translations to install.
+# Select gettext and choose translations to install.   -*- shell-script -*-
 # François Pinard <pinard@iro.umontreal.ca>, 1998.
 
+# Here is a check list about how one could use this macro.
+# - In the build directory, execute `make distclean'.
+# - Rename `po/' to `i18n/'.
+# - Recursively delete directory `intl/'.
+# - Add the following files:
+#    . `i18n/Makefile.am'
+#    . `m4/gettext.m4'
+#    . `lib/gettext.c'
+#    . `lib/gettext.h'.
+# - In top level `configure.in':
+#    . use `fp_WITH_GETTEXT'.
+#    . delete `AM_GNU_GETTEXT' and any `AC_LINK_FILES' for $nls variables.
+#    . add `i18n/Makefile' to `AC_OUTPUT'.
+#    . delete `intl/Makefile' and `po/Makefile.in' from `AC_OUTPUT'.
+# - In top level `Makefile.am':
+#    . add `i18n' in SUBDIRS, and remove `intl' and `po'.
+#    . define `POTFILES' (peek at previous `i18n/POTFILES.in).
+#    . add `$(srcdir)/stamp-pot' to `all-local'.
+#    . add rule for `$(srcdir)/stamp-pot'.
+# - In top level `acconfig.h':
+#    . document `HAVE_DCGETTEXT' and `LOCALEDIR'.
+#    . delete documentation for `HAVE_CATGETS'.
+# - In `lib/Makefile.am':
+#    . add `gettext.c' to `EXTRA_DIST'.
+#    . add `gettext.h' to `noinstl_HEADERS'.
+#    . add definitions for `localdir' and `aliaspath'.
+#    . add special rules for `gettext.o' and `gettext._o'.
+# - In `m4/Makefile.am':
+#    . add `gettext.m4' to `EXTRA_DIST'.
+# - In `src/Makefile.am':
+#    . delete `-I/..intl' from `INCLUDES'.
+#    . delete `@INTLLIBS@' from `LDADD'.
+#    . delete `localedir' and its references.
+# - Clean up directory `i18n/':
+#    . delete `Makefile.in.in' and `POTFILES.in'.
+#    . delete all `*.gmo' files, `cat-id-tbl.c' and `stamp-cat-id'.
+# - In the top level distribution directory:
+#    . run `aclocal -I m4'.
+#    . run `autoreconf'.
+# - In the build directory:
+#    . run `$top_srcdir/configure'.
+#    . run `make check'.
+
 AC_DEFUN(fp_WITH_GETTEXT, [
 
   AC_MSG_CHECKING(whether NLS is wanted)
@@ -42,7 +85,7 @@ AC_DEFUN(fp_WITH_GETTEXT, [
     fi
 
     AC_CHECK_HEADERS(locale.h)
-    AC_CHECK_FUNCS(setlocale)
+    AC_CHECK_FUNCS(getcwd setlocale stpcpy)
     AM_LC_MESSAGES
 
     if test -z "$ALL_LINGUAS"; then
@@ -80,4 +123,9 @@ AC_DEFUN(fp_WITH_GETTEXT, [
       AC_MSG_RESULT($ac_print)
     fi
 
+    if test "x$prefix" = xNONE; then
+      AC_DEFINE_UNQUOTED(LOCALEDIR, "$ac_default_prefix/share/locale")
+    else
+      AC_DEFINE_UNQUOTED(LOCALEDIR, "$prefix/share/locale")
+    fi
   fi])
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100644 (file)
index 111b40f..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-# Makefile for program source directory in GNU NLS utilities package.
-# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file file be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU Public License
-# but which still want to provide support for the GNU gettext functionality.
-# Please note that the actual code is *not* freely available.
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datadir = $(prefix)/@DATADIRNAME@
-localedir = $(datadir)/locale
-gnulocaledir = $(prefix)/share/locale
-gettextsrcdir = $(prefix)/share/gettext/po
-subdir = po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
-
-CC = @CC@
-GENCAT = @GENCAT@
-GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
-MSGFMT = @MSGFMT@
-XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
-MSGMERGE = PATH=../src:$$PATH msgmerge
-
-DEFS = @DEFS@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-
-INCLUDES = -I.. -I$(top_srcdir)/intl
-
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
-SOURCES = cat-id-tbl.c
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
-stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-INSTOBJEXT = @INSTOBJEXT@
-
-.SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
-
-.c.o:
-       $(COMPILE) $<
-
-.po.pox:
-       $(MAKE) $(PACKAGE).pot
-       $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
-
-.po.mo:
-       $(MSGFMT) -o $@ $<
-
-.po.gmo:
-       file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
-         && rm -f $$file && $(GMSGFMT) -o $$file $<
-
-.po.cat:
-       sed -f ../intl/po2msg.sed < $< > $*.msg \
-         && rm -f $@ && $(GENCAT) $@ $*.msg
-
-
-all: all-@USE_NLS@
-
-all-yes: cat-id-tbl.c $(CATALOGS)
-all-no:
-
-$(srcdir)/$(PACKAGE).pot: $(POTFILES)
-       $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
-         --add-comments --keyword=_ --keyword=N_ \
-         --files-from=$(srcdir)/POTFILES.in \
-       && test ! -f $(PACKAGE).po \
-          || ( rm -f $(srcdir)/$(PACKAGE).pot \
-               && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
-
-$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
-$(srcdir)/stamp-cat-id: $(PACKAGE).pot
-       rm -f cat-id-tbl.tmp
-       sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
-               | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
-       if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
-         rm cat-id-tbl.tmp; \
-       else \
-         echo cat-id-tbl.c changed; \
-         rm -f $(srcdir)/cat-id-tbl.c; \
-         mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
-       fi
-       cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-@USE_NLS@
-install-data-no: all
-install-data-yes: all
-       if test -r "$(MKINSTALLDIRS)"; then \
-         $(MKINSTALLDIRS) $(datadir); \
-       else \
-         $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \
-       fi
-       @catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         case "$$cat" in \
-           *.gmo) destdir=$(gnulocaledir);; \
-           *)     destdir=$(localedir);; \
-         esac; \
-         lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-         dir=$$destdir/$$lang/LC_MESSAGES; \
-         if test -r "$(MKINSTALLDIRS)"; then \
-           $(MKINSTALLDIRS) $$dir; \
-         else \
-           $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
-         fi; \
-         if test -r $$cat; then \
-           $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
-           echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
-         else \
-           $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
-           echo "installing $(srcdir)/$$cat as" \
-                "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
-         fi; \
-         if test -r $$cat.m; then \
-           $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
-           echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
-         else \
-           if test -r $(srcdir)/$$cat.m ; then \
-             $(INSTALL_DATA) $(srcdir)/$$cat.m \
-               $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
-             echo "installing $(srcdir)/$$cat as" \
-                  "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
-           else \
-             true; \
-           fi; \
-         fi; \
-       done
-       if test "$(PACKAGE)" = "gettext"; then \
-         if test -r "$(MKINSTALLDIRS)"; then \
-           $(MKINSTALLDIRS) $(gettextsrcdir); \
-         else \
-           $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
-         fi; \
-         $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
-                         $(gettextsrcdir)/Makefile.in.in; \
-       else \
-         : ; \
-       fi
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall:
-       catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-         rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
-         rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
-         rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
-         rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
-       done
-       rm -f $(gettextsrcdir)/po-Makefile.in.in
-
-check: all
-
-cat-id-tbl.o: ../intl/libgettext.h
-
-dvi info tags TAGS ID:
-
-mostlyclean:
-       rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
-       rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
-       rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
-
-maintainer-clean: distclean
-       @echo "This command is intended for maintainers to use;"
-       @echo "it deletes files that may require special tools to rebuild."
-       rm -f $(GMOFILES)
-
-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir: update-po $(DISTFILES)
-       dists="$(DISTFILES)"; \
-       for file in $$dists; do \
-         ln $(srcdir)/$$file $(distdir) 2> /dev/null \
-           || cp -p $(srcdir)/$$file $(distdir); \
-       done
-
-update-po: Makefile
-       $(MAKE) $(PACKAGE).pot
-       PATH=`pwd`/../src:$$PATH; \
-       cd $(srcdir); \
-       catalogs='$(CATALOGS)'; \
-       for cat in $$catalogs; do \
-         cat=`basename $$cat`; \
-         lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-         mv $$lang.po $$lang.old.po; \
-         echo "$$lang:"; \
-         if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
-           rm -f $$lang.old.po; \
-         else \
-           echo "msgmerge for $$cat failed!"; \
-           rm -f $$lang.po; \
-           mv $$lang.old.po $$lang.po; \
-         fi; \
-       done
-
-POTFILES: POTFILES.in
-       ( if test 'x$(srcdir)' != 'x.'; then \
-           posrcprefix='$(top_srcdir)/'; \
-         else \
-           posrcprefix="../"; \
-         fi; \
-         rm -f $@-t $@ \
-           && (sed -e '/^#/d' -e '/^[  ]*$$/d' \
-                   -e "s@.*@   $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
-               | sed -e '$$s/\\$$//') > $@-t \
-           && chmod a-w $@-t \
-           && mv $@-t $@ )
-
-Makefile: Makefile.in.in ../config.status POTFILES
-       cd .. \
-         && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
-              $(SHELL) ./config.status
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100644 (file)
index f8f4eb0..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# List of files which contain translatable strings.
-# Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
-
-# Package source files
-src/debug.c
-src/main.c
-src/names.c
-src/outer.c
-src/recode.c
-src/request.c
-src/strip-data.c
-src/task.c
diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c
deleted file mode 100644 (file)
index d91cde8..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/* Automatically generated by po2tbl.sed from recode.pot.  */
-
-#if HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "libgettext.h"
-
-const struct _msg_ent _msg_tbl[] = {
-  {"", 1},
-  {"\
-UCS2   Mne   Description\n\
-\n", 2},
-  {"No error", 3},
-  {"Non canonical input", 4},
-  {"Ambiguous output", 5},
-  {"Untranslatable input", 6},
-  {"Invalid input", 7},
-  {"System detected problem", 8},
-  {"Misuse of recoding library", 9},
-  {"Internal recoding bug", 10},
-  {"\
-This program is free software; you can redistribute it and/or modify\n\
-it under the terms of the GNU General Public License as published by\n\
-the Free Software Foundation; either version 2, or (at your option)\n\
-any later version.\n\
-\n\
-This program is distributed in the hope that it will be useful,\n\
-but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n\
-GNU General Public License for more details.\n\
-\n\
-You should have received a copy of the GNU General Public License\n\
-along with this program; if not, write to the Free Software Foundation,\n\
-Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n", 11},
-  {"Try `%s %s' for more information.\n", 12},
-  {"\
-Free `recode' converts files between various character sets and surfaces.\n", 13},
-  {"\
-\n\
-Usage: %s [OPTION]... [ [CHARSET] | REQUEST [FILE]... ]\n", 14},
-  {"\
-\n\
-If a long option shows an argument as mandatory, then it is mandatory\n\
-for the equivalent short option also.  Similarly for optional arguments.\n", 15},
-  {"\
-\n\
-Listings:\n\
-  -l, --list[=FORMAT]        list one or all known charsets\n\
-  -k, --known=PAIRS          restrict charsets according to known PAIRS \
-list\n\
-  -h, --header[=[LN/]NAME]   write table NAME on stdout using LN, then exit\n\
-  -F, --freeze-tables        write out a C module holding all tables\n\
-  -T, --find-subsets         report all charsets being subset of others\n\
-  -C, --copyright            display Copyright and copying conditions\n\
-      --help                 display this help and exit\n\
-      --version              output version information and exit\n", 16},
-  {"\
-\n\
-Operation modes:\n\
-  -v, --verbose           explain sequence of steps and report progress\n\
-  -q, --quiet, --silent   inhibit messages about irreversible recodings\n\
-  -f, --force             force recodings even when not reversible\n\
-  -t, --touch             touch the recoded files after replacement\n\
-  -i, --sequence=files    use intermediate files for sequencing passes\n\
-      --sequence=memory   use memory buffers for sequencing passes\n", 17},
-  {"  -p, --sequence=pipe     use pipe machinery for sequencing passes\n", 18},
-  {"  -p, --sequence=pipe     same as -i (on this system)\n", 19},
-  {"\
-\n\
-Fine tuning:\n\
-  -s, --strict           use strict mappings, even loose characters\n\
-  -d, --diacritics       convert only diacritics or alike for HTML/LaTeX\n\
-  -S, --source[=LN]      limit recoding to strings and comments as for LN\n\
-  -c, --colons           use colons instead of double quotes for diaeresis\n\
-  -g, --graphics         approximate IBMPC rulers by ASCII graphics\n\
-  -x, --ignore=CHARSET   ignore CHARSET while choosing a recoding path\n", 20},
-  {"\
-\n\
-Option -l with no FORMAT nor CHARSET list available charsets and surfaces.\n\
-FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').\n", 21},
-  {"\
-Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `%s'.\n", 22},
-  {"CHARSET has no default, define DEFAULT_CHARSET in the environment.\n", 23},
-  {"\
-With -k, possible before charsets are listed for the given after CHARSET,\n\
-both being tabular charsets, with PAIRS of the form \
-`BEF1:AFT1,BEF2:AFT2,...'\n\
-and BEFs and AFTs being codes are given as decimal numbers.\n", 24},
-  {"\
-LN is some language, it may be `c', `perl' or `po'; `c' is the default.\n", 25},
-  {"\
-\n\
-REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is \
-ENCODING[..ENCODING]...\n\
-ENCODING is [CHARSET][/[SURFACE]]...; REQUEST often looks like \
-BEFORE..AFTER,\n\
-with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual\n\
-charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a \
-/\n\
-with an empty surface name means no surfaces at all.  See the manual.\n", 26},
-  {"\
-\n\
-If none of -i and -p are given, presume -p if no FILE, else -i.\n\
-Each FILE is recoded over itself, destroying the original.  If no\n\
-FILE is specified, then act as a filter and recode stdin to stdout.\n", 27},
-  {"\
-\n\
-Report bugs to <recode-bugs@iro.umontreal.ca>.\n", 28},
-  {"Ambiguous sequence `%s'", 29},
-  {"Unknown sequence `%s'", 30},
-  {"Ambiguous language `%s'", 31},
-  {"Unknown language `%s'", 32},
-  {"Ambiguous format `%s'", 33},
-  {"Unknown format `%s'", 34},
-  {"\
-\n\
-Copyright (C) 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.\n", 35},
-  {"\
-This is free software; see the source for copying conditions.  There is NO\n\
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", 36},
-  {"\
-\n\
-Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n", 37},
-  {"Deprecated syntax, please prefer `%s'", 38},
-  {"Erroneous request `%s'", 39},
-  {"Recoding %s...", 40},
-  {" done\n", 41},
-  {" failed: %s in %s..%s\n", 42},
-  {"%s failed: %s in %s..%s", 43},
-  {"%s in %s..%s", 44},
-  {"Charset %s already exists and is not %s", 45},
-  {"Cannot list `%s', no names available for this charset", 46},
-  {"Dec  Oct Hex   UCS2  Mne  %s\n", 47},
-  {"Sorry, no names available for `%s'", 48},
-  {"Resurfacer set more than once for `%s'", 49},
-  {"Unsurfacer set more than once for `%s'", 50},
-  {"Virtual memory exhausted", 51},
-  {"Codes %3d and %3d both recode to %3d", 52},
-  {"No character recodes to %3d", 53},
-  {"Cannot invert given one-to-one table", 54},
-  {"Following diagnostics for `%s' to `%s'", 55},
-  {"Pair no. %d: <%3d, %3d> conflicts with <%3d, %3d>", 56},
-  {"Cannot complete table from set of known pairs", 57},
-  {"Identity recoding, not worth a table", 58},
-  {"Recoding is too complex for a mere table", 59},
-  {"%sConversion table generated mechanically by Free `%s' %s", 60},
-  {"%sfor sequence %s.%s", 61},
-  {"No table to print", 62},
-  {"reversible", 63},
-  {"%s to %s", 64},
-  {"byte", 65},
-  {"ucs2", 66},
-  {"variable", 67},
-  {"*Unachievable*", 68},
-  {"*mere copy*", 69},
-  {"Virtual memory exhausted!", 70},
-  {"Step initialisation failed", 71},
-  {"Step initialisation failed (unprocessed options)", 72},
-  {"Request: %s\n", 73},
-  {"Shrunk to: %s\n", 74},
-  {"Unrecognised surface name `%s'", 75},
-  {"No way to recode from `%s' to `%s'", 76},
-  {"Expecting `..' in request", 77},
-  {"Child process wait status is 0x%0.2x", 78},
-};
-
-int _msg_tbl_length = 78;
diff --git a/po/de.gmo b/po/de.gmo
deleted file mode 100644 (file)
index 25bf551..0000000
Binary files a/po/de.gmo and /dev/null differ
diff --git a/po/pl.gmo b/po/pl.gmo
deleted file mode 100644 (file)
index eae7348..0000000
Binary files a/po/pl.gmo and /dev/null differ
diff --git a/po/stamp-cat-id b/po/stamp-cat-id
deleted file mode 100644 (file)
index 9788f70..0000000
+++ /dev/null
@@ -1 +0,0 @@
-timestamp
index 73de5e509c4aebc609549e011ec1bd2072a3798c..11350cdc2120f3a660d32ad82446cd5d20e16b9a 100644 (file)
@@ -1,3 +1,81 @@
+1999-12-18  François Pinard  <pinard@iro.umontreal.ca>
+
+       * vn.c: New file.
+       * Makefile.am: Adjusted.
+       Reported by Nguyên-Ðai Quý.
+
+1999-12-14  François Pinard  <pinard@iro.umontreal.ca>
+
+       * mergelex.py: Python version of mergelex.awk.
+       * mergelex.awk: Deleted.
+       * Makefile.am: Adjusted.
+
+       * Makefile.am: Adapt to the gettext scheme used in wdiff.
+
+1999-12-13  François Pinard  <pinard@iro.umontreal.ca>
+
+       * recode.c (recode_error, recode_perror) [!__STDC__]: Use const.
+       Reported by Peter Turcan.
+
+       * quoted.c (transform_quoted_printable_data): Renamed from
+       transform_quoted_printable_byte.  Correct an error by which a
+       newline could be spuriously transported over. Revised to better
+       report canonicity errors and invalid input.
+       Reported by Hrvoje Niksic.
+
+1999-12-12  François Pinard  <pinard@iro.umontreal.ca>
+
+       * base64.c (transform_base64_data): Better handle end of lines.
+       Non canonical input was too often reported as invalid.
+       Reported by Hrvoje Niksic.
+
+       * html.c (transform_html_ucs2): Revise echoing code.  With -d,
+       the original HTML string could be copied after its recoded value.
+       Correct character interval tests for numeric conversions.
+
+       * html.c: Merge main_translations and other_translations into
+       a single array named translations.  Merely relate -d to non-ASCII.
+       Reported by Andreas Frick.
+
+       * html.c: Explicit the 0 prefix in the translations table, instead
+       of implying through the ENTRY macro.  It seems NextSTEP 3.3,
+       OpenSTEP 4.2 and MacOS X Server 1.02 do not accept empty slots for
+       third arguments to ENTRY.
+       Reported by Tom Hageman.
+
+1999-11-10  François Pinard  <pinard@iro.umontreal.ca>
+
+       * html.c (transform_ucs2_html): Pass HT undisturbed.
+       Reported by Andreas Frick.
+
+1999-09-21  Andreas Schwab  <schwab@suse.de>
+
+       * main.c (main): Always read the file attributes and restore the
+       permission bits when recoding in place.
+
+1999-08-17  François Pinard  <pinard@iro.umontreal.ca>
+
+       * recode.h, recodext.h: Make C++ safe.
+       Reported by Bruno Haible.
+
+       * html.c (transform_html_ucs2): Expérimentation...  FIXME!
+
+1999-07-26  François Pinard  <pinard@iro.umontreal.ca>
+
+       * main.c (main): Adjust diagnostics so to quote step names.
+       Reported by Per Starback.
+
+1999-06-22  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am (recode.1): New goal, rewritten more simply that the
+       previous one in doc/.  Use --output with help2man.  Do not force
+       LANGUAGE=C anymore since help2man does it internally.
+       (PERL): Define to perl.
+       (man_MANS): Added.
+       (EXTRA_DIST): Include $(MANS).  This should force regeneration of
+       the man page with the correct version, in distributions.
+       Reported by Brendan O'Dea, Santiago Vila Doncel and Scott Schwartz.
+\f
 1999-04-18  François Pinard  <pinard@iro.umontreal.ca>
 
        * request.c (scan_charset): Ignore implied surfaces when the only
index ae64c5886b71e0c5de29d08202fd8dec72fa94ba..adfce693bd21cce6d47eb4f52c819b67ced9cec4 100644 (file)
 
 AUTOMAKE_OPTIONS = gnits ansi2knr
 bin_PROGRAMS = recode
-#noinst_PROGRAMS = d.recode
 lib_LTLIBRARIES = librecode.la
+man_MANS = recode.1
 include_HEADERS = recode.h recodext.h
 
 noinst_HEADERS = argmatch.h charname.h common.h decsteps.h \
 fr-charname.h hash.h inisteps.h rfc1345.h $(H_FALLBACKS) $(H_SURFACES)
-EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.awk
+EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.py $(MANS)
 
 C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c \
 debug.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c \
-ucs.c utf16.c utf7.c utf8.c varia.c $(C_FALLBACKS) $(C_SURFACES)
+ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES)
 OLD_C_STEPS = next.c
 L_STEPS = ascilat1.l $(L_FALLBACKS) $(L_SURFACES)
 
@@ -42,7 +42,7 @@ C_SURFACES = base64.c dump.c endline.c permut.c quoted.c
 L_SURFACES =
 
 recode_SOURCES = main.c freeze.c mixed.c
-recode_LDADD = librecode.la ../lib/libreco.a @INTLLIBS@
+recode_LDADD = librecode.la ../lib/libreco.a
 #d_recode = main.c
 #d_recode_LDADD = librecode.la ../lib/libreco.la @INTLLIBS@
 #d_recode_LDFLAGS = -static
@@ -52,19 +52,18 @@ hash.c merged.c names.c outer.c recode.c request.c strip-pool.c task.c \
 $(C_STEPS)
 librecode_la_LDFLAGS = -version-info 0:0:0
 
-INCLUDES = -I.. -I../intl -I$(srcdir) -I$(top_srcdir)/lib
+INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/lib
 
 ETAGS_ARGS = $(L_STEPS)
 TAGS_DEPENDENCIES = $(L_STEPS)
 
-localedir = $(prefix)/@DATADIRNAME@/locale
-
 # These CFLAGS values are not auto-configured:
 # -DDIFF_HASH          For using GNU diff's hash algorithm instead.
 # -DHASH_STATS         For printing a one-liner hash statistics.
 
-AWK = @AWK@
 LEX = @LEX@
+PERL = perl
+PYTHON = python
 
 $(srcdir)/decsteps.h $(srcdir)/inisteps.h: stamp-steps
 stamp-steps: $(C_STEPS) merged.c
@@ -82,15 +81,24 @@ stamp-steps: $(C_STEPS) merged.c
        else mv inisteps.tmp $(srcdir)/inisteps.h; fi
        @echo timestamp > $(srcdir)/stamp-steps
 
-main.o: main.c ../config.status common.h recode.h
-       $(COMPILE) -DLOCALEDIR=\"$(localedir)\" -c $<
-
+main.o: main.c ../config.status
+#main.o: common.h recode.h (should be automatic?)
 outer.o: stamp-steps
 
-$(srcdir)/merged.c: mergelex.awk $(L_STEPS)
-       (cd $(srcdir) \
-         && $(AWK) -f mergelex.awk $(L_STEPS) \
-         && rm merged1.tmp merged2.tmp merged3.tmp) > merged.tm1
+$(srcdir)/merged.c: mergelex.py $(L_STEPS)
+       (cd $(srcdir) && cat $(L_STEPS)) \
+       | $(PYTHON) $(srcdir)/mergelex.py > merged.tm1
        $(LEX) -t8 merged.tm1 > merged.tm2
        grep -v '^# *line [0-9]' merged.tm2 > $(srcdir)/merged.c
        rm merged.tm1 merged.tm2
+
+$(srcdir)/recode.1: recode
+       @if test -r $@ && test ! -w $@; then \
+         echo "WARNING: Page \`$@' read only, not updated"; \
+       elif $(PERL) $(top_srcdir)/doc/help2man --output=$@ ./recode; then \
+         echo "Page \`$@' has been updated"; \
+       else \
+         echo "WARNING: Page \`$@' has *not* been updated."; \
+         echo "         It might be that \`Perl' is missing on your system,"; \
+         echo "         but you may safely and merely ignore this error."; \
+       fi
index 8c3fdc1722ead35341ef6cf590f1babe9e1da26b..4a553eebdaa178fb1ae0ae72e00bef607ee15e5f 100644 (file)
@@ -78,6 +78,9 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
 CATALOGS = @CATALOGS@
@@ -98,15 +101,15 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
@@ -120,15 +123,15 @@ l = @l@
 
 AUTOMAKE_OPTIONS = gnits ansi2knr
 bin_PROGRAMS = recode
-#noinst_PROGRAMS = d.recode
 lib_LTLIBRARIES = librecode.la
+man_MANS = recode.1
 include_HEADERS = recode.h recodext.h
 
 noinst_HEADERS = argmatch.h charname.h common.h decsteps.h fr-charname.h hash.h inisteps.h rfc1345.h $(H_FALLBACKS) $(H_SURFACES)
 
-EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.awk
+EXTRA_DIST = stamp-steps $(L_STEPS) mergelex.py $(MANS)
 
-C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c debug.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c ucs.c utf16.c utf7.c utf8.c varia.c $(C_FALLBACKS) $(C_SURFACES)
+C_STEPS = african.c afrtran.c applemac.c atarist.c bangbang.c cdcnos.c debug.c ebcdic.c ibmpc.c iconqnx.c lat1asci.c mule.c strip-data.c ucs.c utf16.c utf7.c utf8.c varia.c vn.c $(C_FALLBACKS) $(C_SURFACES)
 
 OLD_C_STEPS = next.c
 L_STEPS = ascilat1.l $(L_FALLBACKS) $(L_SURFACES)
@@ -142,7 +145,7 @@ C_SURFACES = base64.c dump.c endline.c permut.c quoted.c
 L_SURFACES = 
 
 recode_SOURCES = main.c freeze.c mixed.c
-recode_LDADD = librecode.la ../lib/libreco.a @INTLLIBS@
+recode_LDADD = librecode.la ../lib/libreco.a
 #d_recode = main.c
 #d_recode_LDADD = librecode.la ../lib/libreco.la @INTLLIBS@
 #d_recode_LDFLAGS = -static
@@ -151,19 +154,18 @@ librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c hash.c merg
 
 librecode_la_LDFLAGS = -version-info 0:0:0
 
-INCLUDES = -I.. -I../intl -I$(srcdir) -I$(top_srcdir)/lib
+INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/lib
 
 ETAGS_ARGS = $(L_STEPS)
 TAGS_DEPENDENCIES = $(L_STEPS)
 
-localedir = $(prefix)/@DATADIRNAME@/locale
-
 # These CFLAGS values are not auto-configured:
 # -DDIFF_HASH          For using GNU diff's hash algorithm instead.
 # -DHASH_STATS         For printing a one-liner hash statistics.
 
-AWK = @AWK@
 LEX = @LEX@
+PERL = perl
+PYTHON = python
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = ../config.h
 CONFIG_CLEAN_FILES = 
@@ -182,7 +184,7 @@ recode$U.lo request$U.lo strip-pool$U.lo task$U.lo african$U.lo \
 afrtran$U.lo applemac$U.lo atarist$U.lo bangbang$U.lo cdcnos$U.lo \
 debug$U.lo ebcdic$U.lo ibmpc$U.lo iconqnx$U.lo lat1asci$U.lo mule$U.lo \
 strip-data$U.lo ucs$U.lo utf16$U.lo utf7$U.lo utf8$U.lo varia$U.lo \
-flat$U.lo html$U.lo lat1ltex$U.lo lat1texi$U.lo lat1txte$U.lo \
+vn$U.lo flat$U.lo html$U.lo lat1ltex$U.lo lat1texi$U.lo lat1txte$U.lo \
 rfc1345$U.lo base64$U.lo dump$U.lo endline$U.lo permut$U.lo quoted$U.lo
 PROGRAMS =  $(bin_PROGRAMS)
 
@@ -194,6 +196,10 @@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CF
 LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+man1dir = $(mandir)/man1
+MANS = $(man_MANS)
+
+NROFF = nroff
 HEADERS =  $(include_HEADERS) $(noinst_HEADERS)
 
 DIST_COMMON =  ChangeLog Makefile.am Makefile.in ansi2knr.1 ansi2knr.c
@@ -421,6 +427,8 @@ utf8_.c: utf8.c $(ANSI2KNR)
        $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utf8.c; then echo $(srcdir)/utf8.c; else echo utf8.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > utf8_.c
 varia_.c: varia.c $(ANSI2KNR)
        $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/varia.c; then echo $(srcdir)/varia.c; else echo varia.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > varia_.c
+vn_.c: vn.c $(ANSI2KNR)
+       $(CPP) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vn.c; then echo $(srcdir)/vn.c; else echo vn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > vn_.c
 african_.o african_.lo afrtran_.o afrtran_.lo applemac_.o applemac_.lo \
 argmatch_.o argmatch_.lo atarist_.o atarist_.lo bangbang_.o \
 bangbang_.lo base64_.o base64_.lo cdcnos_.o cdcnos_.lo charname_.o \
@@ -435,7 +443,46 @@ permut_.o permut_.lo quoted_.o quoted_.lo recode_.o recode_.lo \
 request_.o request_.lo rfc1345_.o rfc1345_.lo strip-data_.o \
 strip-data_.lo strip-pool_.o strip-pool_.lo task_.o task_.lo ucs_.o \
 ucs_.lo utf16_.o utf16_.lo utf7_.o utf7_.lo utf8_.o utf8_.lo varia_.o \
-varia_.lo : $(ANSI2KNR)
+varia_.lo vn_.o vn_.lo : $(ANSI2KNR)
+
+install-man1:
+       $(mkinstalldirs) $(DESTDIR)$(man1dir)
+       @list='$(man1_MANS)'; \
+       l2='$(man_MANS)'; for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+         else file=$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
+         $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
+       done
+
+uninstall-man1:
+       @list='$(man1_MANS)'; \
+       l2='$(man_MANS)'; for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
+         rm -f $(DESTDIR)$(man1dir)/$$inst; \
+       done
+install-man: $(MANS)
+       @$(NORMAL_INSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) install-man1
+uninstall-man:
+       @$(NORMAL_UNINSTALL)
+       $(MAKE) $(AM_MAKEFLAGS) uninstall-man1
 
 install-includeHEADERS: $(include_HEADERS)
        @$(NORMAL_INSTALL)
@@ -545,6 +592,8 @@ lat1texi.lo lat1texi.o : lat1texi.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
 lat1txte.lo lat1txte.o : lat1txte.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
+main.o: main.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \
+       recodext.h recode.h ../lib/getopt.h
 merged.lo merged.o : merged.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
 mixed.o: mixed.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \
@@ -560,7 +609,7 @@ permut.lo permut.o : permut.c common.h ../config.h ../lib/xalloc.h \
 quoted.lo quoted.o : quoted.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
 recode.lo recode.o : recode.c common.h ../config.h ../lib/xalloc.h \
-       ../lib/error.h recodext.h recode.h hash.h
+       ../lib/error.h recodext.h recode.h ../lib/getopt.h hash.h
 request.lo request.o : request.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
 rfc1345.lo rfc1345.o : rfc1345.c common.h ../config.h ../lib/xalloc.h \
@@ -581,6 +630,12 @@ utf8.lo utf8.o : utf8.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
 varia.lo varia.o : varia.c common.h ../config.h ../lib/xalloc.h \
        ../lib/error.h recodext.h recode.h
+viet.lo viet.o : viet.c common.h ../config.h ../lib/xalloc.h \
+       ../lib/error.h recodext.h recode.h
+vietnam.lo vietnam.o : vietnam.c common.h ../config.h ../lib/xalloc.h \
+       ../lib/error.h recodext.h recode.h
+vn.lo vn.o : vn.c common.h ../config.h ../lib/xalloc.h ../lib/error.h \
+       recodext.h recode.h
 
 info-am:
 info: info-am
@@ -593,22 +648,23 @@ installcheck: installcheck-am
 install-exec-am: install-libLTLIBRARIES install-binPROGRAMS
 install-exec: install-exec-am
 
-install-data-am: install-includeHEADERS
+install-data-am: install-man install-includeHEADERS
 install-data: install-data-am
 
 install-am: all-am
        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 install: install-am
 uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \
-               uninstall-includeHEADERS
+               uninstall-man uninstall-includeHEADERS
 uninstall: uninstall-am
-all-am: Makefile $(ANSI2KNR) $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+all-am: Makefile $(ANSI2KNR) $(LTLIBRARIES) $(PROGRAMS) $(MANS) \
+               $(HEADERS)
 all-redirect: all-am
 install-strip:
        $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
 installdirs:
        $(mkinstalldirs)  $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \
-               $(DESTDIR)$(includedir)
+               $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(includedir)
 
 
 mostlyclean-generic:
@@ -660,7 +716,8 @@ maintainer-clean-libtool mostlyclean-krextra distclean-krextra \
 clean-krextra maintainer-clean-krextra mostlyclean-kr distclean-kr \
 clean-kr maintainer-clean-kr mostlyclean-binPROGRAMS \
 distclean-binPROGRAMS clean-binPROGRAMS maintainer-clean-binPROGRAMS \
-uninstall-binPROGRAMS install-binPROGRAMS uninstall-includeHEADERS \
+uninstall-binPROGRAMS install-binPROGRAMS install-man1 uninstall-man1 \
+install-man uninstall-man uninstall-includeHEADERS \
 install-includeHEADERS tags mostlyclean-tags distclean-tags clean-tags \
 maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \
 installcheck-am installcheck install-exec-am install-exec \
@@ -686,19 +743,28 @@ stamp-steps: $(C_STEPS) merged.c
        else mv inisteps.tmp $(srcdir)/inisteps.h; fi
        @echo timestamp > $(srcdir)/stamp-steps
 
-main.o: main.c ../config.status common.h recode.h
-       $(COMPILE) -DLOCALEDIR=\"$(localedir)\" -c $<
-
+main.o: main.c ../config.status
+#main.o: common.h recode.h (should be automatic?)
 outer.o: stamp-steps
 
-$(srcdir)/merged.c: mergelex.awk $(L_STEPS)
-       (cd $(srcdir) \
-         && $(AWK) -f mergelex.awk $(L_STEPS) \
-         && rm merged1.tmp merged2.tmp merged3.tmp) > merged.tm1
+$(srcdir)/merged.c: mergelex.py $(L_STEPS)
+       (cd $(srcdir) && cat $(L_STEPS)) \
+       | $(PYTHON) $(srcdir)/mergelex.py > merged.tm1
        $(LEX) -t8 merged.tm1 > merged.tm2
        grep -v '^# *line [0-9]' merged.tm2 > $(srcdir)/merged.c
        rm merged.tm1 merged.tm2
 
+$(srcdir)/recode.1: recode
+       @if test -r $@ && test ! -w $@; then \
+         echo "WARNING: Page \`$@' read only, not updated"; \
+       elif $(PERL) $(top_srcdir)/doc/help2man --output=$@ ./recode; then \
+         echo "Page \`$@' has been updated"; \
+       else \
+         echo "WARNING: Page \`$@' has *not* been updated."; \
+         echo "         It might be that \`Perl' is missing on your system,"; \
+         echo "         but you may safely and merely ignore this error."; \
+       fi
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index add48341d0c23a793179335533d8fc5ebf54cc84..2d808e3865b30f49ba05ceea1e4a8b455e4b98fc 100644 (file)
 
 #include "common.h"
 
+/* Bambara, Ewondo and Fulfude.  */
+
 static const unsigned short ful_data[] =
-  {
-    161, 0x0181, DONE,
-    162, 0x018A, DONE,
-    163, 0x0194, DONE,
-    164, 0x0198, DONE,
-    165, 0x01A4, DONE,
-    166, 0x01AC, DONE,
-    167, 0x01A9, DONE,
-    168, 0x019D, DONE,
-    169, 0x014A, DONE,
-    170, 0x0189, DONE,
-    172, 0x0191, DONE,
-    174, 0x01B3, DONE,
-    175, 0x0193, DONE,
-    177, 0x0253, DONE,
-    178, 0x0257, DONE,
-    179, 0x0263, DONE,
-    180, 0x0199, DONE,
-    181, 0x01A5, DONE,
-    182, 0x01AD, DONE,
-    183, 0x0283, DONE,
-    184, 0x0272, DONE,
-    185, 0x014B, DONE,
-    186, 0x0256, DONE,
-    188, 0x0192, DONE,
-    189, 0x0294, DONE,
-    190, 0x01B4, DONE,
-    191, 0x0260, DONE,
-    197, 0x018E, DONE,
-    208, 0x0190, DONE,
-    215, 0x0152, DONE,
-    216, 0x0186, DONE,
-    221, 0x018E, 0x0301, DONE,
-    222, 0x0186, 0x0301, DONE,
-    223, 0x01B2, DONE,
-    229, 0x0259, DONE,
-    240, 0x025B, DONE,
-    247, 0x0153, DONE,
-    248, 0x0254, DONE,
-    253, 0x0259, 0x0301, DONE,
-    254, 0x0254, 0x0301, DONE,
-    255, 0x028B, DONE,
-    DONE
-  };
-/* -- */
+{
+  161, 0x0181, DONE,
+  162, 0x018A, DONE,
+  163, 0x0194, DONE,
+  164, 0x0198, DONE,
+  165, 0x01A4, DONE,
+  166, 0x01AC, DONE,
+  167, 0x01A9, DONE,
+  168, 0x019D, DONE,
+  169, 0x014A, DONE,
+  170, 0x0189, DONE,
+  172, 0x0191, DONE,
+  174, 0x01B3, DONE,
+  175, 0x0193, DONE,
+  177, 0x0253, DONE,
+  178, 0x0257, DONE,
+  179, 0x0263, DONE,
+  180, 0x0199, DONE,
+  181, 0x01A5, DONE,
+  182, 0x01AD, DONE,
+  183, 0x0283, DONE,
+  184, 0x0272, DONE,
+  185, 0x014B, DONE,
+  186, 0x0256, DONE,
+  188, 0x0192, DONE,
+  189, 0x0294, DONE,
+  190, 0x01B4, DONE,
+  191, 0x0260, DONE,
+  197, 0x018E, DONE,
+  208, 0x0190, DONE,
+  215, 0x0152, DONE,
+  216, 0x0186, DONE,
+  221, 0x018E, 0x0301, DONE,
+  222, 0x0186, 0x0301, DONE,
+  223, 0x01B2, DONE,
+  229, 0x0259, DONE,
+  240, 0x025B, DONE,
+  247, 0x0153, DONE,
+  248, 0x0254, DONE,
+  253, 0x0259, 0x0301, DONE,
+  254, 0x0254, 0x0301, DONE,
+  255, 0x028B, DONE,
+  DONE
+};
+
+/* Linguala, Sango and Wolof.  */
 
 static const unsigned short lin_data[] =
-  {
-    161, 0x0190, 0x0300, DONE,
-    162, 0x0190, 0x0301, DONE,
-    163, 0x0190, 0x0302, DONE,
-    164, 0x0190, 0x030C, DONE,
-    165, 0x0186, 0x0300, DONE,
-    166, 0x0186, 0x0301, DONE,
-    167, 0x0186, 0x0302, DONE,
-    168, 0x019D, DONE,
-    169, 0x014A, DONE,
-    170, 0x004E, 0x0302, DONE,
-    172, 0x004E, 0x0308, DONE,
-    174, 0x01B3, DONE,
-    175, 0x0186, 0x030C, DONE,
-    177, 0x025B, 0x0300, DONE,
-    178, 0x025B, 0x0301, DONE,
-    179, 0x025B, 0x0302, DONE,
-    180, 0x025B, 0x030C, DONE,
-    181, 0x0254, 0x0300, DONE,
-    182, 0x0254, 0x0301, DONE,
-    183, 0x0254, 0x0302, DONE,
-    184, 0x0272, DONE,
-    185, 0x014B, DONE,
-    186, 0x006E, 0x0302, DONE,
-    188, 0x006E, 0x0308, DONE,
-    189, 0x0294, DONE,
-    190, 0x01B4, DONE,
-    191, 0x0254, 0x030C, DONE,
-    195, 0x01CD, DONE,
-    197, 0x018E, DONE,
-    208, 0x0190, DONE,
-    213, 0x01D1, DONE,
-    215, 0x0152, DONE,
-    216, 0x0186, DONE,
-    221, 0x011A, DONE,
-    222, 0x01CF, DONE,
-    223, 0x01D3, DONE,
-    227, 0x01CE, DONE,
-    229, 0x0259, DONE,
-    240, 0x025B, DONE,
-    245, 0x01D2, DONE,
-    247, 0x0153, DONE,
-    248, 0x0254, DONE,
-    253, 0x011B, DONE,
-    254, 0x01D0, DONE,
-    255, 0x01D4, DONE,
-    DONE
-  };
-/* -- */
+{
+  161, 0x0190, 0x0300, DONE,
+  162, 0x0190, 0x0301, DONE,
+  163, 0x0190, 0x0302, DONE,
+  164, 0x0190, 0x030C, DONE,
+  165, 0x0186, 0x0300, DONE,
+  166, 0x0186, 0x0301, DONE,
+  167, 0x0186, 0x0302, DONE,
+  168, 0x019D, DONE,
+  169, 0x014A, DONE,
+  170, 0x004E, 0x0302, DONE,
+  172, 0x004E, 0x0308, DONE,
+  174, 0x01B3, DONE,
+  175, 0x0186, 0x030C, DONE,
+  177, 0x025B, 0x0300, DONE,
+  178, 0x025B, 0x0301, DONE,
+  179, 0x025B, 0x0302, DONE,
+  180, 0x025B, 0x030C, DONE,
+  181, 0x0254, 0x0300, DONE,
+  182, 0x0254, 0x0301, DONE,
+  183, 0x0254, 0x0302, DONE,
+  184, 0x0272, DONE,
+  185, 0x014B, DONE,
+  186, 0x006E, 0x0302, DONE,
+  188, 0x006E, 0x0308, DONE,
+  189, 0x0294, DONE,
+  190, 0x01B4, DONE,
+  191, 0x0254, 0x030C, DONE,
+  195, 0x01CD, DONE,
+  197, 0x018E, DONE,
+  208, 0x0190, DONE,
+  213, 0x01D1, DONE,
+  215, 0x0152, DONE,
+  216, 0x0186, DONE,
+  221, 0x011A, DONE,
+  222, 0x01CF, DONE,
+  223, 0x01D3, DONE,
+  227, 0x01CE, DONE,
+  229, 0x0259, DONE,
+  240, 0x025B, DONE,
+  245, 0x01D2, DONE,
+  247, 0x0153, DONE,
+  248, 0x0254, DONE,
+  253, 0x011B, DONE,
+  254, 0x01D0, DONE,
+  255, 0x01D4, DONE,
+  DONE
+};
 
 bool
 module_african (RECODE_OUTER outer)
index 4483eb7cf6357caec3dc279f8bbb45fdfda65233..000010629e81fce2b496d65845480f480229a30c 100644 (file)
 
 static const recode_ucs2 pool[256] =
   {
-    /*    0 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
-    /*    8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
-    /*   16 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
-    /*   24 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
-    /*   32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
-    /*   40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
-    /*   48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
-    /*   56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
-    /*   64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
-    /*   72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
-    /*   80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
-    /*   88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
-    /*   96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
-    /*  104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
-    /*  112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
-    /*  120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
-    /*  128 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
-    /*  136 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
-    /*  144 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
-    /*  152 */ 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x00DF, 0x0192,
-    /*  160 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
-    /*  168 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
-    /*  176 */ 0x00E3, 0x00F5, 0x00D8, 0x00F8, 0x0153, 0x0152, 0x00C0, 0x00C3,
-    /*  184 */ 0x00D5, 0x00A8, 0x00B4, 0x2020, 0x00B6, 0x00A9, 0x00AE, 0x2122,
-    /*  192 */ 0x0133, 0x0132, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5,
-    /*  200 */ 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DB, 0x05DC, 0x05DE, 0x05E0,
-    /*  208 */ 0x05E1, 0x05E2, 0x05E4, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA,
-    /*  216 */ 0x05DF, 0x05DA, 0x05DD, 0x05E3, 0x05E5, 0x00A7, 0x2038, 0x221E,
-    /*  224 */ 0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
-    /*  232 */ 0x03A6, 0x03B8, 0x2126, 0x03B4, 0x222E, 0x03C6, 0x2208, 0x220F,
-    /*  240 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
-    /*  248 */ 0x00B0, 0x2022, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x00B3, 0x00AF
+    /*   0 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+    /*   8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
+    /*  16 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
+    /*  24 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
+    /*  32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    /*  40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+    /*  48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    /*  56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+    /*  64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    /*  72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+    /*  80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    /*  88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
+    /*  96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+    /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
+    /* 128 */ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
+    /* 136 */ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
+    /* 144 */ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
+    /* 152 */ 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x00DF, 0x0192,
+    /* 160 */ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
+    /* 168 */ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
+    /* 176 */ 0x00E3, 0x00F5, 0x00D8, 0x00F8, 0x0153, 0x0152, 0x00C0, 0x00C3,
+    /* 184 */ 0x00D5, 0x00A8, 0x00B4, 0x2020, 0x00B6, 0x00A9, 0x00AE, 0x2122,
+    /* 192 */ 0x0133, 0x0132, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5,
+    /* 200 */ 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DB, 0x05DC, 0x05DE, 0x05E0,
+    /* 208 */ 0x05E1, 0x05E2, 0x05E4, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA,
+    /* 216 */ 0x05DF, 0x05DA, 0x05DD, 0x05E3, 0x05E5, 0x00A7, 0x2038, 0x221E,
+    /* 224 */ 0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
+    /* 232 */ 0x03A6, 0x03B8, 0x2126, 0x03B4, 0x222E, 0x03C6, 0x2208, 0x220F,
+    /* 240 */ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
+    /* 248 */ 0x00B0, 0x2022, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x00B3, 0x00AF
   };
 
 static struct strip_data table =
   {
     pool,
     {
-         0,    8,   16,   24,   32,   40,   48,   56,   64,   72,   80,   88,
-        96,  104,  112,  120,  128,  136,  144,  152,  160,  168,  176,  184,
-       192,  200,  208,  216,  224,  232,  240,  248
+      0,    8,   16,   24,   32,   40,   48,   56,   64,   72,   80,   88,
+      96,  104,  112,  120,  128,  136,  144,  152,  160,  168,  176,  184,
+      192, 200,  208,  216,  224,  232,  240,  248
     }
-  };
+};
 
 #else /* not USE_RFC1345_STEP */
 
index b14497a1ab8012d1da7c11440fdb48f191c0df79..b95e14274529e6248cc3ddf392b34f6a9f21b2e7 100644 (file)
@@ -140,11 +140,10 @@ transform_data_base64 (RECODE_CONST_STEP step, RECODE_TASK task)
 static bool
 transform_base64_data (RECODE_CONST_STEP step, RECODE_TASK task)
 {
-  int counter;
+  int counter = 0;
   int character;
   unsigned value;
 
-  counter = 0;
   while (true)
     {
       /* Accept wrapping lines, reversibly if at each 76 characters.  */
@@ -159,18 +158,16 @@ transform_base64_data (RECODE_CONST_STEP step, RECODE_TASK task)
 
       if (character == '\n')
        {
-         character = get_byte (task);
-         if (character == EOF)
-           TASK_RETURN (task);
          if (counter != MIME_LINE_LENGTH / 4)
            RETURN_IF_NOGO (RECODE_NOT_CANONICAL, step, task);
-         counter = 1;
+         counter = 0;
+         continue;
        }
-      else
-       counter++;
 
       /* Process first byte of a quadruplet.  */
 
+      counter++;
+
       if (IS_BASE64 (character))
        value = base64_char_to_value[character] << 18;
       else
index 7c9b1629ec799a68ecaca737fd8fc64c051e5e63..4885e36a53158e4cba75d570f0c1a4acbe3dd8de 100644 (file)
@@ -1,4 +1,4 @@
-/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.pl'.  */
+/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.py'.  */
 
 /* Conversion of files between different charsets and surfaces.
    Copyright © 1999 Free Software Foundation, Inc.
@@ -21,7 +21,7 @@
    Suite 330, Boston, MA 02111-1307, USA.  */
 
 #define NUMBER_OF_SINGLES 252
-#define MAX_CHARNAME_LENGTH 66
+#define MAX_CHARNAME_LENGTH 56
 #define NUMBER_OF_CHARNAMES 1827
 
 static const char *const word[794] =
@@ -59,14 +59,14 @@ static const char *const word[794] =
     "diaeresis",                /* \037 */
     "parenthesized",            /* \040 */
     "i",                        /* \041 */
-    "final",                    /* \042 */
-    "tilde",                    /* \043 */
-    "bopomofo",                 /* \044 */
+    "tilde",                    /* \042 */
+    "bopomofo",                 /* \043 */
+    "final",                    /* \044 */
     "caron",                    /* \045 */
     "mark",                     /* \046 */
     "grave",                    /* \047 */
-    "isolated",                 /* \050 */
-    "macron",                   /* \051 */
+    "macron",                   /* \050 */
+    "isolated",                 /* \051 */
     "line",                     /* \052 */
     "up",                       /* \053 */
     "down",                     /* \054 */
@@ -89,59 +89,59 @@ static const char *const word[794] =
     "g",                        /* \075 */
     "initial",                  /* \076 */
     "l",                        /* \077 */
-    "(character",               /* \100 */
-    "non-spacing",              /* \101 */
-    "part)",                    /* \102 */
-    "stop",                     /* \103 */
-    "y",                        /* \104 */
-    "d",                        /* \105 */
-    "h",                        /* \106 */
-    "horn",                     /* \107 */
-    "t",                        /* \110 */
-    "z",                        /* \111 */
-    "of",                       /* \112 */
-    "to",                       /* \113 */
-    "bracket",                  /* \114 */
-    "c",                        /* \115 */
-    "ligature",                 /* \116 */
-    "one",                      /* \117 */
-    "r",                        /* \120 */
-    "superscript",              /* \121 */
-    "w",                        /* \122 */
-    "fraction",                 /* \123 */
-    "k",                        /* \124 */
-    "stroke",                   /* \125 */
-    "two",                      /* \126 */
-    "square",                   /* \127 */
-    "subscript",                /* \130 */
-    "three",                    /* \131 */
-    "vulgar",                   /* \132 */
-    "(iso-ir-103",              /* \133 */
-    "number",                   /* \134 */
-    "ogonek",                   /* \135 */
-    "arrow",                    /* \136 */
-    "b",                        /* \137 */
-    "lam",                      /* \140 */
-    "quotation",                /* \141 */
-    "ring",                     /* \142 */
-    "dash",                     /* \143 */
-    "five",                     /* \144 */
-    "four",                     /* \145 */
-    "m",                        /* \146 */
-    "space",                    /* \147 */
-    "accent",                   /* \150 */
-    "seven",                    /* \151 */
-    "x",                        /* \152 */
-    "angle",                    /* \153 */
-    "arabic-indic",             /* \154 */
-    "eastern",                  /* \155 */
-    "eight",                    /* \156 */
-    "equal",                    /* \157 */
-    "half",                     /* \160 */
-    "hamza",                    /* \161 */
-    "ideograph",                /* \162 */
-    "nine",                     /* \163 */
-    "p",                        /* \164 */
+    "non-spacing",              /* \100 */
+    "stop",                     /* \101 */
+    "y",                        /* \102 */
+    "d",                        /* \103 */
+    "h",                        /* \104 */
+    "horn",                     /* \105 */
+    "t",                        /* \106 */
+    "z",                        /* \107 */
+    "of",                       /* \110 */
+    "to",                       /* \111 */
+    "bracket",                  /* \112 */
+    "c",                        /* \113 */
+    "ligature",                 /* \114 */
+    "one",                      /* \115 */
+    "r",                        /* \116 */
+    "(character",               /* \117 */
+    "superscript",              /* \120 */
+    "w",                        /* \121 */
+    "fraction",                 /* \122 */
+    "k",                        /* \123 */
+    "stroke",                   /* \124 */
+    "two",                      /* \125 */
+    "square",                   /* \126 */
+    "subscript",                /* \127 */
+    "three",                    /* \130 */
+    "vulgar",                   /* \131 */
+    "(iso-ir-103",              /* \132 */
+    "number",                   /* \133 */
+    "ogonek",                   /* \134 */
+    "arrow",                    /* \135 */
+    "b",                        /* \136 */
+    "lam",                      /* \137 */
+    "quotation",                /* \140 */
+    "ring",                     /* \141 */
+    "dash",                     /* \142 */
+    "five",                     /* \143 */
+    "four",                     /* \144 */
+    "m",                        /* \145 */
+    "space",                    /* \146 */
+    "accent",                   /* \147 */
+    "seven",                    /* \150 */
+    "x",                        /* \151 */
+    "angle",                    /* \152 */
+    "arabic-indic",             /* \153 */
+    "eastern",                  /* \154 */
+    "eight",                    /* \155 */
+    "equal",                    /* \156 */
+    "half",                     /* \157 */
+    "hamza",                    /* \160 */
+    "ideograph",                /* \161 */
+    "nine",                     /* \162 */
+    "p",                        /* \163 */
+    "part)",                    /* \164 */
     "six",                      /* \165 */
     "triangle",                 /* \166 */
     "v",                        /* \167 */
@@ -831,10 +831,10 @@ struct charname
 static const struct charname charname[NUMBER_OF_CHARNAMES] =
   {
     {0x0000, "\376\267\375\367"},
-    {0x0001, "\260\112\376\215\376\005"},
-    {0x0002, "\260\112\375\252\376\015"},
-    {0x0003, "\212\112\375\252\375\336"},
-    {0x0004, "\212\112\375\257\375\331"},
+    {0x0001, "\260\110\376\215\376\005"},
+    {0x0002, "\260\110\375\252\376\015"},
+    {0x0003, "\212\110\375\252\375\336"},
+    {0x0004, "\212\110\375\257\375\331"},
     {0x0005, "\376\161\375\330"},
     {0x0006, "\375\032\375\307"},
     {0x0007, "\376\107\375\311"},
@@ -847,25 +847,25 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x000E, "\375\234\376\277\376\004"},
     {0x000F, "\375\234\376\226\376\003"},
     {0x0010, "\376\143\375\105\375\326"},
-    {0x0011, "\232\211\117\375\320"},
-    {0x0012, "\232\211\126\375\321"},
-    {0x0013, "\232\211\131\375\322"},
-    {0x0014, "\232\211\145\375\323"},
+    {0x0011, "\232\211\115\375\320"},
+    {0x0012, "\232\211\125\375\321"},
+    {0x0013, "\232\211\130\375\322"},
+    {0x0014, "\232\211\144\375\323"},
     {0x0015, "\376\263\375\032\375\364"},
     {0x0016, "\376\372\376\224\376\017"},
-    {0x0017, "\212\112\375\257\207\375\335"},
+    {0x0017, "\212\110\375\257\207\375\335"},
     {0x0018, "\375\051\375\314"},
-    {0x0019, "\212\112\375\156\375\327"},
+    {0x0019, "\212\110\375\156\375\327"},
     {0x001A, "\376\365\376\016"},
     {0x001B, "\375\105\375\334"},
     {0x001C, "\376\176\325\375\354"},
     {0x001D, "\376\212\325\375\353"},
     {0x001E, "\376\333\325\375\352"},
     {0x001F, "\375\016\325\375\351"},
-    {0x0020, "\147"},
+    {0x0020, "\146"},
     {0x0021, "\360\046"},
-    {0x0022, "\141\046"},
-    {0x0023, "\134\036"},
+    {0x0022, "\140\046"},
+    {0x0023, "\133\036"},
     {0x0024, "\376\150\036"},
     {0x0025, "\376\305\036"},
     {0x0026, "\376\066"},
@@ -876,18 +876,18 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x002B, "\375\002\036"},
     {0x002C, "\346"},
     {0x002D, "\376\221"},
-    {0x002E, "\074\103"},
+    {0x002E, "\074\101"},
     {0x002F, "\375\011"},
     {0x0030, "\025\225"},
-    {0x0031, "\025\117"},
-    {0x0032, "\025\126"},
-    {0x0033, "\025\131"},
-    {0x0034, "\025\145"},
-    {0x0035, "\025\144"},
+    {0x0031, "\025\115"},
+    {0x0032, "\025\125"},
+    {0x0033, "\025\130"},
+    {0x0034, "\025\144"},
+    {0x0035, "\025\143"},
     {0x0036, "\025\165"},
-    {0x0037, "\025\151"},
-    {0x0038, "\025\156"},
-    {0x0039, "\025\163"},
+    {0x0037, "\025\150"},
+    {0x0038, "\025\155"},
+    {0x0039, "\025\162"},
     {0x003A, "\376\126"},
     {0x003B, "\375\226"},
     {0x003C, "\311\036"},
@@ -896,67 +896,67 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x003F, "\375\003\046"},
     {0x0040, "\376\127\376\077"},
     {0x0041, "\002\005\001\030"},
-    {0x0042, "\002\005\001\137"},
-    {0x0043, "\002\005\001\115"},
-    {0x0044, "\002\005\001\105"},
+    {0x0042, "\002\005\001\136"},
+    {0x0043, "\002\005\001\113"},
+    {0x0044, "\002\005\001\103"},
     {0x0045, "\002\005\001\033"},
     {0x0046, "\002\005\001\172"},
     {0x0047, "\002\005\001\075"},
-    {0x0048, "\002\005\001\106"},
+    {0x0048, "\002\005\001\104"},
     {0x0049, "\002\005\001\041"},
     {0x004A, "\002\005\001\171"},
-    {0x004B, "\002\005\001\124"},
+    {0x004B, "\002\005\001\123"},
     {0x004C, "\002\005\001\077"},
-    {0x004D, "\002\005\001\146"},
+    {0x004D, "\002\005\001\145"},
     {0x004E, "\002\005\001\061"},
     {0x004F, "\002\005\001\023"},
-    {0x0050, "\002\005\001\164"},
+    {0x0050, "\002\005\001\163"},
     {0x0051, "\002\005\001\220"},
-    {0x0052, "\002\005\001\120"},
+    {0x0052, "\002\005\001\116"},
     {0x0053, "\002\005\001\070"},
-    {0x0054, "\002\005\001\110"},
+    {0x0054, "\002\005\001\106"},
     {0x0055, "\002\005\001\024"},
     {0x0056, "\002\005\001\167"},
-    {0x0057, "\002\005\001\122"},
-    {0x0058, "\002\005\001\152"},
-    {0x0059, "\002\005\001\104"},
-    {0x005A, "\002\005\001\111"},
-    {0x005B, "\034\127\114"},
+    {0x0057, "\002\005\001\121"},
+    {0x0058, "\002\005\001\151"},
+    {0x0059, "\002\005\001\102"},
+    {0x005A, "\002\005\001\107"},
+    {0x005B, "\034\126\112"},
     {0x005C, "\375\215\375\011"},
-    {0x005D, "\035\127\114"},
-    {0x005E, "\027\150"},
+    {0x005D, "\035\126\112"},
+    {0x005E, "\027\147"},
     {0x005F, "\312\052"},
-    {0x0060, "\047\150"},
+    {0x0060, "\047\147"},
     {0x0061, "\002\004\001\030"},
-    {0x0062, "\002\004\001\137"},
-    {0x0063, "\002\004\001\115"},
-    {0x0064, "\002\004\001\105"},
+    {0x0062, "\002\004\001\136"},
+    {0x0063, "\002\004\001\113"},
+    {0x0064, "\002\004\001\103"},
     {0x0065, "\002\004\001\033"},
     {0x0066, "\002\004\001\172"},
     {0x0067, "\002\004\001\075"},
-    {0x0068, "\002\004\001\106"},
+    {0x0068, "\002\004\001\104"},
     {0x0069, "\002\004\001\041"},
     {0x006A, "\002\004\001\171"},
-    {0x006B, "\002\004\001\124"},
+    {0x006B, "\002\004\001\123"},
     {0x006C, "\002\004\001\077"},
-    {0x006D, "\002\004\001\146"},
+    {0x006D, "\002\004\001\145"},
     {0x006E, "\002\004\001\061"},
     {0x006F, "\002\004\001\023"},
-    {0x0070, "\002\004\001\164"},
+    {0x0070, "\002\004\001\163"},
     {0x0071, "\002\004\001\220"},
-    {0x0072, "\002\004\001\120"},
+    {0x0072, "\002\004\001\116"},
     {0x0073, "\002\004\001\070"},
-    {0x0074, "\002\004\001\110"},
+    {0x0074, "\002\004\001\106"},
     {0x0075, "\002\004\001\024"},
     {0x0076, "\002\004\001\167"},
-    {0x0077, "\002\004\001\122"},
-    {0x0078, "\002\004\001\152"},
-    {0x0079, "\002\004\001\104"},
-    {0x007A, "\002\004\001\111"},
-    {0x007B, "\034\375\063\114"},
+    {0x0077, "\002\004\001\121"},
+    {0x0078, "\002\004\001\151"},
+    {0x0079, "\002\004\001\102"},
+    {0x007A, "\002\004\001\107"},
+    {0x007B, "\034\375\063\112"},
     {0x007C, "\063\052"},
-    {0x007D, "\035\375\063\114"},
-    {0x007E, "\043"},
+    {0x007D, "\035\375\063\112"},
+    {0x007E, "\042"},
     {0x007F, "\376\144\375\325"},
     {0x0080, "\376\301\200\375\371"},
     {0x0081, "\376\217\376\271\376\320\375\342"},
@@ -964,25 +964,25 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0083, "\374\375\045\375\126\375\365"},
     {0x0084, "\364\375\350"},
     {0x0085, "\375\170\052\375\366"},
-    {0x0086, "\260\112\375\225\271\376\012"},
-    {0x0087, "\212\112\375\225\271\375\333"},
+    {0x0086, "\260\110\375\225\271\376\012"},
+    {0x0087, "\212\110\375\225\271\375\333"},
     {0x0088, "\200\261\326\375\345"},
     {0x0089, "\200\261\003\376\234\375\344"},
     {0x008A, "\052\261\326\376\022"},
     {0x008B, "\375\001\052\376\202\375\372"},
     {0x008C, "\375\001\052\376\103\375\373"},
     {0x008D, "\375\215\052\361\375\377"},
-    {0x008E, "\375\236\126\376\010"},
-    {0x008F, "\375\236\131\376\011"},
+    {0x008E, "\375\236\125\376\010"},
+    {0x008F, "\375\236\130\376\011"},
     {0x0090, "\232\211\375\012\375\324"},
-    {0x0091, "\375\206\375\266\117\375\375"},
-    {0x0092, "\375\206\375\266\126\375\376"},
+    {0x0091, "\375\206\375\266\115\375\375"},
+    {0x0092, "\375\206\375\266\125\375\376"},
     {0x0093, "\326\377\016\376\364\376\014"},
     {0x0094, "\375\051\200\375\315"},
     {0x0095, "\375\161\377\031\375\363"},
-    {0x0096, "\260\112\375\123\271\376\007"},
-    {0x0097, "\212\112\375\123\271\375\332"},
-    {0x0098, "\260\112\375\012\376\006"},
+    {0x0096, "\260\110\375\123\271\376\007"},
+    {0x0097, "\212\110\375\123\271\375\332"},
+    {0x0098, "\260\110\375\012\376\006"},
     {0x0099, "\175\376\211\200\365\376\002"},
     {0x009A, "\175\200\365\376\001"},
     {0x009B, "\211\376\347\365\375\317"},
@@ -990,7 +990,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x009D, "\376\274\376\373\375\057\375\370"},
     {0x009E, "\376\321\375\161\375\374"},
     {0x009F, "\376\073\376\323\375\057\375\310"},
-    {0x00A0, "\376\266\147"},
+    {0x00A0, "\376\266\146"},
     {0x00A1, "\306\360\046"},
     {0x00A2, "\376\121\036"},
     {0x00A3, "\376\315\036"},
@@ -1001,35 +1001,35 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00A8, "\037"},
     {0x00A9, "\375\061\036"},
     {0x00AA, "\376\167\375\201\375\135"},
-    {0x00AB, "\245\064\153\141\046"},
+    {0x00AB, "\245\064\152\140\046"},
     {0x00AC, "\251\036"},
     {0x00AD, "\375\010\375\133"},
     {0x00AE, "\376\337\036"},
-    {0x00AF, "\051"},
+    {0x00AF, "\050"},
     {0x00B0, "\350\036"},
     {0x00B1, "\376\312\036"},
-    {0x00B2, "\121\126"},
-    {0x00B3, "\121\131"},
-    {0x00B4, "\013\150"},
+    {0x00B2, "\120\125"},
+    {0x00B3, "\120\130"},
+    {0x00B4, "\013\147"},
     {0x00B5, "\376\253\036"},
     {0x00B6, "\376\311\036"},
     {0x00B7, "\247\015"},
     {0x00B8, "\060"},
-    {0x00B9, "\121\117"},
+    {0x00B9, "\120\115"},
     {0x00BA, "\376\251\375\201\375\135"},
-    {0x00BB, "\254\064\153\141\046"},
-    {0x00BC, "\132\123\117\375\211"},
-    {0x00BD, "\132\123\117\160"},
-    {0x00BE, "\132\123\131\376\330"},
+    {0x00BB, "\254\064\152\140\046"},
+    {0x00BC, "\131\122\115\375\211"},
+    {0x00BD, "\131\122\115\157"},
+    {0x00BE, "\131\122\130\376\330"},
     {0x00BF, "\306\375\003\046"},
     {0x00C0, "\002\005\001\030\003\047"},
     {0x00C1, "\002\005\001\030\003\013"},
     {0x00C2, "\002\005\001\030\003\027"},
-    {0x00C3, "\002\005\001\030\003\043"},
+    {0x00C3, "\002\005\001\030\003\042"},
     {0x00C4, "\002\005\001\030\003\037"},
-    {0x00C5, "\002\005\001\030\003\142\016"},
+    {0x00C5, "\002\005\001\030\003\141\016"},
     {0x00C6, "\002\005\001\206"},
-    {0x00C7, "\002\005\001\115\003\060"},
+    {0x00C7, "\002\005\001\113\003\060"},
     {0x00C8, "\002\005\001\033\003\047"},
     {0x00C9, "\002\005\001\033\003\013"},
     {0x00CA, "\002\005\001\033\003\027"},
@@ -1039,29 +1039,29 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00CE, "\002\005\001\041\003\027"},
     {0x00CF, "\002\005\001\041\003\037"},
     {0x00D0, "\002\005\001\375\106\266"},
-    {0x00D1, "\002\005\001\061\003\043"},
+    {0x00D1, "\002\005\001\061\003\042"},
     {0x00D2, "\002\005\001\023\003\047"},
     {0x00D3, "\002\005\001\023\003\013"},
     {0x00D4, "\002\005\001\023\003\027"},
-    {0x00D5, "\002\005\001\023\003\043"},
+    {0x00D5, "\002\005\001\023\003\042"},
     {0x00D6, "\002\005\001\023\003\037"},
     {0x00D7, "\376\260\036"},
-    {0x00D8, "\002\005\001\023\003\125"},
+    {0x00D8, "\002\005\001\023\003\124"},
     {0x00D9, "\002\005\001\024\003\047"},
     {0x00DA, "\002\005\001\024\003\013"},
     {0x00DB, "\002\005\001\024\003\027"},
     {0x00DC, "\002\005\001\024\003\037"},
-    {0x00DD, "\002\005\001\104\003\013"},
+    {0x00DD, "\002\005\001\102\003\013"},
     {0x00DE, "\002\005\001\375\254\266"},
     {0x00DF, "\002\004\001\375\231\070\375\340"},
     {0x00E0, "\002\004\001\030\003\047"},
     {0x00E1, "\002\004\001\030\003\013"},
     {0x00E2, "\002\004\001\030\003\027"},
-    {0x00E3, "\002\004\001\030\003\043"},
+    {0x00E3, "\002\004\001\030\003\042"},
     {0x00E4, "\002\004\001\030\003\037"},
-    {0x00E5, "\002\004\001\030\003\142\016"},
+    {0x00E5, "\002\004\001\030\003\141\016"},
     {0x00E6, "\002\004\001\206"},
-    {0x00E7, "\002\004\001\115\003\060"},
+    {0x00E7, "\002\004\001\113\003\060"},
     {0x00E8, "\002\004\001\033\003\047"},
     {0x00E9, "\002\004\001\033\003\013"},
     {0x00EA, "\002\004\001\033\003\027"},
@@ -1071,47 +1071,47 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00EE, "\002\004\001\041\003\027"},
     {0x00EF, "\002\004\001\041\003\037"},
     {0x00F0, "\002\004\001\375\106\266"},
-    {0x00F1, "\002\004\001\061\003\043"},
+    {0x00F1, "\002\004\001\061\003\042"},
     {0x00F2, "\002\004\001\023\003\047"},
     {0x00F3, "\002\004\001\023\003\013"},
     {0x00F4, "\002\004\001\023\003\027"},
-    {0x00F5, "\002\004\001\023\003\043"},
+    {0x00F5, "\002\004\001\023\003\042"},
     {0x00F6, "\002\004\001\023\003\037"},
     {0x00F7, "\376\147\036"},
-    {0x00F8, "\002\004\001\023\003\125"},
+    {0x00F8, "\002\004\001\023\003\124"},
     {0x00F9, "\002\004\001\024\003\047"},
     {0x00FA, "\002\004\001\024\003\013"},
     {0x00FB, "\002\004\001\024\003\027"},
     {0x00FC, "\002\004\001\024\003\037"},
-    {0x00FD, "\002\004\001\104\003\013"},
+    {0x00FD, "\002\004\001\102\003\013"},
     {0x00FE, "\002\004\001\375\254\266"},
-    {0x00FF, "\002\004\001\104\003\037"},
-    {0x0100, "\002\005\001\030\003\051"},
-    {0x0101, "\002\004\001\030\003\051"},
+    {0x00FF, "\002\004\001\102\003\037"},
+    {0x0100, "\002\005\001\030\003\050"},
+    {0x0101, "\002\004\001\030\003\050"},
     {0x0102, "\002\005\001\030\003\057"},
     {0x0103, "\002\004\001\030\003\057"},
-    {0x0104, "\002\005\001\030\003\135"},
-    {0x0105, "\002\004\001\030\003\135"},
-    {0x0106, "\002\005\001\115\003\013"},
-    {0x0107, "\002\004\001\115\003\013"},
-    {0x0108, "\002\005\001\115\003\027"},
-    {0x0109, "\002\004\001\115\003\027"},
-    {0x010A, "\002\005\001\115\003\015\016"},
-    {0x010B, "\002\004\001\115\003\015\016"},
-    {0x010C, "\002\005\001\115\003\045"},
-    {0x010D, "\002\004\001\115\003\045"},
-    {0x010E, "\002\005\001\105\003\045"},
-    {0x010F, "\002\004\001\105\003\045"},
-    {0x0110, "\002\005\001\105\003\125"},
-    {0x0111, "\002\004\001\105\003\125"},
-    {0x0112, "\002\005\001\033\003\051"},
-    {0x0113, "\002\004\001\033\003\051"},
+    {0x0104, "\002\005\001\030\003\134"},
+    {0x0105, "\002\004\001\030\003\134"},
+    {0x0106, "\002\005\001\113\003\013"},
+    {0x0107, "\002\004\001\113\003\013"},
+    {0x0108, "\002\005\001\113\003\027"},
+    {0x0109, "\002\004\001\113\003\027"},
+    {0x010A, "\002\005\001\113\003\015\016"},
+    {0x010B, "\002\004\001\113\003\015\016"},
+    {0x010C, "\002\005\001\113\003\045"},
+    {0x010D, "\002\004\001\113\003\045"},
+    {0x010E, "\002\005\001\103\003\045"},
+    {0x010F, "\002\004\001\103\003\045"},
+    {0x0110, "\002\005\001\103\003\124"},
+    {0x0111, "\002\004\001\103\003\124"},
+    {0x0112, "\002\005\001\033\003\050"},
+    {0x0113, "\002\004\001\033\003\050"},
     {0x0114, "\002\005\001\033\003\057"},
     {0x0115, "\002\004\001\033\003\057"},
     {0x0116, "\002\005\001\033\003\015\016"},
     {0x0117, "\002\004\001\033\003\015\016"},
-    {0x0118, "\002\005\001\033\003\135"},
-    {0x0119, "\002\004\001\033\003\135"},
+    {0x0118, "\002\005\001\033\003\134"},
+    {0x0119, "\002\004\001\033\003\134"},
     {0x011A, "\002\005\001\033\003\045"},
     {0x011B, "\002\004\001\033\003\045"},
     {0x011C, "\002\005\001\075\003\027"},
@@ -1122,26 +1122,26 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0121, "\002\004\001\075\003\015\016"},
     {0x0122, "\002\005\001\075\003\060"},
     {0x0123, "\002\004\001\075\003\060"},
-    {0x0124, "\002\005\001\106\003\027"},
-    {0x0125, "\002\004\001\106\003\027"},
-    {0x0126, "\002\005\001\106\003\125"},
-    {0x0127, "\002\004\001\106\003\125"},
-    {0x0128, "\002\005\001\041\003\043"},
-    {0x0129, "\002\004\001\041\003\043"},
-    {0x012A, "\002\005\001\041\003\051"},
-    {0x012B, "\002\004\001\041\003\051"},
+    {0x0124, "\002\005\001\104\003\027"},
+    {0x0125, "\002\004\001\104\003\027"},
+    {0x0126, "\002\005\001\104\003\124"},
+    {0x0127, "\002\004\001\104\003\124"},
+    {0x0128, "\002\005\001\041\003\042"},
+    {0x0129, "\002\004\001\041\003\042"},
+    {0x012A, "\002\005\001\041\003\050"},
+    {0x012B, "\002\004\001\041\003\050"},
     {0x012C, "\002\005\001\041\003\057"},
     {0x012D, "\002\004\001\041\003\057"},
-    {0x012E, "\002\005\001\041\003\135"},
-    {0x012F, "\002\004\001\041\003\135"},
+    {0x012E, "\002\005\001\041\003\134"},
+    {0x012F, "\002\004\001\041\003\134"},
     {0x0130, "\002\005\001\041\003\015\016"},
     {0x0131, "\002\004\001\041\376\151"},
-    {0x0132, "\002\005\116\375\134"},
-    {0x0133, "\002\004\116\375\134"},
+    {0x0132, "\002\005\114\375\134"},
+    {0x0133, "\002\004\114\375\134"},
     {0x0134, "\002\005\001\171\003\027"},
     {0x0135, "\002\004\001\171\003\027"},
-    {0x0136, "\002\005\001\124\003\060"},
-    {0x0137, "\002\004\001\124\003\060"},
+    {0x0136, "\002\005\001\123\003\060"},
+    {0x0137, "\002\004\001\123\003\060"},
     {0x0138, "\002\004\001\376\240\375\341"},
     {0x0139, "\002\005\001\077\003\013"},
     {0x013A, "\002\004\001\077\003\013"},
@@ -1151,8 +1151,8 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x013E, "\002\004\001\077\003\045"},
     {0x013F, "\002\005\001\077\003\247\015"},
     {0x0140, "\002\004\001\077\003\247\015"},
-    {0x0141, "\002\005\001\077\003\125"},
-    {0x0142, "\002\004\001\077\003\125"},
+    {0x0141, "\002\005\001\077\003\124"},
+    {0x0142, "\002\004\001\077\003\124"},
     {0x0143, "\002\005\001\061\003\013"},
     {0x0144, "\002\004\001\061\003\013"},
     {0x0145, "\002\005\001\061\003\060"},
@@ -1162,20 +1162,20 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0149, "\002\004\001\061\376\316\376\115\375\034"},
     {0x014A, "\002\005\001\355\375\025"},
     {0x014B, "\002\004\001\355\375\025"},
-    {0x014C, "\002\005\001\023\003\051"},
-    {0x014D, "\002\004\001\023\003\051"},
+    {0x014C, "\002\005\001\023\003\050"},
+    {0x014D, "\002\004\001\023\003\050"},
     {0x014E, "\002\005\001\023\003\057"},
     {0x014F, "\002\004\001\023\003\057"},
     {0x0150, "\002\005\001\023\003\064\013"},
     {0x0151, "\002\004\001\023\003\064\013"},
-    {0x0152, "\002\005\116\375\177"},
-    {0x0153, "\002\004\116\375\177"},
-    {0x0154, "\002\005\001\120\003\013"},
-    {0x0155, "\002\004\001\120\003\013"},
-    {0x0156, "\002\005\001\120\003\060"},
-    {0x0157, "\002\004\001\120\003\060"},
-    {0x0158, "\002\005\001\120\003\045"},
-    {0x0159, "\002\004\001\120\003\045"},
+    {0x0152, "\002\005\114\375\177"},
+    {0x0153, "\002\004\114\375\177"},
+    {0x0154, "\002\005\001\116\003\013"},
+    {0x0155, "\002\004\001\116\003\013"},
+    {0x0156, "\002\005\001\116\003\060"},
+    {0x0157, "\002\004\001\116\003\060"},
+    {0x0158, "\002\005\001\116\003\045"},
+    {0x0159, "\002\004\001\116\003\045"},
     {0x015A, "\002\005\001\070\003\013"},
     {0x015B, "\002\004\001\070\003\013"},
     {0x015C, "\002\005\001\070\003\027"},
@@ -1184,44 +1184,44 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x015F, "\002\004\001\070\003\060"},
     {0x0160, "\002\005\001\070\003\045"},
     {0x0161, "\002\004\001\070\003\045"},
-    {0x0162, "\002\005\001\110\003\060"},
-    {0x0163, "\002\004\001\110\003\060"},
-    {0x0164, "\002\005\001\110\003\045"},
-    {0x0165, "\002\004\001\110\003\045"},
-    {0x0166, "\002\005\001\110\003\125"},
-    {0x0167, "\002\004\001\110\003\125"},
-    {0x0168, "\002\005\001\024\003\043"},
-    {0x0169, "\002\004\001\024\003\043"},
-    {0x016A, "\002\005\001\024\003\051"},
-    {0x016B, "\002\004\001\024\003\051"},
+    {0x0162, "\002\005\001\106\003\060"},
+    {0x0163, "\002\004\001\106\003\060"},
+    {0x0164, "\002\005\001\106\003\045"},
+    {0x0165, "\002\004\001\106\003\045"},
+    {0x0166, "\002\005\001\106\003\124"},
+    {0x0167, "\002\004\001\106\003\124"},
+    {0x0168, "\002\005\001\024\003\042"},
+    {0x0169, "\002\004\001\024\003\042"},
+    {0x016A, "\002\005\001\024\003\050"},
+    {0x016B, "\002\004\001\024\003\050"},
     {0x016C, "\002\005\001\024\003\057"},
     {0x016D, "\002\004\001\024\003\057"},
-    {0x016E, "\002\005\001\024\003\142\016"},
-    {0x016F, "\002\004\001\024\003\142\016"},
+    {0x016E, "\002\005\001\024\003\141\016"},
+    {0x016F, "\002\004\001\024\003\141\016"},
     {0x0170, "\002\005\001\024\003\064\013"},
     {0x0171, "\002\004\001\024\003\064\013"},
-    {0x0172, "\002\005\001\024\003\135"},
-    {0x0173, "\002\004\001\024\003\135"},
-    {0x0174, "\002\005\001\122\003\027"},
-    {0x0175, "\002\004\001\122\003\027"},
-    {0x0176, "\002\005\001\104\003\027"},
-    {0x0177, "\002\004\001\104\003\027"},
-    {0x0178, "\002\005\001\104\003\037"},
-    {0x0179, "\002\005\001\111\003\013"},
-    {0x017A, "\002\004\001\111\003\013"},
-    {0x017B, "\002\005\001\111\003\015\016"},
-    {0x017C, "\002\004\001\111\003\015\016"},
-    {0x017D, "\002\005\001\111\003\045"},
-    {0x017E, "\002\004\001\111\003\045"},
-    {0x01A0, "\002\005\001\023\003\107"},
-    {0x01A1, "\002\004\001\023\003\107"},
+    {0x0172, "\002\005\001\024\003\134"},
+    {0x0173, "\002\004\001\024\003\134"},
+    {0x0174, "\002\005\001\121\003\027"},
+    {0x0175, "\002\004\001\121\003\027"},
+    {0x0176, "\002\005\001\102\003\027"},
+    {0x0177, "\002\004\001\102\003\027"},
+    {0x0178, "\002\005\001\102\003\037"},
+    {0x0179, "\002\005\001\107\003\013"},
+    {0x017A, "\002\004\001\107\003\013"},
+    {0x017B, "\002\005\001\107\003\015\016"},
+    {0x017C, "\002\004\001\107\003\015\016"},
+    {0x017D, "\002\005\001\107\003\045"},
+    {0x017E, "\002\004\001\107\003\045"},
+    {0x01A0, "\002\005\001\023\003\105"},
+    {0x01A1, "\002\004\001\023\003\105"},
     {0x01A2, "\002\005\001\375\200"},
     {0x01A3, "\002\004\001\375\200"},
     {0x01A6, "\002\001\377\036"},
-    {0x01AF, "\002\005\001\024\003\107"},
-    {0x01B0, "\002\004\001\024\003\107"},
-    {0x01B5, "\002\005\001\111\003\125"},
-    {0x01B6, "\002\004\001\111\003\125"},
+    {0x01AF, "\002\005\001\024\003\105"},
+    {0x01B0, "\002\004\001\024\003\105"},
+    {0x01B5, "\002\005\001\107\003\124"},
+    {0x01B6, "\002\004\001\107\003\124"},
     {0x01B7, "\002\005\001\301"},
     {0x01CD, "\002\005\001\030\003\045"},
     {0x01CE, "\002\004\001\030\003\045"},
@@ -1231,53 +1231,53 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x01D2, "\002\004\001\023\003\045"},
     {0x01D3, "\002\005\001\024\003\045"},
     {0x01D4, "\002\004\001\024\003\045"},
-    {0x01D5, "\002\005\001\024\003\037\007\051"},
-    {0x01D6, "\002\004\001\024\003\037\007\051"},
+    {0x01D5, "\002\005\001\024\003\037\007\050"},
+    {0x01D6, "\002\004\001\024\003\037\007\050"},
     {0x01D7, "\002\005\001\024\003\037\007\013"},
     {0x01D8, "\002\004\001\024\003\037\007\013"},
     {0x01D9, "\002\005\001\024\003\037\007\045"},
     {0x01DA, "\002\004\001\024\003\037\007\045"},
     {0x01DB, "\002\005\001\024\003\037\007\047"},
     {0x01DC, "\002\004\001\024\003\037\007\047"},
-    {0x01DE, "\002\005\001\030\003\037\007\051"},
-    {0x01DF, "\002\004\001\030\003\037\007\051"},
-    {0x01E0, "\002\005\001\030\003\015\016\007\051"},
-    {0x01E1, "\002\004\001\030\003\015\016\007\051"},
-    {0x01E2, "\002\005\001\206\003\051"},
-    {0x01E3, "\002\004\001\206\003\051"},
-    {0x01E4, "\002\005\001\075\003\125"},
-    {0x01E5, "\002\004\001\075\003\125"},
+    {0x01DE, "\002\005\001\030\003\037\007\050"},
+    {0x01DF, "\002\004\001\030\003\037\007\050"},
+    {0x01E0, "\002\005\001\030\003\015\016\007\050"},
+    {0x01E1, "\002\004\001\030\003\015\016\007\050"},
+    {0x01E2, "\002\005\001\206\003\050"},
+    {0x01E3, "\002\004\001\206\003\050"},
+    {0x01E4, "\002\005\001\075\003\124"},
+    {0x01E5, "\002\004\001\075\003\124"},
     {0x01E6, "\002\005\001\075\003\045"},
     {0x01E7, "\002\004\001\075\003\045"},
-    {0x01E8, "\002\005\001\124\003\045"},
-    {0x01E9, "\002\004\001\124\003\045"},
-    {0x01EA, "\002\005\001\023\003\135"},
-    {0x01EB, "\002\004\001\023\003\135"},
-    {0x01EC, "\002\005\001\023\003\135\007\051"},
-    {0x01ED, "\002\004\001\023\003\135\007\051"},
+    {0x01E8, "\002\005\001\123\003\045"},
+    {0x01E9, "\002\004\001\123\003\045"},
+    {0x01EA, "\002\005\001\023\003\134"},
+    {0x01EB, "\002\004\001\023\003\134"},
+    {0x01EC, "\002\005\001\023\003\134\007\050"},
+    {0x01ED, "\002\004\001\023\003\134\007\050"},
     {0x01EE, "\002\005\001\301\003\045"},
     {0x01EF, "\002\004\001\301\003\045"},
     {0x01F0, "\002\004\001\171\003\045"},
     {0x01F4, "\002\005\001\075\003\013"},
     {0x01F5, "\002\004\001\075\003\013"},
-    {0x01FA, "\002\005\001\030\003\142\016\007\013"},
-    {0x01FB, "\002\004\001\030\003\142\016\007\013"},
+    {0x01FA, "\002\005\001\030\003\141\016\007\013"},
+    {0x01FB, "\002\004\001\030\003\141\016\007\013"},
     {0x01FC, "\002\005\001\206\003\013"},
     {0x01FD, "\002\004\001\206\003\013"},
-    {0x01FE, "\002\005\001\023\003\125\007\013"},
-    {0x01FF, "\002\004\001\023\003\125\007\013"},
+    {0x01FE, "\002\005\001\023\003\124\007\013"},
+    {0x01FF, "\002\004\001\023\003\124\007\013"},
     {0x0292, "\002\004\001\301\375\356\376\035"},
-    {0x02BB, "\376\257\001\034\160\142"},
+    {0x02BB, "\376\257\001\034\157\141"},
     {0x02C7, "\045"},
     {0x02D8, "\057"},
     {0x02D9, "\015\016"},
-    {0x02DA, "\142\016"},
-    {0x02DB, "\135"},
-    {0x02DD, "\064\013\150"},
+    {0x02DA, "\141\016"},
+    {0x02DB, "\134"},
+    {0x02DD, "\064\013\147"},
     {0x0374, "\012\055\036"},
     {0x0375, "\012\173\055\036"},
     {0x037A, "\012\170\020"},
-    {0x0385, "\013\150\007\037\376\020\007\376\145"},
+    {0x0385, "\013\147\007\037\376\020\007\376\145"},
     {0x0386, "\012\005\001\270\003\013"},
     {0x0388, "\012\005\001\277\003\013"},
     {0x0389, "\012\005\001\300\003\013"},
@@ -1334,7 +1334,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x03BF, "\012\004\001\317"},
     {0x03C0, "\012\004\001\321"},
     {0x03C1, "\012\004\001\375\216"},
-    {0x03C2, "\012\004\001\042\375\007"},
+    {0x03C2, "\012\004\001\044\375\007"},
     {0x03C3, "\012\004\001\375\007"},
     {0x03C4, "\012\004\001\375\251"},
     {0x03C5, "\012\004\001\204"},
@@ -1466,18 +1466,18 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x05D7, "\056\001\376\216"},
     {0x05D8, "\056\001\377\003"},
     {0x05D9, "\056\001\377\035"},
-    {0x05DA, "\056\001\042\202"},
+    {0x05DA, "\056\001\044\202"},
     {0x05DB, "\056\001\202"},
     {0x05DC, "\056\001\376\241"},
-    {0x05DD, "\056\001\042\375\157"},
+    {0x05DD, "\056\001\044\375\157"},
     {0x05DE, "\056\001\375\157"},
-    {0x05DF, "\056\001\042\375\176"},
+    {0x05DF, "\056\001\044\375\176"},
     {0x05E0, "\056\001\375\176"},
     {0x05E1, "\056\001\376\344"},
     {0x05E2, "\056\001\376\101"},
-    {0x05E3, "\056\001\042\216"},
+    {0x05E3, "\056\001\044\216"},
     {0x05E4, "\056\001\216"},
-    {0x05E5, "\056\001\042\375\260"},
+    {0x05E5, "\056\001\044\375\260"},
     {0x05E6, "\056\001\375\260"},
     {0x05E7, "\056\001\376\327"},
     {0x05E8, "\056\001\376\340"},
@@ -1486,12 +1486,12 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x060C, "\006\346"},
     {0x061B, "\006\375\226"},
     {0x061F, "\006\375\003\046"},
-    {0x0621, "\006\001\161"},
+    {0x0621, "\006\001\160"},
     {0x0622, "\006\001\073\003\313\016"},
-    {0x0623, "\006\001\073\003\161\016"},
-    {0x0624, "\006\001\336\003\161\016"},
-    {0x0625, "\006\001\073\003\161\020"},
-    {0x0626, "\006\001\223\003\161\016"},
+    {0x0623, "\006\001\073\003\160\016"},
+    {0x0624, "\006\001\336\003\160\016"},
+    {0x0625, "\006\001\073\003\160\020"},
+    {0x0626, "\006\001\223\003\160\016"},
     {0x0627, "\006\001\073"},
     {0x0628, "\006\001\227"},
     {0x0629, "\006\001\177\371"},
@@ -1516,7 +1516,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0641, "\006\001\234"},
     {0x0642, "\006\001\253"},
     {0x0643, "\006\001\202"},
-    {0x0644, "\006\001\140"},
+    {0x0644, "\006\001\137"},
     {0x0645, "\006\001\246"},
     {0x0646, "\006\001\250"},
     {0x0647, "\006\001\237"},
@@ -1531,86 +1531,86 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0650, "\006\376\235"},
     {0x0651, "\006\375\230"},
     {0x0652, "\006\376\366"},
-    {0x0660, "\155\154\025\225"},
-    {0x0661, "\155\154\025\117"},
-    {0x0662, "\155\154\025\126"},
-    {0x0663, "\155\154\025\131"},
-    {0x0664, "\155\154\025\145"},
-    {0x0665, "\155\154\025\144"},
-    {0x0666, "\155\154\025\165"},
-    {0x0667, "\155\154\025\151"},
-    {0x0668, "\155\154\025\156"},
-    {0x0669, "\155\154\025\163"},
-    {0x0670, "\121\006\001\073"},
+    {0x0660, "\154\153\025\225"},
+    {0x0661, "\154\153\025\115"},
+    {0x0662, "\154\153\025\125"},
+    {0x0663, "\154\153\025\130"},
+    {0x0664, "\154\153\025\144"},
+    {0x0665, "\154\153\025\143"},
+    {0x0666, "\154\153\025\165"},
+    {0x0667, "\154\153\025\150"},
+    {0x0668, "\154\153\025\155"},
+    {0x0669, "\154\153\025\162"},
+    {0x0670, "\120\006\001\073"},
     {0x067E, "\006\001\376\303"},
     {0x06A4, "\006\001\377\026"},
     {0x06AF, "\006\001\376\205"},
-    {0x1E00, "\002\005\001\030\003\142\020"},
-    {0x1E01, "\002\004\001\030\003\142\020"},
-    {0x1E02, "\002\005\001\137\003\015\016"},
-    {0x1E03, "\002\004\001\137\003\015\016"},
-    {0x1E04, "\002\005\001\137\003\015\020"},
-    {0x1E05, "\002\004\001\137\003\015\020"},
-    {0x1E06, "\002\005\001\137\003\052\020"},
-    {0x1E07, "\002\004\001\137\003\052\020"},
-    {0x1E08, "\002\005\001\115\003\060\007\013"},
-    {0x1E09, "\002\004\001\115\003\060\007\013"},
-    {0x1E0A, "\002\005\001\105\003\015\016"},
-    {0x1E0B, "\002\004\001\105\003\015\016"},
-    {0x1E0C, "\002\005\001\105\003\015\020"},
-    {0x1E0D, "\002\004\001\105\003\015\020"},
-    {0x1E0E, "\002\005\001\105\003\052\020"},
-    {0x1E0F, "\002\004\001\105\003\052\020"},
-    {0x1E10, "\002\005\001\105\003\060"},
-    {0x1E11, "\002\004\001\105\003\060"},
-    {0x1E12, "\002\005\001\105\003\027\020"},
-    {0x1E13, "\002\004\001\105\003\027\020"},
-    {0x1E14, "\002\005\001\033\003\051\007\047"},
-    {0x1E15, "\002\004\001\033\003\051\007\047"},
-    {0x1E16, "\002\005\001\033\003\051\007\013"},
-    {0x1E17, "\002\004\001\033\003\051\007\013"},
+    {0x1E00, "\002\005\001\030\003\141\020"},
+    {0x1E01, "\002\004\001\030\003\141\020"},
+    {0x1E02, "\002\005\001\136\003\015\016"},
+    {0x1E03, "\002\004\001\136\003\015\016"},
+    {0x1E04, "\002\005\001\136\003\015\020"},
+    {0x1E05, "\002\004\001\136\003\015\020"},
+    {0x1E06, "\002\005\001\136\003\052\020"},
+    {0x1E07, "\002\004\001\136\003\052\020"},
+    {0x1E08, "\002\005\001\113\003\060\007\013"},
+    {0x1E09, "\002\004\001\113\003\060\007\013"},
+    {0x1E0A, "\002\005\001\103\003\015\016"},
+    {0x1E0B, "\002\004\001\103\003\015\016"},
+    {0x1E0C, "\002\005\001\103\003\015\020"},
+    {0x1E0D, "\002\004\001\103\003\015\020"},
+    {0x1E0E, "\002\005\001\103\003\052\020"},
+    {0x1E0F, "\002\004\001\103\003\052\020"},
+    {0x1E10, "\002\005\001\103\003\060"},
+    {0x1E11, "\002\004\001\103\003\060"},
+    {0x1E12, "\002\005\001\103\003\027\020"},
+    {0x1E13, "\002\004\001\103\003\027\020"},
+    {0x1E14, "\002\005\001\033\003\050\007\047"},
+    {0x1E15, "\002\004\001\033\003\050\007\047"},
+    {0x1E16, "\002\005\001\033\003\050\007\013"},
+    {0x1E17, "\002\004\001\033\003\050\007\013"},
     {0x1E18, "\002\005\001\033\003\027\020"},
     {0x1E19, "\002\004\001\033\003\027\020"},
-    {0x1E1A, "\002\005\001\033\003\043\020"},
-    {0x1E1B, "\002\004\001\033\003\043\020"},
+    {0x1E1A, "\002\005\001\033\003\042\020"},
+    {0x1E1B, "\002\004\001\033\003\042\020"},
     {0x1E1C, "\002\005\001\033\003\060\007\057"},
     {0x1E1D, "\002\004\001\033\003\060\007\057"},
     {0x1E1E, "\002\005\001\172\003\015\016"},
     {0x1E1F, "\002\004\001\172\003\015\016"},
-    {0x1E20, "\002\005\001\075\003\051"},
-    {0x1E21, "\002\004\001\075\003\051"},
-    {0x1E22, "\002\005\001\106\003\015\016"},
-    {0x1E23, "\002\004\001\106\003\015\016"},
-    {0x1E24, "\002\005\001\106\003\015\020"},
-    {0x1E25, "\002\004\001\106\003\015\020"},
-    {0x1E26, "\002\005\001\106\003\037"},
-    {0x1E27, "\002\004\001\106\003\037"},
-    {0x1E28, "\002\005\001\106\003\060"},
-    {0x1E29, "\002\004\001\106\003\060"},
-    {0x1E2A, "\002\005\001\106\003\057\020"},
-    {0x1E2B, "\002\004\001\106\003\057\020"},
-    {0x1E2C, "\002\005\001\041\003\043\020"},
-    {0x1E2D, "\002\004\001\041\003\043\020"},
+    {0x1E20, "\002\005\001\075\003\050"},
+    {0x1E21, "\002\004\001\075\003\050"},
+    {0x1E22, "\002\005\001\104\003\015\016"},
+    {0x1E23, "\002\004\001\104\003\015\016"},
+    {0x1E24, "\002\005\001\104\003\015\020"},
+    {0x1E25, "\002\004\001\104\003\015\020"},
+    {0x1E26, "\002\005\001\104\003\037"},
+    {0x1E27, "\002\004\001\104\003\037"},
+    {0x1E28, "\002\005\001\104\003\060"},
+    {0x1E29, "\002\004\001\104\003\060"},
+    {0x1E2A, "\002\005\001\104\003\057\020"},
+    {0x1E2B, "\002\004\001\104\003\057\020"},
+    {0x1E2C, "\002\005\001\041\003\042\020"},
+    {0x1E2D, "\002\004\001\041\003\042\020"},
     {0x1E2E, "\002\005\001\041\003\037\007\013"},
     {0x1E2F, "\002\004\001\041\003\037\007\013"},
-    {0x1E30, "\002\005\001\124\003\013"},
-    {0x1E31, "\002\004\001\124\003\013"},
-    {0x1E32, "\002\005\001\124\003\015\020"},
-    {0x1E33, "\002\004\001\124\003\015\020"},
-    {0x1E34, "\002\005\001\124\003\052\020"},
-    {0x1E35, "\002\004\001\124\003\052\020"},
+    {0x1E30, "\002\005\001\123\003\013"},
+    {0x1E31, "\002\004\001\123\003\013"},
+    {0x1E32, "\002\005\001\123\003\015\020"},
+    {0x1E33, "\002\004\001\123\003\015\020"},
+    {0x1E34, "\002\005\001\123\003\052\020"},
+    {0x1E35, "\002\004\001\123\003\052\020"},
     {0x1E36, "\002\005\001\077\003\015\020"},
     {0x1E37, "\002\004\001\077\003\015\020"},
     {0x1E3A, "\002\005\001\077\003\052\020"},
     {0x1E3B, "\002\004\001\077\003\052\020"},
     {0x1E3C, "\002\005\001\077\003\027\020"},
     {0x1E3D, "\002\004\001\077\003\027\020"},
-    {0x1E3E, "\002\005\001\146\003\013"},
-    {0x1E3F, "\002\004\001\146\003\013"},
-    {0x1E40, "\002\005\001\146\003\015\016"},
-    {0x1E41, "\002\004\001\146\003\015\016"},
-    {0x1E42, "\002\005\001\146\003\015\020"},
-    {0x1E43, "\002\004\001\146\003\015\020"},
+    {0x1E3E, "\002\005\001\145\003\013"},
+    {0x1E3F, "\002\004\001\145\003\013"},
+    {0x1E40, "\002\005\001\145\003\015\016"},
+    {0x1E41, "\002\004\001\145\003\015\016"},
+    {0x1E42, "\002\005\001\145\003\015\020"},
+    {0x1E43, "\002\004\001\145\003\015\020"},
     {0x1E44, "\002\005\001\061\003\015\016"},
     {0x1E45, "\002\004\001\061\003\015\016"},
     {0x1E46, "\002\005\001\061\003\015\020"},
@@ -1618,24 +1618,24 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1E48, "\002\005\001\061\003\052\020"},
     {0x1E49, "\002\004\001\061\003\052\020"},
     {0x1E4A, "\002\004\001\061\003\027\020"},
-    {0x1E4C, "\002\005\001\023\003\043\007\013"},
-    {0x1E4D, "\002\004\001\023\003\043\007\013"},
-    {0x1E4E, "\002\005\001\023\003\043\007\037"},
-    {0x1E4F, "\002\004\001\023\003\043\007\037"},
-    {0x1E50, "\002\005\001\023\003\051\007\047"},
-    {0x1E51, "\002\004\001\023\003\051\007\047"},
-    {0x1E52, "\002\005\001\023\003\051\007\013"},
-    {0x1E53, "\002\004\001\023\003\051\007\013"},
-    {0x1E54, "\002\005\001\164\003\013"},
-    {0x1E55, "\002\004\001\164\003\013"},
-    {0x1E56, "\002\005\001\164\003\015\016"},
-    {0x1E57, "\002\004\001\164\003\015\016"},
-    {0x1E58, "\002\005\001\120\003\015\016"},
-    {0x1E59, "\002\004\001\120\003\015\016"},
-    {0x1E5A, "\002\005\001\120\003\015\020"},
-    {0x1E5B, "\002\004\001\120\003\015\020"},
-    {0x1E5E, "\002\005\001\120\003\052\020"},
-    {0x1E5F, "\002\004\001\120\003\052\020"},
+    {0x1E4C, "\002\005\001\023\003\042\007\013"},
+    {0x1E4D, "\002\004\001\023\003\042\007\013"},
+    {0x1E4E, "\002\005\001\023\003\042\007\037"},
+    {0x1E4F, "\002\004\001\023\003\042\007\037"},
+    {0x1E50, "\002\005\001\023\003\050\007\047"},
+    {0x1E51, "\002\004\001\023\003\050\007\047"},
+    {0x1E52, "\002\005\001\023\003\050\007\013"},
+    {0x1E53, "\002\004\001\023\003\050\007\013"},
+    {0x1E54, "\002\005\001\163\003\013"},
+    {0x1E55, "\002\004\001\163\003\013"},
+    {0x1E56, "\002\005\001\163\003\015\016"},
+    {0x1E57, "\002\004\001\163\003\015\016"},
+    {0x1E58, "\002\005\001\116\003\015\016"},
+    {0x1E59, "\002\004\001\116\003\015\016"},
+    {0x1E5A, "\002\005\001\116\003\015\020"},
+    {0x1E5B, "\002\004\001\116\003\015\020"},
+    {0x1E5E, "\002\005\001\116\003\052\020"},
+    {0x1E5F, "\002\004\001\116\003\052\020"},
     {0x1E60, "\002\005\001\070\003\015\016"},
     {0x1E61, "\002\004\001\070\003\015\016"},
     {0x1E62, "\002\005\001\070\003\015\020"},
@@ -1644,48 +1644,48 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1E65, "\002\004\001\070\003\013\007\015\016"},
     {0x1E66, "\002\005\001\070\003\045\007\015\016"},
     {0x1E67, "\002\004\001\070\003\045\007\015\016"},
-    {0x1E6A, "\002\005\001\110\003\015\016"},
-    {0x1E6B, "\002\004\001\110\003\015\016"},
-    {0x1E6C, "\002\005\001\110\003\015\020"},
-    {0x1E6D, "\002\004\001\110\003\015\020"},
-    {0x1E6E, "\002\005\001\110\003\052\020"},
-    {0x1E6F, "\002\004\001\110\003\052\020"},
-    {0x1E70, "\002\005\001\110\003\027\020"},
-    {0x1E71, "\002\004\001\110\003\027\020"},
-    {0x1E74, "\002\005\001\024\003\043\020"},
-    {0x1E75, "\002\004\001\024\003\043\020"},
+    {0x1E6A, "\002\005\001\106\003\015\016"},
+    {0x1E6B, "\002\004\001\106\003\015\016"},
+    {0x1E6C, "\002\005\001\106\003\015\020"},
+    {0x1E6D, "\002\004\001\106\003\015\020"},
+    {0x1E6E, "\002\005\001\106\003\052\020"},
+    {0x1E6F, "\002\004\001\106\003\052\020"},
+    {0x1E70, "\002\005\001\106\003\027\020"},
+    {0x1E71, "\002\004\001\106\003\027\020"},
+    {0x1E74, "\002\005\001\024\003\042\020"},
+    {0x1E75, "\002\004\001\024\003\042\020"},
     {0x1E76, "\002\005\001\024\003\027\020"},
     {0x1E77, "\002\004\001\024\003\027\020"},
-    {0x1E78, "\002\005\001\024\003\043\007\013"},
-    {0x1E79, "\002\004\001\024\003\043\007\013"},
-    {0x1E7A, "\002\005\001\024\003\051\007\037"},
-    {0x1E7B, "\002\004\001\024\003\051\007\037"},
-    {0x1E7C, "\002\005\001\167\003\043"},
-    {0x1E7D, "\002\004\001\167\003\043"},
+    {0x1E78, "\002\005\001\024\003\042\007\013"},
+    {0x1E79, "\002\004\001\024\003\042\007\013"},
+    {0x1E7A, "\002\005\001\024\003\050\007\037"},
+    {0x1E7B, "\002\004\001\024\003\050\007\037"},
+    {0x1E7C, "\002\005\001\167\003\042"},
+    {0x1E7D, "\002\004\001\167\003\042"},
     {0x1E7E, "\002\005\001\167\003\015\020"},
     {0x1E7F, "\002\004\001\167\003\015\020"},
-    {0x1E80, "\002\005\001\122\003\047"},
-    {0x1E81, "\002\004\001\122\003\047"},
-    {0x1E82, "\002\005\001\122\003\013"},
-    {0x1E83, "\002\004\001\122\003\013"},
-    {0x1E84, "\002\005\001\122\003\037"},
-    {0x1E85, "\002\004\001\122\003\037"},
-    {0x1E86, "\002\005\001\122\003\015\016"},
-    {0x1E87, "\002\004\001\122\003\015\016"},
-    {0x1E88, "\002\005\001\122\003\015\020"},
-    {0x1E89, "\002\004\001\122\003\015\020"},
-    {0x1E8A, "\002\005\001\152\003\015\016"},
-    {0x1E8B, "\002\004\001\152\003\015\016"},
-    {0x1E8C, "\002\005\001\152\003\037"},
-    {0x1E8D, "\002\004\001\152\003\037"},
-    {0x1E8E, "\002\005\001\104\003\015\016"},
-    {0x1E8F, "\002\004\001\104\003\015\016"},
-    {0x1E90, "\002\005\001\111\003\027"},
-    {0x1E91, "\002\004\001\111\003\027"},
-    {0x1E92, "\002\005\001\111\003\015\020"},
-    {0x1E93, "\002\004\001\111\003\015\020"},
-    {0x1E94, "\002\005\001\111\003\052\020"},
-    {0x1E95, "\002\004\001\111\003\052\020"},
+    {0x1E80, "\002\005\001\121\003\047"},
+    {0x1E81, "\002\004\001\121\003\047"},
+    {0x1E82, "\002\005\001\121\003\013"},
+    {0x1E83, "\002\004\001\121\003\013"},
+    {0x1E84, "\002\005\001\121\003\037"},
+    {0x1E85, "\002\004\001\121\003\037"},
+    {0x1E86, "\002\005\001\121\003\015\016"},
+    {0x1E87, "\002\004\001\121\003\015\016"},
+    {0x1E88, "\002\005\001\121\003\015\020"},
+    {0x1E89, "\002\004\001\121\003\015\020"},
+    {0x1E8A, "\002\005\001\151\003\015\016"},
+    {0x1E8B, "\002\004\001\151\003\015\016"},
+    {0x1E8C, "\002\005\001\151\003\037"},
+    {0x1E8D, "\002\004\001\151\003\037"},
+    {0x1E8E, "\002\005\001\102\003\015\016"},
+    {0x1E8F, "\002\004\001\102\003\015\016"},
+    {0x1E90, "\002\005\001\107\003\027"},
+    {0x1E91, "\002\004\001\107\003\027"},
+    {0x1E92, "\002\005\001\107\003\015\020"},
+    {0x1E93, "\002\004\001\107\003\015\020"},
+    {0x1E94, "\002\005\001\107\003\052\020"},
+    {0x1E95, "\002\004\001\107\003\052\020"},
     {0x1EA0, "\002\005\001\030\003\015\020"},
     {0x1EA1, "\002\004\001\030\003\015\020"},
     {0x1EA2, "\002\005\001\030\003\065\016"},
@@ -1696,30 +1696,30 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1EA7, "\002\004\001\030\003\027\007\047"},
     {0x1EA8, "\002\005\001\030\003\027\007\065\016"},
     {0x1EA9, "\002\004\001\030\003\027\007\065\016"},
-    {0x1EAA, "\002\005\001\030\003\027\007\043"},
-    {0x1EAB, "\002\004\001\030\003\027\007\043"},
+    {0x1EAA, "\002\005\001\030\003\027\007\042"},
+    {0x1EAB, "\002\004\001\030\003\027\007\042"},
     {0x1EAE, "\002\005\001\030\003\057\007\013"},
     {0x1EAF, "\002\004\001\030\003\057\007\013"},
     {0x1EB0, "\002\005\001\030\003\057\007\047"},
     {0x1EB1, "\002\004\001\030\003\057\007\047"},
     {0x1EB2, "\002\005\001\030\003\057\007\065\016"},
     {0x1EB3, "\002\004\001\030\003\057\007\065\016"},
-    {0x1EB4, "\002\005\001\030\003\057\007\043"},
-    {0x1EB5, "\002\004\001\030\003\057\007\043"},
+    {0x1EB4, "\002\005\001\030\003\057\007\042"},
+    {0x1EB5, "\002\004\001\030\003\057\007\042"},
     {0x1EB8, "\002\005\001\033\003\015\020"},
     {0x1EB9, "\002\004\001\033\003\015\020"},
     {0x1EBA, "\002\005\001\033\003\065\016"},
     {0x1EBB, "\002\004\001\033\003\065\016"},
-    {0x1EBC, "\002\005\001\033\003\043"},
-    {0x1EBD, "\002\004\001\033\003\043"},
+    {0x1EBC, "\002\005\001\033\003\042"},
+    {0x1EBD, "\002\004\001\033\003\042"},
     {0x1EBE, "\002\005\001\033\003\027\007\013"},
     {0x1EBF, "\002\004\001\033\003\027\007\013"},
     {0x1EC0, "\002\005\001\033\003\027\007\047"},
     {0x1EC1, "\002\004\001\033\003\027\007\047"},
     {0x1EC2, "\002\005\001\033\003\027\007\065\016"},
     {0x1EC3, "\002\004\001\033\003\027\007\065\016"},
-    {0x1EC4, "\002\005\001\033\003\027\007\043"},
-    {0x1EC5, "\002\004\001\033\003\027\007\043"},
+    {0x1EC4, "\002\005\001\033\003\027\007\042"},
+    {0x1EC5, "\002\004\001\033\003\027\007\042"},
     {0x1EC8, "\002\005\001\041\003\065\016"},
     {0x1EC9, "\002\004\001\041\003\065\016"},
     {0x1ECA, "\002\005\001\041\003\015\020"},
@@ -1734,72 +1734,72 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1ED3, "\002\004\001\023\003\027\007\047"},
     {0x1ED4, "\002\005\001\023\003\027\007\065\016"},
     {0x1ED5, "\002\004\001\023\003\027\007\065\016"},
-    {0x1ED6, "\002\005\001\023\003\027\007\043"},
-    {0x1ED7, "\002\004\001\023\003\027\007\043"},
-    {0x1EDA, "\002\005\001\023\003\107\007\013"},
-    {0x1EDB, "\002\004\001\023\003\107\007\013"},
-    {0x1EDC, "\002\005\001\023\003\107\007\047"},
-    {0x1EDD, "\002\004\001\023\003\107\007\047"},
-    {0x1EDE, "\002\005\001\023\003\107\007\065\016"},
-    {0x1EDF, "\002\004\001\023\003\107\007\065\016"},
-    {0x1EE0, "\002\005\001\023\003\107\007\043"},
-    {0x1EE1, "\002\004\001\023\003\107\007\043"},
+    {0x1ED6, "\002\005\001\023\003\027\007\042"},
+    {0x1ED7, "\002\004\001\023\003\027\007\042"},
+    {0x1EDA, "\002\005\001\023\003\105\007\013"},
+    {0x1EDB, "\002\004\001\023\003\105\007\013"},
+    {0x1EDC, "\002\005\001\023\003\105\007\047"},
+    {0x1EDD, "\002\004\001\023\003\105\007\047"},
+    {0x1EDE, "\002\005\001\023\003\105\007\065\016"},
+    {0x1EDF, "\002\004\001\023\003\105\007\065\016"},
+    {0x1EE0, "\002\005\001\023\003\105\007\042"},
+    {0x1EE1, "\002\004\001\023\003\105\007\042"},
     {0x1EE4, "\002\005\001\024\003\015\020"},
     {0x1EE5, "\002\004\001\024\003\015\020"},
     {0x1EE6, "\002\005\001\024\003\065\016"},
     {0x1EE7, "\002\004\001\024\003\065\016"},
-    {0x1EE8, "\002\005\001\024\003\107\007\013"},
-    {0x1EE9, "\002\004\001\024\003\107\007\013"},
-    {0x1EEA, "\002\005\001\024\003\107\007\047"},
-    {0x1EEB, "\002\004\001\024\003\107\007\047"},
-    {0x1EEC, "\002\005\001\024\003\107\007\065\016"},
-    {0x1EED, "\002\004\001\024\003\107\007\065\016"},
-    {0x1EEE, "\002\005\001\024\003\107\007\043"},
-    {0x1EEF, "\002\004\001\024\003\107\007\043"},
-    {0x1EF2, "\002\005\001\104\003\047"},
-    {0x1EF3, "\002\004\001\104\003\047"},
-    {0x1EF4, "\002\005\001\104\003\015\020"},
-    {0x1EF5, "\002\004\001\104\003\015\020"},
-    {0x1EF6, "\002\005\001\104\003\065\016"},
-    {0x1EF7, "\002\004\001\104\003\065\016"},
-    {0x1EF8, "\002\005\001\104\003\043"},
-    {0x1EF9, "\002\004\001\104\003\043"},
+    {0x1EE8, "\002\005\001\024\003\105\007\013"},
+    {0x1EE9, "\002\004\001\024\003\105\007\013"},
+    {0x1EEA, "\002\005\001\024\003\105\007\047"},
+    {0x1EEB, "\002\004\001\024\003\105\007\047"},
+    {0x1EEC, "\002\005\001\024\003\105\007\065\016"},
+    {0x1EED, "\002\004\001\024\003\105\007\065\016"},
+    {0x1EEE, "\002\005\001\024\003\105\007\042"},
+    {0x1EEF, "\002\004\001\024\003\105\007\042"},
+    {0x1EF2, "\002\005\001\102\003\047"},
+    {0x1EF3, "\002\004\001\102\003\047"},
+    {0x1EF4, "\002\005\001\102\003\015\020"},
+    {0x1EF5, "\002\004\001\102\003\015\020"},
+    {0x1EF6, "\002\005\001\102\003\065\016"},
+    {0x1EF7, "\002\004\001\102\003\065\016"},
+    {0x1EF8, "\002\005\001\102\003\042"},
+    {0x1EF9, "\002\004\001\102\003\042"},
     {0x1FBF, "\012\252\322\343\376\034"},
     {0x1FC0, "\012\320\341\376\031"},
     {0x1FC1, "\012\037\007\320"},
     {0x1FCD, "\012\252\007\334"},
-    {0x1FCE, "\012\252\007\013\150"},
+    {0x1FCE, "\012\252\007\013\147"},
     {0x1FCF, "\012\252\007\320"},
     {0x1FDD, "\012\231\007\334"},
-    {0x1FDE, "\012\231\007\013\150"},
+    {0x1FDE, "\012\231\007\013\147"},
     {0x1FDF, "\012\231\007\320"},
     {0x1FED, "\012\037\007\334"},
     {0x1FEF, "\012\334\341\376\030"},
     {0x1FFE, "\012\231\322\343\376\057"},
-    {0x2002, "\233\147"},
-    {0x2003, "\276\147"},
-    {0x2004, "\377\013\147"},
-    {0x2005, "\376\203\147"},
-    {0x2006, "\376\354\147"},
-    {0x2009, "\377\006\147"},
-    {0x200A, "\376\214\147"},
+    {0x2002, "\233\146"},
+    {0x2003, "\276\146"},
+    {0x2004, "\377\013\146"},
+    {0x2005, "\376\203\146"},
+    {0x2006, "\376\354\146"},
+    {0x2009, "\377\006\146"},
+    {0x200A, "\376\214\146"},
     {0x2010, "\375\133"},
-    {0x2013, "\233\143"},
-    {0x2014, "\276\143"},
+    {0x2013, "\233\142"},
+    {0x2014, "\276\142"},
     {0x2015, "\066\375\040"},
     {0x2016, "\064\063\052"},
     {0x2017, "\064\312\052"},
-    {0x2018, "\034\175\141\046"},
-    {0x2019, "\035\175\141\046"},
-    {0x201A, "\175\375\153\141\046"},
-    {0x201B, "\175\375\130\141\046"},
-    {0x201C, "\034\064\141\046"},
-    {0x201D, "\035\064\141\046"},
-    {0x201E, "\064\375\153\141\046"},
-    {0x201F, "\064\375\130\141\046"},
+    {0x2018, "\034\175\140\046"},
+    {0x2019, "\035\175\140\046"},
+    {0x201A, "\175\375\153\140\046"},
+    {0x201B, "\175\375\130\140\046"},
+    {0x201C, "\034\064\140\046"},
+    {0x201D, "\035\064\140\046"},
+    {0x201E, "\064\375\153\140\046"},
+    {0x201F, "\064\375\130\140\046"},
     {0x2020, "\375\065"},
     {0x2021, "\064\375\065"},
-    {0x2025, "\126\015\376\243"},
+    {0x2025, "\125\015\376\243"},
     {0x2026, "\376\254\066\375\103"},
     {0x2030, "\376\304\376\255\036"},
     {0x2032, "\217"},
@@ -1809,45 +1809,45 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2036, "\324\064\217"},
     {0x2037, "\324\221\217"},
     {0x2038, "\376\117"},
-    {0x2039, "\175\245\153\141\046"},
-    {0x203A, "\175\254\153\141\046"},
+    {0x2039, "\175\245\152\140\046"},
+    {0x203A, "\175\254\152\140\046"},
     {0x203B, "\376\336\046"},
     {0x203C, "\064\360\046"},
     {0x203E, "\376\300"},
-    {0x2044, "\123\376\361"},
-    {0x2070, "\121\025\225"},
-    {0x2074, "\121\025\145"},
-    {0x2075, "\121\025\144"},
-    {0x2076, "\121\025\165"},
-    {0x2077, "\121\025\151"},
-    {0x2078, "\121\025\156"},
-    {0x2079, "\121\025\163"},
-    {0x207A, "\121\375\002\036"},
-    {0x207B, "\121\372"},
-    {0x207C, "\121\356\036"},
-    {0x207D, "\121\034\215"},
-    {0x207E, "\121\035\215"},
-    {0x207F, "\121\002\004\001\061"},
-    {0x2080, "\130\025\225"},
-    {0x2081, "\130\025\117"},
-    {0x2082, "\130\025\126"},
-    {0x2083, "\130\025\131"},
-    {0x2084, "\130\025\145"},
-    {0x2085, "\130\025\144"},
-    {0x2086, "\130\025\165"},
-    {0x2087, "\130\025\151"},
-    {0x2088, "\130\025\156"},
-    {0x2089, "\130\025\163"},
-    {0x208A, "\130\375\002\036"},
-    {0x208B, "\130\372"},
-    {0x208C, "\130\356\036"},
-    {0x208D, "\130\034\215"},
-    {0x208E, "\130\035\215"},
+    {0x2044, "\122\376\361"},
+    {0x2070, "\120\025\225"},
+    {0x2074, "\120\025\144"},
+    {0x2075, "\120\025\143"},
+    {0x2076, "\120\025\165"},
+    {0x2077, "\120\025\150"},
+    {0x2078, "\120\025\155"},
+    {0x2079, "\120\025\162"},
+    {0x207A, "\120\375\002\036"},
+    {0x207B, "\120\372"},
+    {0x207C, "\120\356\036"},
+    {0x207D, "\120\034\215"},
+    {0x207E, "\120\035\215"},
+    {0x207F, "\120\002\004\001\061"},
+    {0x2080, "\127\025\225"},
+    {0x2081, "\127\025\115"},
+    {0x2082, "\127\025\125"},
+    {0x2083, "\127\025\130"},
+    {0x2084, "\127\025\144"},
+    {0x2085, "\127\025\143"},
+    {0x2086, "\127\025\165"},
+    {0x2087, "\127\025\150"},
+    {0x2088, "\127\025\155"},
+    {0x2089, "\127\025\162"},
+    {0x208A, "\127\375\002\036"},
+    {0x208B, "\127\372"},
+    {0x208C, "\127\356\036"},
+    {0x208D, "\127\034\215"},
+    {0x208E, "\127\035\215"},
     {0x20A4, "\376\244\036"},
     {0x20A7, "\376\310\036"},
     {0x20A9, "\377\033\036"},
     {0x2103, "\350\376\122"},
-    {0x2105, "\376\116\112"},
+    {0x2105, "\376\116\110"},
     {0x2109, "\350\376\163"},
     {0x2116, "\376\270\036"},
     {0x2117, "\330\376\335\375\061"},
@@ -1856,79 +1856,79 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2122, "\377\015\046\036"},
     {0x2126, "\376\272\036"},
     {0x212B, "\376\071\036"},
-    {0x2153, "\132\123\117\377\007"},
-    {0x2154, "\132\123\126\377\010"},
-    {0x2155, "\132\123\117\376\175"},
-    {0x2156, "\132\123\126\362"},
-    {0x2157, "\132\123\131\362"},
-    {0x2158, "\132\123\145\362"},
-    {0x2159, "\132\123\117\376\357"},
-    {0x215A, "\132\123\144\376\360"},
-    {0x215B, "\132\123\117\352"},
-    {0x215C, "\132\123\131\353"},
-    {0x215D, "\132\123\144\353"},
-    {0x215E, "\132\123\151\353"},
-    {0x2160, "\062\055\117"},
-    {0x2161, "\062\055\126"},
-    {0x2162, "\062\055\131"},
-    {0x2163, "\062\055\145"},
-    {0x2164, "\062\055\144"},
+    {0x2153, "\131\122\115\377\007"},
+    {0x2154, "\131\122\125\377\010"},
+    {0x2155, "\131\122\115\376\175"},
+    {0x2156, "\131\122\125\362"},
+    {0x2157, "\131\122\130\362"},
+    {0x2158, "\131\122\144\362"},
+    {0x2159, "\131\122\115\376\357"},
+    {0x215A, "\131\122\143\376\360"},
+    {0x215B, "\131\122\115\352"},
+    {0x215C, "\131\122\130\353"},
+    {0x215D, "\131\122\143\353"},
+    {0x215E, "\131\122\150\353"},
+    {0x2160, "\062\055\115"},
+    {0x2161, "\062\055\125"},
+    {0x2162, "\062\055\130"},
+    {0x2163, "\062\055\144"},
+    {0x2164, "\062\055\143"},
     {0x2165, "\062\055\165"},
-    {0x2166, "\062\055\151"},
-    {0x2167, "\062\055\156"},
-    {0x2168, "\062\055\163"},
+    {0x2166, "\062\055\150"},
+    {0x2167, "\062\055\155"},
+    {0x2168, "\062\055\162"},
     {0x2169, "\062\055\332"},
     {0x216A, "\062\055\354"},
     {0x216B, "\062\055\375\015"},
     {0x216C, "\062\055\375\110"},
-    {0x2170, "\004\062\055\117"},
-    {0x2171, "\004\062\055\126"},
-    {0x2172, "\004\062\055\131"},
-    {0x2173, "\004\062\055\145"},
-    {0x2174, "\004\062\055\144"},
+    {0x2170, "\004\062\055\115"},
+    {0x2171, "\004\062\055\125"},
+    {0x2172, "\004\062\055\130"},
+    {0x2173, "\004\062\055\144"},
+    {0x2174, "\004\062\055\143"},
     {0x2175, "\004\062\055\165"},
-    {0x2176, "\004\062\055\151"},
-    {0x2177, "\004\062\055\156"},
-    {0x2178, "\004\062\055\163"},
+    {0x2176, "\004\062\055\150"},
+    {0x2177, "\004\062\055\155"},
+    {0x2178, "\004\062\055\162"},
     {0x2179, "\004\062\055\332"},
     {0x217A, "\004\062\055\354"},
     {0x217B, "\004\062\055\375\015"},
     {0x217C, "\004\062\055\375\110"},
-    {0x2190, "\375\150\136"},
-    {0x2191, "\377\022\136"},
-    {0x2192, "\375\005\136"},
-    {0x2193, "\376\152\136"},
-    {0x2194, "\034\035\136"},
-    {0x2195, "\053\054\136"},
-    {0x2196, "\375\173\375\271\136"},
-    {0x2197, "\375\173\375\100\136"},
-    {0x2198, "\375\241\375\100\136"},
-    {0x2199, "\375\241\375\271\136"},
+    {0x2190, "\375\150\135"},
+    {0x2191, "\377\022\135"},
+    {0x2192, "\375\005\135"},
+    {0x2193, "\376\152\135"},
+    {0x2194, "\034\035\135"},
+    {0x2195, "\053\054\135"},
+    {0x2196, "\375\173\375\271\135"},
+    {0x2197, "\375\173\375\100\135"},
+    {0x2198, "\375\241\375\100\135"},
+    {0x2199, "\375\241\375\271\135"},
     {0x21C0, "\375\005\377\025\016\341\376\027"},
-    {0x21D0, "\375\150\064\136"},
-    {0x21D2, "\375\005\064\136"},
-    {0x21D4, "\034\035\064\136"},
+    {0x21D0, "\375\150\064\135"},
+    {0x21D2, "\375\005\064\135"},
+    {0x21D4, "\034\035\064\135"},
     {0x2200, "\376\201\375\033"},
     {0x2202, "\375\001\376\146"},
     {0x2203, "\377\004\376\162"},
     {0x2205, "\376\160\326"},
     {0x2206, "\376\227"},
     {0x2207, "\376\261"},
-    {0x2208, "\376\157\112"},
+    {0x2208, "\376\157\110"},
     {0x220B, "\376\131\376\075\376\252"},
     {0x220F, "\375\165\376\322"},
     {0x2211, "\375\165\376\367"},
     {0x2212, "\372\036"},
     {0x2213, "\376\256\036"},
     {0x2217, "\375\036\203"},
-    {0x2218, "\142\203"},
+    {0x2218, "\141\203"},
     {0x2219, "\375\047\203"},
-    {0x221A, "\127\376\342"},
-    {0x221D, "\376\326\113"},
+    {0x221A, "\126\376\342"},
+    {0x221D, "\376\326\111"},
     {0x221E, "\376\230"},
-    {0x221F, "\035\153"},
-    {0x2220, "\153"},
-    {0x2225, "\376\302\113"},
+    {0x221F, "\035\152"},
+    {0x2220, "\152"},
+    {0x2225, "\376\302\111"},
     {0x2227, "\375\152\007"},
     {0x2228, "\375\152\214"},
     {0x2229, "\376\231"},
@@ -1940,27 +1940,27 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2235, "\376\106"},
     {0x2236, "\376\331"},
     {0x2237, "\376\325"},
-    {0x223C, "\043\203"},
+    {0x223C, "\042\203"},
     {0x223E, "\306\376\242\070"},
-    {0x2243, "\376\076\157\113"},
-    {0x2245, "\375\035\157\113"},
-    {0x2248, "\376\064\157\113"},
-    {0x224C, "\375\033\157\113"},
-    {0x2253, "\376\225\112\214\375\035\157\113"},
-    {0x2260, "\251\157\113"},
-    {0x2261, "\376\222\113"},
-    {0x2264, "\311\214\157\113"},
-    {0x2265, "\303\214\157\113"},
+    {0x2243, "\376\076\156\111"},
+    {0x2245, "\375\035\156\111"},
+    {0x2248, "\376\064\156\111"},
+    {0x224C, "\375\033\156\111"},
+    {0x2253, "\376\225\110\214\375\035\156\111"},
+    {0x2260, "\251\156\111"},
+    {0x2261, "\376\222\111"},
+    {0x2264, "\311\214\156\111"},
+    {0x2265, "\303\214\156\111"},
     {0x226A, "\375\164\311"},
     {0x226B, "\375\164\303"},
     {0x226E, "\251\311"},
     {0x226F, "\251\303"},
-    {0x2282, "\375\246\112"},
-    {0x2283, "\375\247\112"},
-    {0x2286, "\375\246\112\214\157\113"},
-    {0x2287, "\375\247\112\214\157\113"},
+    {0x2282, "\375\246\110"},
+    {0x2283, "\375\247\110"},
+    {0x2286, "\375\246\110\214\156\111"},
+    {0x2287, "\375\247\110\214\156\111"},
     {0x2299, "\026\015\203"},
-    {0x229A, "\026\142\203"},
+    {0x229A, "\026\141\203"},
     {0x22A5, "\053\376\374"},
     {0x22C5, "\015\203"},
     {0x22EE, "\063\375\103"},
@@ -1972,146 +1972,146 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2310, "\324\251\036"},
     {0x2312, "\376\074"},
     {0x2315, "\375\013\376\334"},
-    {0x2320, "\377\014\160\240"},
-    {0x2321, "\376\111\160\240"},
-    {0x2329, "\245\153\114"},
-    {0x232A, "\254\153\114"},
+    {0x2320, "\377\014\157\240"},
+    {0x2321, "\376\111\157\240"},
+    {0x2329, "\245\152\112"},
+    {0x232A, "\254\152\112"},
     {0x2423, "\376\273\021"},
     {0x2440, "\174\065"},
     {0x2441, "\174\376\124"},
     {0x2442, "\174\375\113"},
     {0x2443, "\174\306\375\113"},
     {0x2446, "\174\376\112\376\105\376\223"},
-    {0x2447, "\174\376\065\112\375\054"},
-    {0x2448, "\174\143"},
-    {0x2449, "\174\376\136\376\061\134"},
-    {0x2460, "\026\025\117"},
-    {0x2461, "\026\025\126"},
-    {0x2462, "\026\025\131"},
-    {0x2463, "\026\025\145"},
-    {0x2464, "\026\025\144"},
+    {0x2447, "\174\376\065\110\375\054"},
+    {0x2448, "\174\142"},
+    {0x2449, "\174\376\136\376\061\133"},
+    {0x2460, "\026\025\115"},
+    {0x2461, "\026\025\125"},
+    {0x2462, "\026\025\130"},
+    {0x2463, "\026\025\144"},
+    {0x2464, "\026\025\143"},
     {0x2465, "\026\025\165"},
-    {0x2466, "\026\025\151"},
-    {0x2467, "\026\025\156"},
-    {0x2468, "\026\025\163"},
-    {0x2474, "\040\025\117"},
-    {0x2475, "\040\025\126"},
-    {0x2476, "\040\025\131"},
-    {0x2477, "\040\025\145"},
-    {0x2478, "\040\025\144"},
+    {0x2466, "\026\025\150"},
+    {0x2467, "\026\025\155"},
+    {0x2468, "\026\025\162"},
+    {0x2474, "\040\025\115"},
+    {0x2475, "\040\025\125"},
+    {0x2476, "\040\025\130"},
+    {0x2477, "\040\025\144"},
+    {0x2478, "\040\025\143"},
     {0x2479, "\040\025\165"},
-    {0x247A, "\040\025\151"},
-    {0x247B, "\040\025\156"},
-    {0x247C, "\040\025\163"},
-    {0x2488, "\025\117\074\103"},
-    {0x2489, "\025\126\074\103"},
-    {0x248A, "\025\131\074\103"},
-    {0x248B, "\025\145\074\103"},
-    {0x248C, "\025\144\074\103"},
-    {0x248D, "\025\165\074\103"},
-    {0x248E, "\025\151\074\103"},
-    {0x248F, "\025\156\074\103"},
-    {0x2490, "\025\163\074\103"},
-    {0x2491, "\134\332\074\103"},
-    {0x2492, "\134\354\074\103"},
-    {0x2493, "\134\375\015\074\103"},
-    {0x2494, "\134\377\011\074\103"},
-    {0x2495, "\134\376\204\074\103"},
-    {0x2496, "\134\376\174\074\103"},
-    {0x2497, "\134\376\355\074\103"},
-    {0x2498, "\134\376\351\074\103"},
-    {0x2499, "\134\376\156\074\103"},
-    {0x249A, "\134\376\265\074\103"},
-    {0x249B, "\134\377\017\074\103"},
+    {0x247A, "\040\025\150"},
+    {0x247B, "\040\025\155"},
+    {0x247C, "\040\025\162"},
+    {0x2488, "\025\115\074\101"},
+    {0x2489, "\025\125\074\101"},
+    {0x248A, "\025\130\074\101"},
+    {0x248B, "\025\144\074\101"},
+    {0x248C, "\025\143\074\101"},
+    {0x248D, "\025\165\074\101"},
+    {0x248E, "\025\150\074\101"},
+    {0x248F, "\025\155\074\101"},
+    {0x2490, "\025\162\074\101"},
+    {0x2491, "\133\332\074\101"},
+    {0x2492, "\133\354\074\101"},
+    {0x2493, "\133\375\015\074\101"},
+    {0x2494, "\133\377\011\074\101"},
+    {0x2495, "\133\376\204\074\101"},
+    {0x2496, "\133\376\174\074\101"},
+    {0x2497, "\133\376\355\074\101"},
+    {0x2498, "\133\376\351\074\101"},
+    {0x2499, "\133\376\156\074\101"},
+    {0x249A, "\133\376\265\074\101"},
+    {0x249B, "\133\377\017\074\101"},
     {0x249C, "\040\002\004\001\030"},
-    {0x249D, "\040\002\004\001\137"},
-    {0x249E, "\040\002\004\001\115"},
-    {0x249F, "\040\002\004\001\105"},
+    {0x249D, "\040\002\004\001\136"},
+    {0x249E, "\040\002\004\001\113"},
+    {0x249F, "\040\002\004\001\103"},
     {0x24A0, "\040\002\004\001\033"},
     {0x24A1, "\040\002\004\001\172"},
     {0x24A2, "\040\002\004\001\075"},
-    {0x24A3, "\040\002\004\001\106"},
+    {0x24A3, "\040\002\004\001\104"},
     {0x24A4, "\040\002\004\001\041"},
     {0x24A5, "\040\002\004\001\171"},
-    {0x24A6, "\040\002\004\001\124"},
+    {0x24A6, "\040\002\004\001\123"},
     {0x24A7, "\040\002\004\001\077"},
-    {0x24A8, "\040\002\004\001\146"},
+    {0x24A8, "\040\002\004\001\145"},
     {0x24A9, "\040\002\004\001\061"},
     {0x24AA, "\040\002\004\001\023"},
-    {0x24AB, "\040\002\004\001\164"},
+    {0x24AB, "\040\002\004\001\163"},
     {0x24AC, "\040\002\004\001\220"},
-    {0x24AD, "\040\002\004\001\120"},
+    {0x24AD, "\040\002\004\001\116"},
     {0x24AE, "\040\002\004\001\070"},
-    {0x24AF, "\040\002\004\001\110"},
+    {0x24AF, "\040\002\004\001\106"},
     {0x24B0, "\040\002\004\001\024"},
     {0x24B1, "\040\002\004\001\167"},
-    {0x24B2, "\040\002\004\001\122"},
-    {0x24B3, "\040\002\004\001\152"},
-    {0x24B4, "\040\002\004\001\104"},
-    {0x24B5, "\040\002\004\001\111"},
+    {0x24B2, "\040\002\004\001\121"},
+    {0x24B3, "\040\002\004\001\151"},
+    {0x24B4, "\040\002\004\001\102"},
+    {0x24B5, "\040\002\004\001\107"},
     {0x24B6, "\026\002\005\001\030"},
-    {0x24B7, "\026\002\005\001\137"},
-    {0x24B8, "\026\002\005\001\115"},
-    {0x24B9, "\026\002\005\001\105"},
+    {0x24B7, "\026\002\005\001\136"},
+    {0x24B8, "\026\002\005\001\113"},
+    {0x24B9, "\026\002\005\001\103"},
     {0x24BA, "\026\002\005\001\033"},
     {0x24BB, "\026\002\005\001\172"},
     {0x24BC, "\026\002\005\001\075"},
-    {0x24BD, "\026\002\005\001\106"},
+    {0x24BD, "\026\002\005\001\104"},
     {0x24BE, "\026\002\005\001\041"},
     {0x24BF, "\026\002\005\001\171"},
-    {0x24C0, "\026\002\005\001\124"},
+    {0x24C0, "\026\002\005\001\123"},
     {0x24C1, "\026\002\005\001\077"},
-    {0x24C2, "\026\002\005\001\146"},
+    {0x24C2, "\026\002\005\001\145"},
     {0x24C3, "\026\002\005\001\061"},
     {0x24C4, "\026\002\005\001\023"},
-    {0x24C5, "\026\002\005\001\164"},
+    {0x24C5, "\026\002\005\001\163"},
     {0x24C6, "\026\002\005\001\220"},
-    {0x24C7, "\026\002\005\001\120"},
+    {0x24C7, "\026\002\005\001\116"},
     {0x24C8, "\026\002\005\001\070"},
-    {0x24C9, "\026\002\005\001\110"},
+    {0x24C9, "\026\002\005\001\106"},
     {0x24CA, "\026\002\005\001\024"},
     {0x24CB, "\026\002\005\001\167"},
-    {0x24CC, "\026\002\005\001\122"},
-    {0x24CD, "\026\002\005\001\152"},
-    {0x24CE, "\026\002\005\001\104"},
-    {0x24CF, "\026\002\005\001\111"},
+    {0x24CC, "\026\002\005\001\121"},
+    {0x24CD, "\026\002\005\001\151"},
+    {0x24CE, "\026\002\005\001\102"},
+    {0x24CF, "\026\002\005\001\107"},
     {0x24D0, "\026\002\004\001\030"},
-    {0x24D1, "\026\002\004\001\137"},
-    {0x24D2, "\026\002\004\001\115"},
-    {0x24D3, "\026\002\004\001\105"},
+    {0x24D1, "\026\002\004\001\136"},
+    {0x24D2, "\026\002\004\001\113"},
+    {0x24D3, "\026\002\004\001\103"},
     {0x24D4, "\026\002\004\001\033"},
     {0x24D5, "\026\002\004\001\172"},
     {0x24D6, "\026\002\004\001\075"},
-    {0x24D7, "\026\002\004\001\106"},
+    {0x24D7, "\026\002\004\001\104"},
     {0x24D8, "\026\002\004\001\041"},
     {0x24D9, "\026\002\004\001\171"},
-    {0x24DA, "\026\002\004\001\124"},
+    {0x24DA, "\026\002\004\001\123"},
     {0x24DB, "\026\002\004\001\077"},
-    {0x24DC, "\026\002\004\001\146"},
+    {0x24DC, "\026\002\004\001\145"},
     {0x24DD, "\026\002\004\001\061"},
     {0x24DE, "\026\002\004\001\023"},
-    {0x24DF, "\026\002\004\001\164"},
+    {0x24DF, "\026\002\004\001\163"},
     {0x24E0, "\026\002\004\001\220"},
-    {0x24E1, "\026\002\004\001\120"},
+    {0x24E1, "\026\002\004\001\116"},
     {0x24E2, "\026\002\004\001\070"},
-    {0x24E3, "\026\002\004\001\110"},
+    {0x24E3, "\026\002\004\001\106"},
     {0x24E4, "\026\002\004\001\024"},
     {0x24E5, "\026\002\004\001\167"},
-    {0x24E6, "\026\002\004\001\122"},
-    {0x24E7, "\026\002\004\001\152"},
-    {0x24E8, "\026\002\004\001\104"},
-    {0x24E9, "\026\002\004\001\111"},
+    {0x24E6, "\026\002\004\001\121"},
+    {0x24E7, "\026\002\004\001\151"},
+    {0x24E8, "\026\002\004\001\102"},
+    {0x24E9, "\026\002\004\001\107"},
     {0x24EA, "\026\025\225"},
     {0x2500, "\021\022\031\066"},
     {0x2502, "\021\022\031\063"},
-    {0x2504, "\021\022\031\221\143\066"},
-    {0x2505, "\021\022\032\221\143\066"},
-    {0x2506, "\021\022\031\221\143\063"},
-    {0x2507, "\021\022\032\221\143\063"},
-    {0x2508, "\021\022\031\323\143\066"},
-    {0x2509, "\021\022\032\323\143\066"},
-    {0x250A, "\021\022\031\323\143\063"},
-    {0x250B, "\021\022\032\323\143\063"},
+    {0x2504, "\021\022\031\221\142\066"},
+    {0x2505, "\021\022\032\221\142\066"},
+    {0x2506, "\021\022\031\221\142\063"},
+    {0x2507, "\021\022\032\221\142\063"},
+    {0x2508, "\021\022\031\323\142\066"},
+    {0x2509, "\021\022\032\323\142\066"},
+    {0x250A, "\021\022\031\323\142\063"},
+    {0x250B, "\021\022\032\323\142\063"},
     {0x250C, "\021\022\031\054\007\035"},
     {0x2510, "\021\022\031\054\007\034"},
     {0x2514, "\021\022\031\053\007\035"},
@@ -2174,27 +2174,27 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x256A, "\021\022\063\031\007\066\032"},
     {0x256B, "\021\022\063\032\007\066\031"},
     {0x256C, "\021\022\032\063\007\066"},
-    {0x2571, "\021\022\031\351\264\035\113\173\034"},
-    {0x2572, "\021\022\031\351\264\034\113\173\035"},
-    {0x2580, "\264\160\207"},
-    {0x2584, "\173\160\207"},
+    {0x2571, "\021\022\031\351\264\035\111\173\034"},
+    {0x2572, "\021\022\031\351\264\034\111\173\035"},
+    {0x2580, "\264\157\207"},
+    {0x2584, "\173\157\207"},
     {0x2588, "\074\207"},
-    {0x258C, "\034\160\207"},
-    {0x2590, "\035\160\207"},
+    {0x258C, "\034\157\207"},
+    {0x2590, "\035\157\207"},
     {0x2591, "\031\375\006"},
     {0x2592, "\375\156\375\006"},
     {0x2593, "\376\142\375\006"},
-    {0x25A0, "\071\127"},
-    {0x25A1, "\067\127"},
-    {0x25A2, "\067\127\003\376\343\376\133"},
-    {0x25A3, "\067\127\376\130\071\004\127"},
-    {0x25A4, "\127\003\066\213"},
-    {0x25A5, "\127\003\063\213"},
-    {0x25A6, "\127\003\376\275\375\062\213"},
-    {0x25A7, "\127\003\264\034\113\173\035\213"},
-    {0x25A8, "\127\003\264\035\113\173\034\213"},
-    {0x25A9, "\127\003\351\375\062\213"},
-    {0x25AA, "\071\004\127"},
+    {0x25A0, "\071\126"},
+    {0x25A1, "\067\126"},
+    {0x25A2, "\067\126\003\376\343\376\133"},
+    {0x25A3, "\067\126\376\130\071\004\126"},
+    {0x25A4, "\126\003\066\213"},
+    {0x25A5, "\126\003\063\213"},
+    {0x25A6, "\126\003\376\275\375\062\213"},
+    {0x25A7, "\126\003\264\034\111\173\035\213"},
+    {0x25A8, "\126\003\264\035\111\173\034\213"},
+    {0x25A9, "\126\003\351\375\062\213"},
+    {0x25AA, "\071\004\126"},
     {0x25AC, "\071\375\214"},
     {0x25AD, "\067\375\214"},
     {0x25B2, "\071\375\264\166"},
@@ -2211,8 +2211,8 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x25CB, "\067\210"},
     {0x25CE, "\376\114"},
     {0x25CF, "\071\210"},
-    {0x25D0, "\210\003\034\160\071"},
-    {0x25D1, "\210\003\035\160\071"},
+    {0x25D0, "\210\003\034\157\071"},
+    {0x25D1, "\210\003\035\157\071"},
     {0x25D8, "\375\136\375\047"},
     {0x25D9, "\375\136\067\210"},
     {0x25E2, "\071\173\035\166"},
@@ -2245,30 +2245,30 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x266E, "\373\376\262\036"},
     {0x266F, "\373\375\231\036"},
     {0x2713, "\375\054\046"},
-    {0x2717, "\376\104\152"},
+    {0x2717, "\376\104\151"},
     {0x2720, "\376\250\376\134"},
-    {0x3000, "\201\147"},
+    {0x3000, "\201\146"},
     {0x3001, "\201\346"},
     {0x3002, "\201\376\306"},
     {0x3003, "\375\071\046"},
     {0x3005, "\201\241\046"},
     {0x3006, "\201\376\125\046"},
-    {0x3007, "\201\134\225"},
-    {0x300A, "\034\064\153\114"},
-    {0x300B, "\035\064\153\114"},
-    {0x300C, "\034\273\114"},
-    {0x300D, "\035\273\114"},
-    {0x300E, "\034\067\273\114"},
-    {0x300F, "\035\067\273\114"},
-    {0x3010, "\034\071\310\114"},
-    {0x3011, "\035\071\310\114"},
+    {0x3007, "\201\133\225"},
+    {0x300A, "\034\064\152\112"},
+    {0x300B, "\035\064\152\112"},
+    {0x300C, "\034\273\112"},
+    {0x300D, "\035\273\112"},
+    {0x300E, "\034\067\273\112"},
+    {0x300F, "\035\067\273\112"},
+    {0x3010, "\034\071\310\112"},
+    {0x3011, "\035\071\310\112"},
     {0x3012, "\376\314\046"},
     {0x3013, "\376\206\046"},
-    {0x3014, "\034\375\256\375\233\114"},
-    {0x3015, "\035\375\256\375\233\114"},
-    {0x3016, "\034\067\310\114"},
-    {0x3017, "\035\067\310\114"},
-    {0x301C, "\377\032\143"},
+    {0x3014, "\034\375\256\375\233\112"},
+    {0x3015, "\035\375\256\375\233\112"},
+    {0x3016, "\034\067\310\112"},
+    {0x3017, "\035\067\310\112"},
+    {0x301C, "\377\032\142"},
     {0x3041, "\017\001\004\030"},
     {0x3042, "\017\001\030"},
     {0x3043, "\017\001\004\041"},
@@ -2308,7 +2308,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x3065, "\017\001\375\075"},
     {0x3066, "\017\001\331"},
     {0x3067, "\017\001\274"},
-    {0x3068, "\017\001\113"},
+    {0x3068, "\017\001\111"},
     {0x3069, "\017\001\375\073"},
     {0x306A, "\017\001\375\166"},
     {0x306B, "\017\001\375\171"},
@@ -2396,7 +2396,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x30C5, "\014\001\375\075"},
     {0x30C6, "\014\001\331"},
     {0x30C7, "\014\001\274"},
-    {0x30C8, "\014\001\113"},
+    {0x30C8, "\014\001\111"},
     {0x30C9, "\014\001\375\073"},
     {0x30CA, "\014\001\375\166"},
     {0x30CB, "\014\001\375\171"},
@@ -2451,210 +2451,210 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x30FC, "\366\376\324\330\046"},
     {0x30FD, "\014\241\046"},
     {0x30FE, "\014\375\020\241\046"},
-    {0x3105, "\044\001\137"},
-    {0x3106, "\044\001\164"},
-    {0x3107, "\044\001\146"},
-    {0x3108, "\044\001\172"},
-    {0x3109, "\044\001\105"},
-    {0x310A, "\044\001\110"},
-    {0x310B, "\044\001\061"},
-    {0x310C, "\044\001\077"},
-    {0x310D, "\044\001\075"},
-    {0x310E, "\044\001\124"},
-    {0x310F, "\044\001\106"},
-    {0x3110, "\044\001\171"},
-    {0x3111, "\044\001\220"},
-    {0x3112, "\044\001\152"},
-    {0x3113, "\044\001\377\040"},
-    {0x3114, "\044\001\376\123"},
-    {0x3115, "\044\001\376\352"},
-    {0x3116, "\044\001\120"},
-    {0x3117, "\044\001\111"},
-    {0x3118, "\044\001\115"},
-    {0x3119, "\044\001\070"},
-    {0x311A, "\044\001\030"},
-    {0x311B, "\044\001\023"},
-    {0x311C, "\044\001\033"},
-    {0x311D, "\044\001\376\154"},
-    {0x311E, "\044\001\376\063"},
-    {0x311F, "\044\001\376\155"},
-    {0x3120, "\044\001\376\100"},
-    {0x3121, "\044\001\376\276"},
-    {0x3122, "\044\001\376\067"},
-    {0x3123, "\044\001\233"},
-    {0x3124, "\044\001\376\070"},
-    {0x3125, "\044\001\355"},
-    {0x3126, "\044\001\357"},
-    {0x3127, "\044\001\041"},
-    {0x3128, "\044\001\024"},
-    {0x3129, "\044\001\376\232"},
-    {0x312A, "\044\001\167"},
-    {0x312B, "\044\001\376\264"},
-    {0x312C, "\044\001\376\210"},
-    {0x3220, "\040\162\117"},
-    {0x3221, "\040\162\126"},
-    {0x3222, "\040\162\131"},
-    {0x3223, "\040\162\145"},
-    {0x3224, "\040\162\144"},
-    {0x3225, "\040\162\165"},
-    {0x3226, "\040\162\151"},
-    {0x3227, "\040\162\156"},
-    {0x3228, "\040\162\163"},
-    {0x3229, "\040\162\332"},
+    {0x3105, "\043\001\136"},
+    {0x3106, "\043\001\163"},
+    {0x3107, "\043\001\145"},
+    {0x3108, "\043\001\172"},
+    {0x3109, "\043\001\103"},
+    {0x310A, "\043\001\106"},
+    {0x310B, "\043\001\061"},
+    {0x310C, "\043\001\077"},
+    {0x310D, "\043\001\075"},
+    {0x310E, "\043\001\123"},
+    {0x310F, "\043\001\104"},
+    {0x3110, "\043\001\171"},
+    {0x3111, "\043\001\220"},
+    {0x3112, "\043\001\151"},
+    {0x3113, "\043\001\377\040"},
+    {0x3114, "\043\001\376\123"},
+    {0x3115, "\043\001\376\352"},
+    {0x3116, "\043\001\116"},
+    {0x3117, "\043\001\107"},
+    {0x3118, "\043\001\113"},
+    {0x3119, "\043\001\070"},
+    {0x311A, "\043\001\030"},
+    {0x311B, "\043\001\023"},
+    {0x311C, "\043\001\033"},
+    {0x311D, "\043\001\376\154"},
+    {0x311E, "\043\001\376\063"},
+    {0x311F, "\043\001\376\155"},
+    {0x3120, "\043\001\376\100"},
+    {0x3121, "\043\001\376\276"},
+    {0x3122, "\043\001\376\067"},
+    {0x3123, "\043\001\233"},
+    {0x3124, "\043\001\376\070"},
+    {0x3125, "\043\001\355"},
+    {0x3126, "\043\001\357"},
+    {0x3127, "\043\001\041"},
+    {0x3128, "\043\001\024"},
+    {0x3129, "\043\001\376\232"},
+    {0x312A, "\043\001\167"},
+    {0x312B, "\043\001\376\264"},
+    {0x312C, "\043\001\376\210"},
+    {0x3220, "\040\161\115"},
+    {0x3221, "\040\161\125"},
+    {0x3222, "\040\161\130"},
+    {0x3223, "\040\161\144"},
+    {0x3224, "\040\161\143"},
+    {0x3225, "\040\161\165"},
+    {0x3226, "\040\161\150"},
+    {0x3227, "\040\161\155"},
+    {0x3228, "\040\161\162"},
+    {0x3229, "\040\161\332"},
     {0x327F, "\376\237\376\363\376\371"},
     {0x33C2, "\376\072\375\160\036\342\376\023"},
     {0x33D8, "\376\313\375\160\036\342\376\024"},
-    {0xE000, "\101\377\020\375\023\375\027\100\102"},
-    {0xE001, "\101\037\003\150\375\357\376\040\100\102"},
-    {0xE002, "\101\047\150\133\376\041\100\102"},
-    {0xE003, "\101\013\150\133\376\042\100\102"},
-    {0xE004, "\101\027\150\133\376\043\100\102"},
-    {0xE005, "\101\043\133\376\044\100\102"},
-    {0xE006, "\101\051\133\376\045\100\102"},
-    {0xE007, "\101\057\133\376\046\100\102"},
-    {0xE008, "\101\015\016\133\376\047\100\102"},
-    {0xE009, "\101\037\133\376\050\100\102"},
-    {0xE00A, "\101\142\016\133\376\051\100\102"},
-    {0xE00B, "\101\060\133\376\052\100\102"},
-    {0xE00C, "\101\312\052\133\375\030\100\102"},
-    {0xE00D, "\101\064\376\062\133\375\030\100\102"},
-    {0xE00E, "\101\135\133\375\031\100\102"},
-    {0xE00F, "\101\045\133\375\031\100\102"},
-    {0xE010, "\101\064\312\052\375\023\376\053\100\102"},
-    {0xE011, "\101\376\245\375\011\375\355\375\027\100\102"},
-    {0xE012, "\012\101\252\322\344\376\054\100\102"},
-    {0xE013, "\012\101\231\322\344\376\055\100\102"},
-    {0xE014, "\012\101\170\020\344\376\056\100\102"},
+    {0xE000, "\100\377\020\375\023\375\027\117\164"},
+    {0xE001, "\100\037\003\147\375\357\376\040"},
+    {0xE002, "\100\047\147\132\376\041\117"},
+    {0xE003, "\100\013\147\132\376\042\117"},
+    {0xE004, "\100\027\147\132\376\043"},
+    {0xE005, "\100\042\132\376\044\117\164"},
+    {0xE006, "\100\050\132\376\045\117\164"},
+    {0xE007, "\100\057\132\376\046\117\164"},
+    {0xE008, "\100\015\016\132\376\047\117\164"},
+    {0xE009, "\100\037\132\376\050\117\164"},
+    {0xE00A, "\100\141\016\132\376\051\117\164"},
+    {0xE00B, "\100\060\132\376\052\117\164"},
+    {0xE00C, "\100\312\052\132\375\030\117"},
+    {0xE00D, "\100\064\376\062\132\375\030\117"},
+    {0xE00E, "\100\134\132\375\031\117\164"},
+    {0xE00F, "\100\045\132\375\031\117\164"},
+    {0xE010, "\100\064\312\052\375\023\376\053\117"},
+    {0xE011, "\100\376\245\375\011\375\355\375\027\117"},
+    {0xE012, "\012\100\252\322\344\376\054"},
+    {0xE013, "\012\100\231\322\344\376\055"},
+    {0xE014, "\012\100\170\020\344\376\056\117"},
     {0xE015, "\201\375\071\046"},
-    {0xE016, "\006\001\073\042\010\375\060\375\347\376\036"},
+    {0xE016, "\006\001\073\044\010\375\060\375\347\376\036"},
     {0xE017, "\377\001\375\060\036\342\376\025"},
-    {0xE018, "\375\016\147\030\375\024\376\032"},
-    {0xE019, "\375\016\147\137\375\024\376\033"},
+    {0xE018, "\375\016\146\030\375\024\376\032"},
+    {0xE019, "\375\016\146\136\375\024\376\033"},
     {0xE01A, "\012\004\001\375\244"},
     {0xE01B, "\012\004\001\375\070"},
     {0xE01C, "\012\004\001\307"},
     {0xE01D, "\012\004\001\375\223"},
     {0xE01F, "\376\153\376\213\036\375\346\376\037"},
     {0xE024, "\376\233\377\012\052\003\375\170\052\375\362"},
-    {0xFB00, "\002\004\116\376\170"},
-    {0xFB01, "\002\004\116\376\173"},
-    {0xFB02, "\002\004\116\376\177"},
-    {0xFB03, "\002\004\116\376\171"},
-    {0xFB04, "\002\004\116\376\172"},
-    {0xFB06, "\002\004\116\376\362"},
+    {0xFB00, "\002\004\114\376\170"},
+    {0xFB01, "\002\004\114\376\173"},
+    {0xFB02, "\002\004\114\376\177"},
+    {0xFB03, "\002\004\114\376\171"},
+    {0xFB04, "\002\004\114\376\172"},
+    {0xFB06, "\002\004\114\376\362"},
     {0xFE7D, "\006\375\230\072\010"},
-    {0xFE82, "\006\001\073\003\313\016\042\010"},
-    {0xFE84, "\006\001\073\003\161\016\042\010"},
-    {0xFE8D, "\006\001\073\050\010"},
-    {0xFE8E, "\006\001\073\042\010"},
-    {0xFE8F, "\006\001\227\050\010"},
-    {0xFE90, "\006\001\227\042\010"},
+    {0xFE82, "\006\001\073\003\313\016\044\010"},
+    {0xFE84, "\006\001\073\003\160\016\044\010"},
+    {0xFE8D, "\006\001\073\051\010"},
+    {0xFE8E, "\006\001\073\044\010"},
+    {0xFE8F, "\006\001\227\051\010"},
+    {0xFE90, "\006\001\227\044\010"},
     {0xFE91, "\006\001\227\076\010"},
     {0xFE92, "\006\001\227\072\010"},
-    {0xFE93, "\006\001\177\371\050\010"},
-    {0xFE94, "\006\001\177\371\042\010"},
-    {0xFE95, "\006\001\177\050\010"},
-    {0xFE96, "\006\001\177\042\010"},
+    {0xFE93, "\006\001\177\371\051\010"},
+    {0xFE94, "\006\001\177\371\044\010"},
+    {0xFE95, "\006\001\177\051\010"},
+    {0xFE96, "\006\001\177\044\010"},
     {0xFE97, "\006\001\177\076\010"},
     {0xFE98, "\006\001\177\072\010"},
-    {0xFE99, "\006\001\263\050\010"},
-    {0xFE9A, "\006\001\263\042\010"},
+    {0xFE99, "\006\001\263\051\010"},
+    {0xFE9A, "\006\001\263\044\010"},
     {0xFE9B, "\006\001\263\076\010"},
     {0xFE9C, "\006\001\263\072\010"},
-    {0xFE9D, "\006\001\242\050\010"},
-    {0xFE9E, "\006\001\242\042\010"},
+    {0xFE9D, "\006\001\242\051\010"},
+    {0xFE9E, "\006\001\242\044\010"},
     {0xFE9F, "\006\001\242\076\010"},
     {0xFEA0, "\006\001\242\072\010"},
-    {0xFEA1, "\006\001\236\050\010"},
-    {0xFEA2, "\006\001\236\042\010"},
+    {0xFEA1, "\006\001\236\051\010"},
+    {0xFEA2, "\006\001\236\044\010"},
     {0xFEA3, "\006\001\236\076\010"},
     {0xFEA4, "\006\001\236\072\010"},
-    {0xFEA5, "\006\001\244\050\010"},
-    {0xFEA6, "\006\001\244\042\010"},
+    {0xFEA5, "\006\001\244\051\010"},
+    {0xFEA6, "\006\001\244\044\010"},
     {0xFEA7, "\006\001\244\076\010"},
     {0xFEA8, "\006\001\244\072\010"},
-    {0xFEA9, "\006\001\347\050\010"},
-    {0xFEAA, "\006\001\347\042\010"},
-    {0xFEAB, "\006\001\375\014\050\010"},
-    {0xFEAC, "\006\001\375\014\042\010"},
-    {0xFEAD, "\006\001\375\004\050\010"},
-    {0xFEAE, "\006\001\375\004\042\010"},
-    {0xFEAF, "\006\001\375\021\050\010"},
-    {0xFEB0, "\006\001\375\021\042\010"},
-    {0xFEB1, "\006\001\256\050\010"},
-    {0xFEB2, "\006\001\256\042\010"},
+    {0xFEA9, "\006\001\347\051\010"},
+    {0xFEAA, "\006\001\347\044\010"},
+    {0xFEAB, "\006\001\375\014\051\010"},
+    {0xFEAC, "\006\001\375\014\044\010"},
+    {0xFEAD, "\006\001\375\004\051\010"},
+    {0xFEAE, "\006\001\375\004\044\010"},
+    {0xFEAF, "\006\001\375\021\051\010"},
+    {0xFEB0, "\006\001\375\021\044\010"},
+    {0xFEB1, "\006\001\256\051\010"},
+    {0xFEB2, "\006\001\256\044\010"},
     {0xFEB3, "\006\001\256\076\010"},
     {0xFEB4, "\006\001\256\072\010"},
-    {0xFEB5, "\006\001\257\050\010"},
-    {0xFEB6, "\006\001\257\042\010"},
+    {0xFEB5, "\006\001\257\051\010"},
+    {0xFEB6, "\006\001\257\044\010"},
     {0xFEB7, "\006\001\257\076\010"},
     {0xFEB8, "\006\001\257\072\010"},
-    {0xFEB9, "\006\001\255\050\010"},
-    {0xFEBA, "\006\001\255\042\010"},
+    {0xFEB9, "\006\001\255\051\010"},
+    {0xFEBA, "\006\001\255\044\010"},
     {0xFEBB, "\006\001\255\076\010"},
     {0xFEBC, "\006\001\255\072\010"},
-    {0xFEBD, "\006\001\230\050\010"},
-    {0xFEBE, "\006\001\230\042\010"},
+    {0xFEBD, "\006\001\230\051\010"},
+    {0xFEBE, "\006\001\230\044\010"},
     {0xFEBF, "\006\001\230\076\010"},
     {0xFEC0, "\006\001\230\072\010"},
-    {0xFEC1, "\006\001\262\050\010"},
-    {0xFEC2, "\006\001\262\042\010"},
+    {0xFEC1, "\006\001\262\051\010"},
+    {0xFEC2, "\006\001\262\044\010"},
     {0xFEC3, "\006\001\262\076\010"},
     {0xFEC4, "\006\001\262\072\010"},
-    {0xFEC5, "\006\001\265\050\010"},
-    {0xFEC6, "\006\001\265\042\010"},
+    {0xFEC5, "\006\001\265\051\010"},
+    {0xFEC6, "\006\001\265\044\010"},
     {0xFEC7, "\006\001\265\076\010"},
     {0xFEC8, "\006\001\265\072\010"},
-    {0xFEC9, "\006\001\226\050\010"},
-    {0xFECA, "\006\001\226\042\010"},
+    {0xFEC9, "\006\001\226\051\010"},
+    {0xFECA, "\006\001\226\044\010"},
     {0xFECB, "\006\001\226\076\010"},
     {0xFECC, "\006\001\226\072\010"},
-    {0xFECD, "\006\001\235\050\010"},
-    {0xFECE, "\006\001\235\042\010"},
+    {0xFECD, "\006\001\235\051\010"},
+    {0xFECE, "\006\001\235\044\010"},
     {0xFECF, "\006\001\235\076\010"},
     {0xFED0, "\006\001\235\072\010"},
-    {0xFED1, "\006\001\234\050\010"},
-    {0xFED2, "\006\001\234\042\010"},
+    {0xFED1, "\006\001\234\051\010"},
+    {0xFED2, "\006\001\234\044\010"},
     {0xFED3, "\006\001\234\076\010"},
     {0xFED4, "\006\001\234\072\010"},
-    {0xFED5, "\006\001\253\050\010"},
-    {0xFED6, "\006\001\253\042\010"},
+    {0xFED5, "\006\001\253\051\010"},
+    {0xFED6, "\006\001\253\044\010"},
     {0xFED7, "\006\001\253\076\010"},
     {0xFED8, "\006\001\253\072\010"},
-    {0xFED9, "\006\001\202\050\010"},
-    {0xFEDA, "\006\001\202\042\010"},
+    {0xFED9, "\006\001\202\051\010"},
+    {0xFEDA, "\006\001\202\044\010"},
     {0xFEDB, "\006\001\202\076\010"},
     {0xFEDC, "\006\001\202\072\010"},
-    {0xFEDD, "\006\001\140\050\010"},
-    {0xFEDE, "\006\001\140\042\010"},
-    {0xFEDF, "\006\001\140\076\010"},
-    {0xFEE0, "\006\001\140\072\010"},
-    {0xFEE1, "\006\001\246\050\010"},
-    {0xFEE2, "\006\001\246\042\010"},
+    {0xFEDD, "\006\001\137\051\010"},
+    {0xFEDE, "\006\001\137\044\010"},
+    {0xFEDF, "\006\001\137\076\010"},
+    {0xFEE0, "\006\001\137\072\010"},
+    {0xFEE1, "\006\001\246\051\010"},
+    {0xFEE2, "\006\001\246\044\010"},
     {0xFEE3, "\006\001\246\076\010"},
     {0xFEE4, "\006\001\246\072\010"},
-    {0xFEE5, "\006\001\250\050\010"},
-    {0xFEE6, "\006\001\250\042\010"},
+    {0xFEE5, "\006\001\250\051\010"},
+    {0xFEE6, "\006\001\250\044\010"},
     {0xFEE7, "\006\001\250\076\010"},
     {0xFEE8, "\006\001\250\072\010"},
-    {0xFEE9, "\006\001\237\050\010"},
-    {0xFEEA, "\006\001\237\042\010"},
+    {0xFEE9, "\006\001\237\051\010"},
+    {0xFEEA, "\006\001\237\044\010"},
     {0xFEEB, "\006\001\237\076\010"},
     {0xFEEC, "\006\001\237\072\010"},
-    {0xFEED, "\006\001\336\050\010"},
-    {0xFEEE, "\006\001\336\042\010"},
-    {0xFEEF, "\006\001\073\370\050\010"},
-    {0xFEF0, "\006\001\073\370\042\010"},
-    {0xFEF1, "\006\001\223\050\010"},
-    {0xFEF2, "\006\001\223\042\010"},
+    {0xFEED, "\006\001\336\051\010"},
+    {0xFEEE, "\006\001\336\044\010"},
+    {0xFEEF, "\006\001\073\370\051\010"},
+    {0xFEF0, "\006\001\073\370\044\010"},
+    {0xFEF1, "\006\001\223\051\010"},
+    {0xFEF2, "\006\001\223\044\010"},
     {0xFEF3, "\006\001\223\076\010"},
     {0xFEF4, "\006\001\223\072\010"},
-    {0xFEF5, "\006\116\140\003\073\003\313\016\050\010"},
-    {0xFEF6, "\006\116\140\003\073\003\313\016\042\010"},
-    {0xFEF7, "\006\116\140\003\073\003\161\016\050\010"},
-    {0xFEF8, "\006\116\140\003\073\003\161\016\042\010"},
-    {0xFEF9, "\006\116\140\003\073\003\161\020\050\010"},
-    {0xFEFA, "\006\116\140\003\073\003\161\020\042\010"},
-    {0xFEFB, "\006\116\140\003\073\050\010"},
-    {0xFEFC, "\006\116\140\003\073\042\010"},
+    {0xFEF5, "\006\114\137\003\073\003\313\016"},
+    {0xFEF6, "\006\114\137\003\073\003\313\016"},
+    {0xFEF7, "\006\114\137\003\073\003\160\016"},
+    {0xFEF8, "\006\114\137\003\073\003\160\016"},
+    {0xFEF9, "\006\114\137\003\073\003\160\020"},
+    {0xFEFA, "\006\114\137\003\073\003\160\020"},
+    {0xFEFB, "\006\114\137\003\073\051\010"},
+    {0xFEFC, "\006\114\137\003\073\044\010"},
   };
index aba871775817fa0162852d0cfabca202ae559391..99d43d70caf0960b1a63157abd946cebbc14fcec 100644 (file)
 
 /* FIXME: Cleanup memory at end of job, and softly report errors.  */
 
-/* Date: 1998-12-11 20:20 -0500
-X-From-Line: recode-forum-owner@IRO.UMontreal.CA  Fri Dec 11 21:22:51 1998
-Return-Path: <recode-forum-owner@iro.umontreal.ca>
-Received: from degusse.IRO.UMontreal.CA (degusse.IRO.UMontreal.CA [132.204.24.51])
-       by lagrande.IRO.UMontreal.CA (8.9.1/8.9.1) with ESMTP id VAA08222
-       for <pinard@lagrande.IRO.UMontreal.CA>; Fri, 11 Dec 1998 21:22:51 -0500 (EST)
-Received: by degusse.IRO.UMontreal.CA (8.9.1/8.9.1) id VAA11542
-       for recode-forum-outgoing; Fri, 11 Dec 1998 21:22:44 -0500 (EST)
-Received: from jupiter.rtsq.qc.ca (rtsq.grics.qc.ca [199.84.132.81])
-       by degusse.IRO.UMontreal.CA (8.9.1/8.9.1) with ESMTP id VAA11529
-       for <recode-forum@iro.umontreal.ca>; Fri, 11 Dec 1998 21:22:38 -0500 (EST)
-Received: from ariel.progiciels-bpi.ca by jupiter.rtsq.qc.ca (8.8.8/8.8.8) with SMTP id VAA10935 for <@jupiter.rtsq.qc.ca:recode-forum@iro.umontreal.ca>; Fri, 11 Dec 1998 21:22:10 -0500
-Received: from icule.progiciels-bpi.ca (uucp@localhost) by ariel.progiciels-bpi.ca (950413.SGI.8.6.12/950213.SGI) via UUCP id VAA17236 for recode-forum@iro.umontreal.ca; Fri, 11 Dec 1998 21:23:51 -0800
-Received: by icule.progiciels-bpi.ca (8.8.8/8.8.8) id UAA05839; Fri, 11 Dec 1998 20:21:00 -0500
-X-Face: "b_m|CE6#'Q8fliQrwHl9K,]PA_o'*S~Dva{~b1n*)K*A(BIwQW.:LY?t4~xhYka_.LV?Qq
- `}X|71X0ea&H]9Dsk!`kxBXlG;q$mLfv_vtaHK_rHFKu]4'<*LWCyUe@ZcI6"*wB5M@[m<Ok5/cC^=
- CxDhg=TJi^o[E
-Message-ID: <oq90ge17gk.fsf@icule.progiciels-bpi.ca>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=iso-8859-1
-Content-Transfer-Encoding: 8bit
-Sender: owner-recode-forum@IRO.UMontreal.CA
-Precedence: bulk
-Lines: 49
-Xref: titan.progiciels-bpi.ca entretien.recode:1739
-
-   Let me take a few minutes of rest, and share with you the state of combining
-   in `recode'.  Fun enough, my initial writing of it, which was using some
-   space while it was boiling, reduced to something small and rather simple
-   after some time, from merging of structures and functions, and removal of
-   some limits.  It does not even show, now, that it once was more complicated!
-
-   The satisfactory aspects are that `recode' is now able to combine a set of
+/* The satisfactory aspects are that `recode' is now able to combine a set of
    sequence of UCS-2 characters into single codes, or explode those single
-   codes into the original sequence.  It may happen that many sequences
-   reduce to the same code, one of them is arbitrarily taken as canonical.
-   Any combining sequence of an equivalent set produces the equivalent code,
-   but at explode time, codes are always turned into their canonical sequence.
-   I did not limit the length of a combining sequence, yet it is usually small.
-   Also, I did not put any limit on the number of possibly equivalent sequences.
-   For combining, for each possible partial match in any sequence, there is
-   a state.  States corresponding to the scan of a single code are found by
-   hash coding, while other states are linearly searched on a linked list of
-   possible shifts, rooted on the state corresponding to the partial sequence,
-   but without its last code.  I expect this combination of methods to execute
-   reasonably fast.  Exploding is much simpler, and I merely use hash coding.
-
-   The less satisfactory aspects are that the user interface is still
-   very rude.  For the time being, I merely added a "combined" charset:
-   combining is done by `u2..co', exploding is done by `co..u2'.  We surely
-   could do much better, and build on the concept of options (introduced by
-   `+' in the request syntax), Options are probably going to be used for other
+   codes into the original sequence.  It may happen that many sequences reduce
+   to the same code, one of them is arbitrarily taken as canonical.  Any
+   combining sequence of an equivalent set produces the equivalent code, but
+   at explode time, codes are always turned into their canonical sequence.  I
+   did not limit the length of a combining sequence, yet it is usually small.
+   Also, I did not put any limit on the number of possibly equivalent
+   sequences.  For combining, for each possible partial match in any sequence,
+   there is a state.  States corresponding to the scan of a single code are
+   found by hash coding, while other states are linearly searched on a linked
+   list of possible shifts, rooted on the state corresponding to the partial
+   sequence, but without its last code.  I expect this combination of methods
+   to execute reasonably fast.  Exploding is much simpler, and I merely use
+   hash coding.
+
+   The less satisfactory aspects are that the user interface is still very
+   rude.  For the time being, I merely added a "combined" charset: combining
+   is done by `u2..co', exploding is done by `co..u2'.  We surely could do
+   much better, and build on the concept of options (introduced by `+' in the
+   request syntax), Options are probably going to be used for other
    transliteration matters.  Even if built on UCS-2, combining matters would
    have natural extensions in other _smaller_ charsets, and it would be nice
    being able to derive the functionality automatically.  One difficulty to
@@ -83,15 +52,10 @@ Xref: titan.progiciels-bpi.ca entretien.recode:1739
    UCS-2 is not otherwise mandated in the request, we would have to create
    such an UCS-2 intermediate.  On the other hand, if UCS-2 is sandwidched
    somewhere in a complex series of steps, we should implicitly propagate
-   options towards the UCS-2 step.  Even if nothing looks utterly difficult,
-   guess that for doing it right, a lot of attention and care is needed.
+   options towards the UCS-2 step.  Even if nothing looks utterly difficult, I
+   guess that for doing it right, a lot of attention and care is needed.
    Also, I'm pretty sure that scrutinizing the documents (from w3.org or
-   Unicode) that were suggested to us will raise new specific concerns.
-
-   In any case, I'll try to clean a bit more around, for a few hours or maybe
-   a few days, who knows :-), and prepare a new pretest offering "combined".
-   Hmph!  Some documentation, even if terse, would also be welcome.  More
-   later.  */
+   Unicode) that were suggested to us will raise new specific concerns.  */
 \f
 /* Exploding.  */
 
@@ -292,7 +256,7 @@ struct state
   unsigned short result;       /* character equivalent to the combination */
   struct state *shift;         /* list of states for one more character */
   struct state *unshift;       /* state for one less character (back link) */
-  struct state *next;          /* next state within a linked chain of states */
+  struct state *next;          /* next state in a linked chain of states */
 };
 
 /*---------------------------.
index 0e9d33fe4a49e70ac2846d62216ba2af14bd89a7..4562747f9cd144bd0276524725dd372ba44c8fa3 100644 (file)
@@ -34,6 +34,8 @@ bool module_utf8 PARAMS ((struct recode_outer *));
 bool module_utf8 PARAMS ((struct recode_outer *));
 bool module_varia PARAMS ((struct recode_outer *));
 bool module_varia PARAMS ((struct recode_outer *));
+bool module_viet PARAMS ((struct recode_outer *));
+bool module_viet PARAMS ((struct recode_outer *));
 bool module_flat PARAMS ((struct recode_outer *));
 bool module_flat PARAMS ((struct recode_outer *));
 bool module_html PARAMS ((struct recode_outer *));
index 841adccd3eea4e1235c12c19478f622fa5e54217..8acfc71e347590d4715b385d2e7ef48a93466a30 100644 (file)
@@ -1,4 +1,4 @@
-/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.pl'.  */
+/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.py'.  */
 
 /* Conversion of files between different charsets and surfaces.
    Copyright © 1999 Free Software Foundation, Inc.
@@ -24,7 +24,7 @@
 #define MAX_CHARNAME_LENGTH 90
 #define NUMBER_OF_CHARNAMES 6369
 
-static const char *const word[2006] =
+static const char *const word[2007] =
   {
     "lettre",                   /* \001 */
     "arabe",                    /* \002 */
@@ -291,273 +291,273 @@ static const char *const word[2006] =
     "ta",                       /* \371\017 */
     "tcha",                     /* \371\020 */
     "yo",                       /* \371\021 */
-    "brisé",                    /* \371\022 */
-    "commande",                 /* \371\023 */
-    "d'échecs",                 /* \371\024 */
-    "espace",                   /* \371\025 */
-    "harpon",                   /* \371\026 */
-    "jeu",                      /* \371\027 */
-    "mai",                      /* \371\030 */
-    "opérateur",                /* \371\031 */
-    "petite",                   /* \371\032 */
-    "rr",                       /* \371\033 */
-    "waw",                      /* \371\034 */
-    "kirghize",                 /* \371\035 */
-    "moins",                    /* \371\036 */
-    "médian",                   /* \371\037 */
-    "oe",                       /* \371\040 */
-    "par",                      /* \371\041 */
-    "roc",                      /* \371\042 */
-    "sens",                     /* \371\043 */
-    "shadda",                   /* \371\044 */
-    "so",                       /* \371\045 */
-    "souligné",                 /* \371\046 */
-    "triple",                   /* \371\047 */
-    "you",                      /* \371\050 */
-    "arc",                      /* \371\051 */
-    "ba",                       /* \371\052 */
-    "cha",                      /* \371\053 */
-    "digramme",                 /* \371\054 */
-    "ee",                       /* \371\055 */
-    "ga",                       /* \371\056 */
-    "ghé",                      /* \371\057 */
-    "ho",                       /* \371\060 */
-    "kha",                      /* \371\061 */
-    "normal",                   /* \371\062 */
-    "oo",                       /* \371\063 */
-    "prime",                    /* \371\064 */
-    "q",                        /* \371\065 */
-    "rétroflexe",               /* \371\066 */
-    "son",                      /* \371\067 */
-    "tho",                      /* \371\070 */
-    "tiret",                    /* \371\071 */
-    "étendu",                   /* \371\072 */
-    "chin",                     /* \371\073 */
-    "comme",                    /* \371\074 */
-    "coup",                     /* \371\075 */
-    "dans",                     /* \371\076 */
-    "dja",                      /* \371\077 */
-    "empennage",                /* \371\100 */
-    "glotte",                   /* \371\101 */
-    "hangzhou",                 /* \371\102 */
-    "he",                       /* \371\103 */
-    "huitièmes",                /* \371\104 */
-    "intégrale",                /* \371\105 */
-    "large",                    /* \371\106 */
-    "longueur",                 /* \371\107 */
-    "losange",                  /* \371\110 */
-    "mais",                     /* \371\111 */
-    "ne",                       /* \371\112 */
-    "nga",                      /* \371\113 */
-    "nna",                      /* \371\114 */
-    "pe",                       /* \371\115 */
-    "tchiûtch",                 /* \371\116 */
-    "tta",                      /* \371\117 */
-    "virama",                   /* \371\120 */
-    "wa",                       /* \371\121 */
-    "wo",                       /* \371\122 */
-    "zay",                      /* \371\123 */
-    "ña",                       /* \371\124 */
-    "abkhasien",                /* \371\125 */
-    "bha",                      /* \371\126 */
-    "bref",                     /* \371\127 */
-    "candra",                   /* \371\130 */
-    "d'exclamation",            /* \371\131 */
-    "d'un",                     /* \371\132 */
-    "dal",                      /* \371\133 */
-    "dda",                      /* \371\134 */
-    "ddha",                     /* \371\135 */
-    "dent",                     /* \371\136 */
-    "dha",                      /* \371\137 */
-    "douze",                    /* \371\140 */
-    "début",                    /* \371\141 */
-    "ej",                       /* \371\142 */
-    "enne",                     /* \371\143 */
-    "gaf",                      /* \371\144 */
-    "gha",                      /* \371\145 */
-    "grosse",                   /* \371\146 */
-    "hiûh",                     /* \371\147 */
-    "index",                    /* \371\150 */
-    "iûng",                     /* \371\151 */
-    "jé",                       /* \371\152 */
-    "k'iûk'",                   /* \371\153 */
-    "kiyok",                    /* \371\154 */
-    "ll",                       /* \371\155 */
-    "lla",                      /* \371\156 */
-    "mille",                    /* \371\157 */
-    "miûm",                     /* \371\160 */
-    "monétaire",                /* \371\161 */
-    "niûn",                     /* \371\162 */
-    "no",                       /* \371\163 */
-    "ombrée",                   /* \371\164 */
-    "p'iûp'",                   /* \371\165 */
-    "pha",                      /* \371\166 */
-    "piûp",                     /* \371\167 */
-    "rhô",                      /* \371\170 */
-    "riûl",                     /* \371\171 */
-    "rra",                      /* \371\172 */
-    "siôs",                     /* \371\173 */
-    "sous-groupe",              /* \371\174 */
-    "ssa",                      /* \371\175 */
-    "supérieure",               /* \371\176 */
-    "t'iût'",                   /* \371\177 */
-    "tch'iûtch'",               /* \371\200 */
-    "tchha",                    /* \371\201 */
-    "tha",                      /* \371\202 */
-    "tikût",                    /* \371\203 */
-    "trigramme",                /* \371\204 */
-    "ttha",                     /* \371\205 */
-    "va",                       /* \371\206 */
-    "visarga",                  /* \371\207 */
-    "yousse",                   /* \371\210 */
-    "za'",                      /* \371\211 */
-    "écaille",                  /* \371\212 */
-    "ajouré",                   /* \371\213 */
-    "anousvara",                /* \371\214 */
-    "apostrophe",               /* \371\215 */
-    "au",                       /* \371\216 */
-    "barrée",                   /* \371\217 */
-    "bouclé",                   /* \371\220 */
-    "cadratin",                 /* \371\221 */
-    "cent",                     /* \371\222 */
-    "coeur",                    /* \371\223 */
-    "d'interrogation",          /* \371\224 */
-    "d'union",                  /* \371\225 */
-    "djha",                     /* \371\226 */
-    "famille",                  /* \371\227 */
-    "fantaisie",                /* \371\230 */
-    "gôl",                      /* \371\231 */
-    "image",                    /* \371\232 */
-    "inférieure",               /* \371\233 */
-    "ié",                       /* \371\234 */
-    "ke",                       /* \371\235 */
-    "kho",                      /* \371\236 */
-    "ko",                       /* \371\237 */
-    "mo",                       /* \371\240 */
-    "nord-est",                 /* \371\241 */
-    "ombre",                    /* \371\242 */
-    "onze",                     /* \371\243 */
-    "par-dessus",               /* \371\244 */
-    "pointé",                   /* \371\245 */
-    "schwa",                    /* \371\246 */
-    "seize",                    /* \371\247 */
-    "souscrits",                /* \371\250 */
-    "sud-est",                  /* \371\251 */
-    "sur",                      /* \371\252 */
-    "to",                       /* \371\253 */
-    "transmission",             /* \371\254 */
-    "tu",                       /* \371\255 */
-    "yu",                       /* \371\256 */
-    "é",                        /* \371\257 */
-    "accolade",                 /* \371\260 */
-    "alef",                     /* \371\261 */
-    "angle",                    /* \371\262 */
-    "candrabindou",             /* \371\263 */
-    "carrée",                   /* \371\264 */
-    "contient",                 /* \371\265 */
-    "couvrante",                /* \371\266 */
-    "delta",                    /* \371\267 */
-    "demi-rond",                /* \371\270 */
-    "dz",                       /* \371\271 */
-    "farsi",                    /* \371\272 */
-    "gamma",                    /* \371\273 */
-    "inversée",                 /* \371\274 */
-    "iotacisme",                /* \371\275 */
-    "katakana-hiragana",        /* \371\276 */
-    "lenticulaire",             /* \371\277 */
-    "logique",                  /* \371\300 */
-    "madda",                    /* \371\301 */
-    "mien",                     /* \371\302 */
-    "ng",                       /* \371\303 */
-    "nu",                       /* \371\304 */
-    "numérateur",               /* \371\305 */
-    "ouvert",                   /* \371\306 */
-    "pi",                       /* \371\307 */
-    "ponctuation",              /* \371\310 */
-    "positif",                  /* \371\311 */
-    "produit",                  /* \371\312 */
-    "quadrant",                 /* \371\313 */
-    "re",                       /* \371\314 */
-    "rectangle",                /* \371\315 */
-    "répétition",               /* \371\316 */
-    "se",                       /* \371\317 */
-    "soung",                    /* \371\320 */
-    "sous-ensemble",            /* \371\321 */
-    "suit",                     /* \371\322 */
-    "sur-ensemble",             /* \371\323 */
-    "tam",                      /* \371\324 */
-    "triangulaire",             /* \371\325 */
-    "té",                       /* \371\326 */
-    "vrachy",                   /* \371\327 */
-    "wi",                       /* \371\330 */
-    "yod",                      /* \371\331 */
-    "zé",                       /* \371\332 */
-    "ajourée",                  /* \371\333 */
-    "approximativement",        /* \371\334 */
-    "arménien",                 /* \371\335 */
-    "bea'",                     /* \371\336 */
-    "beha'",                    /* \371\337 */
-    "bourre",                   /* \371\340 */
-    "bulletin",                 /* \371\341 */
-    "clic",                     /* \371\342 */
-    "culbutée",                 /* \371\343 */
-    "d'appareil",               /* \371\344 */
-    "d'itération",              /* \371\345 */
-    "damma",                    /* \371\346 */
-    "deux-points",              /* \371\347 */
-    "dix-huit",                 /* \371\350 */
-    "dix-neuf",                 /* \371\351 */
-    "dix-sept",                 /* \371\352 */
-    "do",                       /* \371\353 */
-    "doatchachmi",              /* \371\354 */
-    "dya'",                     /* \371\355 */
-    "encadré",                  /* \371\356 */
-    "esse",                     /* \371\357 */
-    "est",                      /* \371\360 */
-    "fatha",                    /* \371\361 */
-    "fathatan",                 /* \371\362 */
-    "gothique",                 /* \371\363 */
-    "gua'",                     /* \371\364 */
-    "hachuré",                  /* \371\365 */
-    "huitième",                 /* \371\366 */
-    "jusqu'à",                  /* \371\367 */
-    "kana",                     /* \371\370 */
-    "kasra",                    /* \371\371 */
-    "keha'",                    /* \371\372 */
-    "lo",                       /* \371\373 */
-    "ngoa'",                    /* \371\374 */
-    "nord-ouest",               /* \371\375 */
-    "noukta",                   /* \371\376 */
-    "nya'",                     /* \371\377 */
-    "ondulé",                   /* \372\001 */
-    "original",                 /* \372\002 */
-    "ouïgour",                  /* \372\003 */
-    "pa'",                      /* \372\004 */
-    "peha'",                    /* \372\005 */
-    "pho",                      /* \372\006 */
-    "point-virgule",            /* \372\007 */
-    "précède",                  /* \372\010 */
-    "quatorze",                 /* \372\011 */
-    "quinze",                   /* \372\012 */
-    "rnoûn",                    /* \372\013 */
-    "ro",                       /* \372\014 */
-    "soleil",                   /* \372\015 */
-    "tcheha'",                  /* \372\016 */
-    "tchim'",                   /* \372\017 */
-    "teha'",                    /* \372\020 */
-    "terre",                    /* \372\021 */
-    "ti",                       /* \372\022 */
-    "treize",                   /* \372\023 */
-    "tta'",                     /* \372\024 */
-    "tteha'",                   /* \372\025 */
-    "va'",                      /* \372\026 */
-    "vav",                      /* \372\027 */
-    "vingt",                    /* \372\030 */
-    "voisé",                    /* \372\031 */
-    "vote",                     /* \372\032 */
-    "we",                       /* \372\033 */
-    "élevé",                    /* \372\034 */
-    "",                         /* \372\035 */
+    "*",                        /* \371\022 */
+    "brisé",                    /* \371\023 */
+    "commande",                 /* \371\024 */
+    "d'échecs",                 /* \371\025 */
+    "espace",                   /* \371\026 */
+    "harpon",                   /* \371\027 */
+    "jeu",                      /* \371\030 */
+    "mai",                      /* \371\031 */
+    "opérateur",                /* \371\032 */
+    "petite",                   /* \371\033 */
+    "rr",                       /* \371\034 */
+    "waw",                      /* \371\035 */
+    "kirghize",                 /* \371\036 */
+    "moins",                    /* \371\037 */
+    "médian",                   /* \371\040 */
+    "oe",                       /* \371\041 */
+    "par",                      /* \371\042 */
+    "roc",                      /* \371\043 */
+    "sens",                     /* \371\044 */
+    "shadda",                   /* \371\045 */
+    "so",                       /* \371\046 */
+    "souligné",                 /* \371\047 */
+    "triple",                   /* \371\050 */
+    "you",                      /* \371\051 */
+    "arc",                      /* \371\052 */
+    "ba",                       /* \371\053 */
+    "cha",                      /* \371\054 */
+    "digramme",                 /* \371\055 */
+    "ee",                       /* \371\056 */
+    "ga",                       /* \371\057 */
+    "ghé",                      /* \371\060 */
+    "ho",                       /* \371\061 */
+    "kha",                      /* \371\062 */
+    "normal",                   /* \371\063 */
+    "oo",                       /* \371\064 */
+    "prime",                    /* \371\065 */
+    "q",                        /* \371\066 */
+    "rétroflexe",               /* \371\067 */
+    "son",                      /* \371\070 */
+    "tho",                      /* \371\071 */
+    "tiret",                    /* \371\072 */
+    "étendu",                   /* \371\073 */
+    "chin",                     /* \371\074 */
+    "comme",                    /* \371\075 */
+    "coup",                     /* \371\076 */
+    "dans",                     /* \371\077 */
+    "dja",                      /* \371\100 */
+    "empennage",                /* \371\101 */
+    "glotte",                   /* \371\102 */
+    "hangzhou",                 /* \371\103 */
+    "he",                       /* \371\104 */
+    "huitièmes",                /* \371\105 */
+    "intégrale",                /* \371\106 */
+    "large",                    /* \371\107 */
+    "longueur",                 /* \371\110 */
+    "losange",                  /* \371\111 */
+    "mais",                     /* \371\112 */
+    "ne",                       /* \371\113 */
+    "nga",                      /* \371\114 */
+    "nna",                      /* \371\115 */
+    "pe",                       /* \371\116 */
+    "tchiûtch",                 /* \371\117 */
+    "tta",                      /* \371\120 */
+    "virama",                   /* \371\121 */
+    "wa",                       /* \371\122 */
+    "wo",                       /* \371\123 */
+    "zay",                      /* \371\124 */
+    "ña",                       /* \371\125 */
+    "abkhasien",                /* \371\126 */
+    "bha",                      /* \371\127 */
+    "bref",                     /* \371\130 */
+    "candra",                   /* \371\131 */
+    "d'exclamation",            /* \371\132 */
+    "d'un",                     /* \371\133 */
+    "dal",                      /* \371\134 */
+    "dda",                      /* \371\135 */
+    "ddha",                     /* \371\136 */
+    "dent",                     /* \371\137 */
+    "dha",                      /* \371\140 */
+    "douze",                    /* \371\141 */
+    "début",                    /* \371\142 */
+    "ej",                       /* \371\143 */
+    "enne",                     /* \371\144 */
+    "gaf",                      /* \371\145 */
+    "gha",                      /* \371\146 */
+    "grosse",                   /* \371\147 */
+    "hiûh",                     /* \371\150 */
+    "index",                    /* \371\151 */
+    "iûng",                     /* \371\152 */
+    "jé",                       /* \371\153 */
+    "k'iûk'",                   /* \371\154 */
+    "kiyok",                    /* \371\155 */
+    "ll",                       /* \371\156 */
+    "lla",                      /* \371\157 */
+    "mille",                    /* \371\160 */
+    "miûm",                     /* \371\161 */
+    "monétaire",                /* \371\162 */
+    "niûn",                     /* \371\163 */
+    "no",                       /* \371\164 */
+    "ombrée",                   /* \371\165 */
+    "p'iûp'",                   /* \371\166 */
+    "pha",                      /* \371\167 */
+    "piûp",                     /* \371\170 */
+    "rhô",                      /* \371\171 */
+    "riûl",                     /* \371\172 */
+    "rra",                      /* \371\173 */
+    "siôs",                     /* \371\174 */
+    "sous-groupe",              /* \371\175 */
+    "ssa",                      /* \371\176 */
+    "supérieure",               /* \371\177 */
+    "t'iût'",                   /* \371\200 */
+    "tch'iûtch'",               /* \371\201 */
+    "tchha",                    /* \371\202 */
+    "tha",                      /* \371\203 */
+    "tikût",                    /* \371\204 */
+    "trigramme",                /* \371\205 */
+    "ttha",                     /* \371\206 */
+    "va",                       /* \371\207 */
+    "visarga",                  /* \371\210 */
+    "yousse",                   /* \371\211 */
+    "za'",                      /* \371\212 */
+    "écaille",                  /* \371\213 */
+    "ajouré",                   /* \371\214 */
+    "anousvara",                /* \371\215 */
+    "apostrophe",               /* \371\216 */
+    "au",                       /* \371\217 */
+    "barrée",                   /* \371\220 */
+    "bouclé",                   /* \371\221 */
+    "cadratin",                 /* \371\222 */
+    "cent",                     /* \371\223 */
+    "coeur",                    /* \371\224 */
+    "d'interrogation",          /* \371\225 */
+    "d'union",                  /* \371\226 */
+    "djha",                     /* \371\227 */
+    "famille",                  /* \371\230 */
+    "fantaisie",                /* \371\231 */
+    "gôl",                      /* \371\232 */
+    "image",                    /* \371\233 */
+    "inférieure",               /* \371\234 */
+    "",                       /* \371\235 */
+    "ke",                       /* \371\236 */
+    "kho",                      /* \371\237 */
+    "ko",                       /* \371\240 */
+    "mo",                       /* \371\241 */
+    "nord-est",                 /* \371\242 */
+    "ombre",                    /* \371\243 */
+    "onze",                     /* \371\244 */
+    "par-dessus",               /* \371\245 */
+    "pointé",                   /* \371\246 */
+    "schwa",                    /* \371\247 */
+    "seize",                    /* \371\250 */
+    "souscrits",                /* \371\251 */
+    "sud-est",                  /* \371\252 */
+    "sur",                      /* \371\253 */
+    "to",                       /* \371\254 */
+    "transmission",             /* \371\255 */
+    "tu",                       /* \371\256 */
+    "yu",                       /* \371\257 */
+    "é",                        /* \371\260 */
+    "accolade",                 /* \371\261 */
+    "alef",                     /* \371\262 */
+    "angle",                    /* \371\263 */
+    "candrabindou",             /* \371\264 */
+    "carrée",                   /* \371\265 */
+    "contient",                 /* \371\266 */
+    "couvrante",                /* \371\267 */
+    "delta",                    /* \371\270 */
+    "demi-rond",                /* \371\271 */
+    "dz",                       /* \371\272 */
+    "farsi",                    /* \371\273 */
+    "gamma",                    /* \371\274 */
+    "inversée",                 /* \371\275 */
+    "iotacisme",                /* \371\276 */
+    "katakana-hiragana",        /* \371\277 */
+    "lenticulaire",             /* \371\300 */
+    "logique",                  /* \371\301 */
+    "madda",                    /* \371\302 */
+    "mien",                     /* \371\303 */
+    "ng",                       /* \371\304 */
+    "nu",                       /* \371\305 */
+    "numérateur",               /* \371\306 */
+    "ouvert",                   /* \371\307 */
+    "pi",                       /* \371\310 */
+    "ponctuation",              /* \371\311 */
+    "positif",                  /* \371\312 */
+    "produit",                  /* \371\313 */
+    "quadrant",                 /* \371\314 */
+    "re",                       /* \371\315 */
+    "rectangle",                /* \371\316 */
+    "répétition",               /* \371\317 */
+    "se",                       /* \371\320 */
+    "soung",                    /* \371\321 */
+    "sous-ensemble",            /* \371\322 */
+    "suit",                     /* \371\323 */
+    "sur-ensemble",             /* \371\324 */
+    "tam",                      /* \371\325 */
+    "triangulaire",             /* \371\326 */
+    "té",                       /* \371\327 */
+    "vrachy",                   /* \371\330 */
+    "wi",                       /* \371\331 */
+    "yod",                      /* \371\332 */
+    "zé",                       /* \371\333 */
+    "ajourée",                  /* \371\334 */
+    "approximativement",        /* \371\335 */
+    "arménien",                 /* \371\336 */
+    "bea'",                     /* \371\337 */
+    "beha'",                    /* \371\340 */
+    "bourre",                   /* \371\341 */
+    "bulletin",                 /* \371\342 */
+    "clic",                     /* \371\343 */
+    "culbutée",                 /* \371\344 */
+    "d'appareil",               /* \371\345 */
+    "d'itération",              /* \371\346 */
+    "damma",                    /* \371\347 */
+    "deux-points",              /* \371\350 */
+    "dix-huit",                 /* \371\351 */
+    "dix-neuf",                 /* \371\352 */
+    "dix-sept",                 /* \371\353 */
+    "do",                       /* \371\354 */
+    "doatchachmi",              /* \371\355 */
+    "dya'",                     /* \371\356 */
+    "encadré",                  /* \371\357 */
+    "esse",                     /* \371\360 */
+    "est",                      /* \371\361 */
+    "fatha",                    /* \371\362 */
+    "fathatan",                 /* \371\363 */
+    "gothique",                 /* \371\364 */
+    "gua'",                     /* \371\365 */
+    "hachuré",                  /* \371\366 */
+    "huitième",                 /* \371\367 */
+    "jusqu'à",                  /* \371\370 */
+    "kana",                     /* \371\371 */
+    "kasra",                    /* \371\372 */
+    "keha'",                    /* \371\373 */
+    "lo",                       /* \371\374 */
+    "ngoa'",                    /* \371\375 */
+    "nord-ouest",               /* \371\376 */
+    "noukta",                   /* \371\377 */
+    "nya'",                     /* \372\001 */
+    "ondulé",                   /* \372\002 */
+    "original",                 /* \372\003 */
+    "ouïgour",                  /* \372\004 */
+    "pa'",                      /* \372\005 */
+    "peha'",                    /* \372\006 */
+    "pho",                      /* \372\007 */
+    "point-virgule",            /* \372\010 */
+    "précède",                  /* \372\011 */
+    "quatorze",                 /* \372\012 */
+    "quinze",                   /* \372\013 */
+    "rnoûn",                    /* \372\014 */
+    "ro",                       /* \372\015 */
+    "soleil",                   /* \372\016 */
+    "tcheha'",                  /* \372\017 */
+    "tchim'",                   /* \372\020 */
+    "teha'",                    /* \372\021 */
+    "terre",                    /* \372\022 */
+    "ti",                       /* \372\023 */
+    "treize",                   /* \372\024 */
+    "tta'",                     /* \372\025 */
+    "tteha'",                   /* \372\026 */
+    "va'",                      /* \372\027 */
+    "vav",                      /* \372\030 */
+    "vingt",                    /* \372\031 */
+    "voisé",                    /* \372\032 */
+    "vote",                     /* \372\033 */
+    "we",                       /* \372\034 */
+    "élevé",                    /* \372\035 */
     "ae",                       /* \372\036 */
     "anglais",                  /* \372\037 */
     "angulaire",                /* \372\040 */
@@ -802,1236 +802,1237 @@ static const char *const word[2006] =
     "ô",                        /* \373\020 */
     "û",                        /* \373\021 */
     "ûi",                       /* \373\022 */
-    "accusé",                   /* \373\023 */
-    "activateur",               /* \373\024 */
-    "aib",                      /* \373\025 */
-    "alayhe",                   /* \373\026 */
-    "alliance",                 /* \373\027 */
-    "ang",                      /* \373\030 */
-    "annulation",               /* \373\031 */
-    "appartient",               /* \373\032 */
-    "arrière",                  /* \373\033 */
-    "arèa",                     /* \373\034 */
-    "ascendant",                /* \373\035 */
-    "astérisque-hélice",        /* \373\036 */
-    "asymptotiquement",         /* \373\037 */
-    "avoir",                    /* \373\040 */
-    "aïn",                      /* \373\041 */
-    "ban",                      /* \373\042 */
-    "bashkir",                  /* \373\043 */
-    "be",                       /* \373\044 */
-    "beaucoup",                 /* \373\045 */
-    "bec",                      /* \373\046 */
-    "bi",                       /* \373\047 */
-    "bien",                     /* \373\050 */
-    "biélorusse",               /* \373\051 */
-    "biélorusse-ukrainien",     /* \373\052 */
-    "bois",                     /* \373\053 */
-    "bu",                       /* \373\054 */
-    "bé",                       /* \373\055 */
-    "carreau",                  /* \373\056 */
-    "cavalier",                 /* \373\057 */
-    "cciar",                    /* \373\060 */
-    "central",                  /* \373\061 */
-    "centré",                   /* \373\062 */
-    "cents",                    /* \373\063 */
-    "chan",                     /* \373\064 */
-    "changement",               /* \373\065 */
-    "chariot",                  /* \373\066 */
-    "chhan",                    /* \373\067 */
-    "chtcha",                   /* \373\070 */
-    "cin",                      /* \373\071 */
-    "cinquante",                /* \373\072 */
-    "colon",                    /* \373\073 */
-    "considéralement",          /* \373\074 */
-    "consonne",                 /* \373\075 */
-    "copyright",                /* \373\076 */
-    "coranique",                /* \373\077 */
-    "coronis",                  /* \373\100 */
-    "courbée",                  /* \373\101 */
-    "cqar",                     /* \373\102 */
-    "croches",                  /* \373\103 */
-    "d'accolade",               /* \373\104 */
-    "d'accusé",                 /* \373\105 */
-    "d'annulation",             /* \373\106 */
-    "d'arrêt",                  /* \373\107 */
-    "d'en-tête",                /* \373\110 */
-    "d'insertion",              /* \373\111 */
-    "d'intégrale",              /* \373\112 */
-    "d'une",                    /* \373\113 */
-    "d'échange",                /* \373\114 */
-    "dame",                     /* \373\115 */
-    "danda",                    /* \373\116 */
-    "danger",                   /* \373\117 */
-    "dché",                     /* \373\120 */
-    "dei",                      /* \373\121 */
-    "demande",                  /* \373\122 */
-    "demi-anneau",              /* \373\123 */
-    "demi-disque",              /* \373\124 */
-    "demi-voyelle",             /* \373\125 */
-    "dessus",                   /* \373\126 */
-    "deuxième",                 /* \373\127 */
-    "di",                       /* \373\130 */
-    "diagonaux",                /* \373\131 */
-    "différence",               /* \373\132 */
-    "disque",                   /* \373\133 */
-    "diviseur",                 /* \373\134 */
-    "djhe",                     /* \373\135 */
-    "don",                      /* \373\136 */
-    "dsa",                      /* \373\137 */
-    "dza",                      /* \373\140 */
-    "dzêta",                    /* \373\141 */
-    "dé",                       /* \373\142 */
-    "dénominateur",             /* \373\143 */
-    "ed",                       /* \373\144 */
-    "effe",                     /* \373\145 */
-    "ei",                       /* \373\146 */
-    "elle",                     /* \373\147 */
-    "emme",                     /* \373\150 */
-    "enchâssement",             /* \373\151 */
-    "encochée",                 /* \373\152 */
-    "entreprise",               /* \373\153 */
-    "erre",                     /* \373\154 */
-    "facteur",                  /* \373\155 */
-    "far",                      /* \373\156 */
-    "fe",                       /* \373\157 */
-    "fei",                      /* \373\160 */
-    "femelle",                  /* \373\161 */
-    "fi",                       /* \373\162 */
-    "fichier",                  /* \373\163 */
-    "financier",                /* \373\164 */
-    "fine",                     /* \373\165 */
-    "fita",                     /* \373\166 */
-    "floral",                   /* \373\167 */
-    "formage",                  /* \373\170 */
-    "formatage",                /* \373\171 */
-    "formes",                   /* \373\172 */
-    "forçage",                  /* \373\173 */
-    "fou",                      /* \373\174 */
-    "fourche",                  /* \373\175 */
-    "fourchette",               /* \373\176 */
-    "fractionnaire",            /* \373\177 */
-    "félicitations",            /* \373\200 */
-    "gauche-droite",            /* \373\201 */
-    "ge",                       /* \373\202 */
-    "ghan",                     /* \373\203 */
-    "ghat",                     /* \373\204 */
-    "ghha",                     /* \373\205 */
-    "ghhan",                    /* \373\206 */
-    "gi",                       /* \373\207 */
-    "gian",                     /* \373\210 */
-    "giangia",                  /* \373\211 */
-    "gim",                      /* \373\212 */
-    "gjé",                      /* \373\213 */
-    "go",                       /* \373\214 */
-    "groupe",                   /* \373\215 */
-    "gu",                       /* \373\216 */
-    "guimel",                   /* \373\217 */
-    "géométriquement",          /* \373\220 */
-    "hhae",                     /* \373\221 */
-    "hhar",                     /* \373\222 */
-    "hhoe",                     /* \373\223 */
-    "hie",                      /* \373\224 */
-    "holam",                    /* \373\225 */
-    "hori",                     /* \373\226 */
-    "hors",                     /* \373\227 */
-    "hue",                      /* \373\230 */
-    "ia",                       /* \373\231 */
-    "ici",                      /* \373\232 */
-    "identique",                /* \373\233 */
-    "ij",                       /* \373\234 */
-    "il",                       /* \373\235 */
-    "inhibiteur",               /* \373\236 */
-    "insécable",                /* \373\237 */
-    "io",                       /* \373\240 */
-    "iou",                      /* \373\241 */
-    "isshar",                   /* \373\242 */
-    "iûng-kiyok",               /* \373\243 */
-    "je",                       /* \373\244 */
-    "jeth",                     /* \373\245 */
-    "kapyo-ounssangpiûp",       /* \373\246 */
-    "kazakhe",                  /* \373\247 */
-    "kg",                       /* \373\250 */
-    "khakassien",               /* \373\251 */
-    "khei",                     /* \373\252 */
-    "khha",                     /* \373\253 */
-    "kien",                     /* \373\254 */
-    "kjé",                      /* \373\255 */
-    "ksi",                      /* \373\256 */
-    "l'arrière",                /* \373\257 */
-    "lame",                     /* \373\260 */
-    "larmées",                  /* \373\261 */
-    "las",                      /* \373\262 */
-    "liant",                    /* \373\263 */
-    "ling",                     /* \373\264 */
-    "liun",                     /* \373\265 */
-    "livre",                    /* \373\266 */
-    "lj",                       /* \373\267 */
-    "main",                     /* \373\270 */
-    "man",                      /* \373\271 */
-    "marchandises",             /* \373\272 */
-    "mb",                       /* \373\273 */
-    "message",                  /* \373\274 */
-    "mesuré",                   /* \373\275 */
-    "milliers",                 /* \373\276 */
-    "mince",                    /* \373\277 */
-    "miûm-pansiôs",             /* \373\300 */
-    "miûm-siôs",                /* \373\301 */
-    "molette",                  /* \373\302 */
-    "mouche",                   /* \373\303 */
-    "moue",                     /* \373\304 */
-    "mouillure",                /* \373\305 */
-    "moyenne",                  /* \373\306 */
-    "mv",                       /* \373\307 */
-    "mw",                       /* \373\310 */
-    "mâle",                     /* \373\311 */
-    "métal",                    /* \373\312 */
-    "nar",                      /* \373\313 */
-    "ngo",                      /* \373\314 */
-    "niûn-kiyok",               /* \373\315 */
-    "niûn-pansiôs",             /* \373\316 */
-    "niûn-siôs",                /* \373\317 */
-    "nj",                       /* \373\320 */
-    "nnna",                     /* \373\321 */
-    "nom",                      /* \373\322 */
-    "norme",                    /* \373\323 */
-    "note",                     /* \373\324 */
-    "nul",                      /* \373\325 */
-    "numéral",                  /* \373\326 */
-    "numérique",                /* \373\327 */
-    "numéro",                   /* \373\330 */
-    "obliquement",              /* \373\331 */
-    "obèle",                    /* \373\332 */
-    "oh",                       /* \373\333 */
-    "om",                       /* \373\334 */
-    "on",                       /* \373\335 */
-    "ondé",                     /* \373\336 */
-    "ordinal",                  /* \373\337 */
-    "ornée",                    /* \373\340 */
-    "otte",                     /* \373\341 */
-    "ouk",                      /* \373\342 */
-    "oï",                       /* \373\343 */
-    "p'iûp'-piûp",              /* \373\344 */
-    "page",                     /* \373\345 */
-    "papillon",                 /* \373\346 */
-    "parallélogramme",          /* \373\347 */
-    "partiel",                  /* \373\350 */
-    "penchée",                  /* \373\351 */
-    "percé",                    /* \373\352 */
-    "pied",                     /* \373\353 */
-    "pion",                     /* \373\354 */
-    "piur",                     /* \373\355 */
-    "piûp-kiyok",               /* \373\356 */
-    "piûp-p'iûp'",              /* \373\357 */
-    "piûp-siôs-kiyok",          /* \373\360 */
-    "piûp-siôs-tikût",          /* \373\361 */
-    "piûp-t'iût'",              /* \373\362 */
-    "piûp-tchiûtch",            /* \373\363 */
-    "piûp-tikût",               /* \373\364 */
-    "plafond",                  /* \373\365 */
-    "plancher",                 /* \373\366 */
-    "planck",                   /* \373\367 */
-    "plein",                    /* \373\370 */
-    "plume",                    /* \373\371 */
-    "pneumata",                 /* \373\372 */
-    "pommetée",                 /* \373\373 */
-    "pont",                     /* \373\374 */
-    "premier",                  /* \373\375 */
-    "projetée",                 /* \373\376 */
-    "proportion",               /* \373\377 */
-    "protégée",                 /* \374\001 */
-    "précédant",                /* \374\002 */
-    "pu",                       /* \374\003 */
-    "qof",                      /* \374\004 */
-    "quadrillé",                /* \374\005 */
-    "quartier",                 /* \374\006 */
-    "quatrième",                /* \374\007 */
-    "quintefeuille",            /* \374\010 */
-    "rae",                      /* \374\011 */
-    "ramées",                   /* \374\012 */
-    "rayonnante",               /* \374\013 */
-    "rayons",                   /* \374\014 */
-    "recourbé",                 /* \374\015 */
-    "rectiligne",               /* \374\016 */
-    "relation",                 /* \374\017 */
-    "repos",                    /* \374\020 */
-    "ressource",                /* \374\021 */
-    "retour",                   /* \374\022 */
-    "riûl-kiyok-siôs",          /* \374\023 */
-    "riûl-niûn",                /* \374\024 */
-    "riûl-pansiôs",             /* \374\025 */
-    "riûl-piûp-siôs",           /* \374\026 */
-    "riûl-tikût",               /* \374\027 */
-    "riûl-yorinhiûh",           /* \374\030 */
-    "roi",                      /* \374\031 */
-    "réfléchie",                /* \374\032 */
-    "salla",                    /* \374\033 */
-    "san",                      /* \374\034 */
-    "saturne",                  /* \374\035 */
-    "scei",                     /* \374\036 */
-    "scima",                    /* \374\037 */
-    "scin",                     /* \374\040 */
-    "segol",                    /* \374\041 */
-    "semi-circulaire",          /* \374\042 */
-    "sgian",                    /* \374\043 */
-    "shha",                     /* \374\044 */
-    "siôs-niûn",                /* \374\045 */
-    "siôs-riûl",                /* \374\046 */
-    "siôs-tchiûtch",            /* \374\047 */
-    "sonnerie",                 /* \374\050 */
-    "souriant",                 /* \374\051 */
-    "spécial",                  /* \374\052 */
-    "ssanghiûh",                /* \374\053 */
-    "ssangniûn",                /* \374\054 */
-    "ssangriûl",                /* \374\055 */
-    "substitution",             /* \374\056 */
-    "suivant",                  /* \374\057 */
-    "support",                  /* \374\060 */
-    "suppression",              /* \374\061 */
-    "suspension",               /* \374\062 */
-    "symétrique",               /* \374\063 */
-    "synchronisation",          /* \374\064 */
-    "szen",                     /* \374\065 */
-    "sélecteur",                /* \374\066 */
-    "sélectionnée",             /* \374\067 */
-    "tar",                      /* \374\070 */
-    "tatouïl",                  /* \374\071 */
-    "tau",                      /* \374\072 */
-    "tce",                      /* \374\073 */
-    "tet",                      /* \374\074 */
-    "thorn",                    /* \374\075 */
-    "thue",                     /* \374\076 */
-    "tikût-kiyok",              /* \374\077 */
-    "tirant",                   /* \374\100 */
-    "tire-bouchon",             /* \374\101 */
-    "tiun",                     /* \374\102 */
-    "tour",                     /* \374\103 */
-    "travail",                  /* \374\104 */
-    "trompe-l'oeil",            /* \374\105 */
-    "trèfle",                   /* \374\106 */
-    "très",                     /* \374\107 */
-    "ukrainien",                /* \374\110 */
-    "usage",                    /* \374\111 */
-    "utilisé",                  /* \374\112 */
-    "vecteur",                  /* \374\113 */
-    "vin",                      /* \374\114 */
-    "vingt-deux",               /* \374\115 */
-    "vingt-et-un",              /* \374\116 */
-    "vingt-quatre",             /* \374\117 */
-    "vingt-trois",              /* \374\120 */
-    "visible",                  /* \374\121 */
-    "voisée",                   /* \374\122 */
-    "vrai",                     /* \374\123 */
-    "vu",                       /* \374\124 */
-    "vé",                       /* \374\125 */
-    "vérification",             /* \374\126 */
-    "wasallam",                 /* \374\127 */
-    "won",                      /* \374\130 */
-    "xi",                       /* \374\131 */
-    "yate",                     /* \374\132 */
-    "yen",                      /* \374\133 */
-    "yesiûng-pansiôs",          /* \374\134 */
-    "yesiûng-siôs",             /* \374\135 */
-    "you-i",                    /* \374\136 */
-    "you-yo",                   /* \374\137 */
-    "you-yé",                   /* \374\140 */
-    "yô-i",                     /* \374\141 */
-    "yô-ya",                    /* \374\142 */
-    "yô-yè",                    /* \374\143 */
-    "zaïn",                     /* \374\144 */
-    "ze",                       /* \374\145 */
-    "zi",                       /* \374\146 */
-    "zil",                      /* \374\147 */
-    "zo",                       /* \374\150 */
-    "zu",                       /* \374\151 */
-    "zzan",                     /* \374\152 */
-    "zzil",                     /* \374\153 */
-    "éclairée",                 /* \374\154 */
-    "étincellement",            /* \374\155 */
-    "étude",                    /* \374\156 */
-    "ño",                       /* \374\157 */
-    "(ack)",                    /* \374\160 */
-    "(apc)",                    /* \374\161 */
-    "(bel)",                    /* \374\162 */
-    "(bph)",                    /* \374\163 */
-    "(bs)",                     /* \374\164 */
-    "(can)",                    /* \374\165 */
-    "(cch)",                    /* \374\166 */
-    "(cr)",                     /* \374\167 */
-    "(csi)",                    /* \374\170 */
-    "(dc1)",                    /* \374\171 */
-    "(dc2)",                    /* \374\172 */
-    "(dc3)",                    /* \374\173 */
-    "(dc4)",                    /* \374\174 */
-    "(dcs)",                    /* \374\175 */
-    "(del)",                    /* \374\176 */
-    "(dle)",                    /* \374\177 */
-    "(ega)",                    /* \374\200 */
-    "(em)",                     /* \374\201 */
-    "(enq)",                    /* \374\202 */
-    "(eot)",                    /* \374\203 */
-    "(esa)",                    /* \374\204 */
-    "(esc)",                    /* \374\205 */
-    "(etb)",                    /* \374\206 */
-    "(etx)",                    /* \374\207 */
-    "(ff)",                     /* \374\210 */
-    "(fs)",                     /* \374\211 */
-    "(gs)",                     /* \374\212 */
-    "(hop)",                    /* \374\213 */
-    "(ht)",                     /* \374\214 */
-    "(htj)",                    /* \374\215 */
-    "(hts)",                    /* \374\216 */
-    "(ind)",                    /* \374\217 */
-    "(lf)",                     /* \374\220 */
-    "(mw)",                     /* \374\221 */
-    "(nak)",                    /* \374\222 */
-    "(nbh)",                    /* \374\223 */
-    "(nel)",                    /* \374\224 */
-    "(nul)",                    /* \374\225 */
-    "(osc)",                    /* \374\226 */
-    "(pad)",                    /* \374\227 */
-    "(pld)",                    /* \374\230 */
-    "(plu)",                    /* \374\231 */
-    "(pm)",                     /* \374\232 */
-    "(pu1)",                    /* \374\233 */
-    "(pu2)",                    /* \374\234 */
-    "(ri)",                     /* \374\235 */
-    "(rs)",                     /* \374\236 */
-    "(sci)",                    /* \374\237 */
-    "(sga)",                    /* \374\240 */
-    "(sgci)",                   /* \374\241 */
-    "(si)",                     /* \374\242 */
-    "(so)",                     /* \374\243 */
-    "(soh)",                    /* \374\244 */
-    "(sos)",                    /* \374\245 */
-    "(ss2)",                    /* \374\246 */
-    "(ss3)",                    /* \374\247 */
-    "(ssa)",                    /* \374\250 */
-    "(st)",                     /* \374\251 */
-    "(sts)",                    /* \374\252 */
-    "(stx)",                    /* \374\253 */
-    "(sub)",                    /* \374\254 */
-    "(syn)",                    /* \374\255 */
-    "(us)",                     /* \374\256 */
-    "(vt)",                     /* \374\257 */
-    "(vts)",                    /* \374\260 */
-    "a-ou",                     /* \374\261 */
-    "a-ô",                      /* \374\262 */
-    "aaru",                     /* \374\263 */
-    "abat-jour",                /* \374\264 */
-    "abîme",                    /* \374\265 */
-    "accentué",                 /* \374\266 */
-    "acceptable",               /* \374\267 */
-    "acceptées",                /* \374\270 */
-    "addak",                    /* \374\271 */
-    "adi",                      /* \374\272 */
-    "africain",                 /* \374\273 */
-    "akat",                     /* \374\274 */
-    "akbar",                    /* \374\275 */
-    "aleph",                    /* \374\276 */
-    "alignés",                  /* \374\277 */
-    "allah",                    /* \374\300 */
-    "aloha",                    /* \374\301 */
-    "alternative",              /* \374\302 */
-    "alvéolaire",               /* \374\303 */
-    "alésage",                  /* \374\304 */
-    "ampères",                  /* \374\305 */
-    "angkhankhou",              /* \374\306 */
-    "angström",                 /* \374\307 */
-    "anneau",                   /* \374\310 */
-    "ano",                      /* \374\311 */
-    "anousvâra",                /* \374\312 */
-    "anpea",                    /* \374\313 */
-    "anti-liant",               /* \374\314 */
-    "anudatta",                 /* \374\315 */
-    "août",                     /* \374\316 */
-    "apaato",                   /* \374\317 */
-    "appel",                    /* \374\320 */
-    "arrondi",                  /* \374\321 */
-    "arrondie",                 /* \374\322 */
-    "arrondis",                 /* \374\323 */
-    "article",                  /* \374\324 */
-    "aruhua",                   /* \374\325 */
-    "arèa-i",                   /* \374\326 */
-    "arèa-o",                   /* \374\327 */
-    "arèa-ou",                  /* \374\330 */
-    "arèè",                     /* \374\331 */
-    "as",                       /* \374\332 */
-    "assertion",                /* \374\333 */
-    "astérique",                /* \374\334 */
-    "astérisme",                /* \374\335 */
-    "atteindre",                /* \374\336 */
-    "attente",                  /* \374\337 */
-    "attention",                /* \374\340 */
-    "aucun",                    /* \374\341 */
-    "aux",                      /* \374\342 */
-    "avion",                    /* \374\343 */
-    "avril",                    /* \374\344 */
-    "ay",                       /* \374\345 */
-    "ayah",                     /* \374\346 */
-    "baareru",                  /* \374\347 */
-    "baht",                     /* \374\350 */
-    "baimai",                   /* \374\351 */
-    "balance",                  /* \374\352 */
-    "bancaire",                 /* \374\353 */
-    "bar",                      /* \374\354 */
-    "barbiche",                 /* \374\355 */
-    "barricade",                /* \374\356 */
-    "base",                     /* \374\357 */
-    "beeta",                    /* \374\360 */
-    "beigne",                   /* \374\361 */
-    "benzène",                  /* \374\362 */
-    "bilabial",                 /* \374\363 */
-    "bindi",                    /* \374\364 */
-    "biologique",               /* \374\365 */
-    "biru",                     /* \374\366 */
-    "bisectrice",               /* \374\367 */
-    "blancs",                   /* \374\370 */
-    "bonhomme",                 /* \374\371 */
-    "bons",                     /* \374\372 */
-    "boruto",                   /* \374\373 */
-    "bouton",                   /* \374\374 */
-    "boîte",                    /* \374\375 */
-    "bq",                       /* \374\376 */
-    "brisée",                   /* \374\377 */
-    "bussyeru",                 /* \375\001 */
-    "bécarre",                  /* \375\002 */
-    "bélier",                   /* \375\003 */
-    "bémol",                    /* \375\004 */
-    "cada",                     /* \375\005 */
-    "cadrat",                   /* \375\006 */
-    "caducée",                  /* \375\007 */
-    "cal",                      /* \375\010 */
-    "cancer",                   /* \375\011 */
-    "capricorne",               /* \375\012 */
-    "care-of",                  /* \375\013 */
-    "carotte",                  /* \375\014 */
-    "catawa",                   /* \375\015 */
-    "cc",                       /* \375\016 */
-    "cd",                       /* \375\017 */
-    "ce",                       /* \375\020 */
-    "ceinture",                 /* \375\021 */
-    "celsius",                  /* \375\022 */
-    "ch",                       /* \375\023 */
-    "chadda",                   /* \375\024 */
-    "chaise",                   /* \375\025 */
-    "chapeau",                  /* \375\026 */
-    "chaudes",                  /* \375\027 */
-    "cheva",                    /* \375\030 */
-    "chevron",                  /* \375\031 */
-    "chevrons",                 /* \375\032 */
-    "chifre",                   /* \375\033 */
-    "chèque",                   /* \375\034 */
-    "circulaire",               /* \375\035 */
-    "citron",                   /* \375\036 */
-    "clavier",                  /* \375\037 */
-    "coché",                    /* \375\040 */
-    "coins",                    /* \375\041 */
-    "commerce",                 /* \375\042 */
-    "complément",               /* \375\043 */
-    "compte",                   /* \375\044 */
-    "compte-client",            /* \375\045 */
-    "comète",                   /* \375\046 */
-    "concave",                  /* \375\047 */
-    "conique",                  /* \375\050 */
-    "conjonction",              /* \375\051 */
-    "conjuguée",                /* \375\052 */
-    "conservateur",             /* \375\053 */
-    "conséquent",               /* \375\054 */
-    "contenant",                /* \375\055 */
-    "contre-cotice",            /* \375\056 */
-    "copie",                    /* \375\057 */
-    "coproduit",                /* \375\060 */
-    "corbeau",                  /* \375\061 */
-    "correct",                  /* \375\062 */
-    "correspond",               /* \375\063 */
-    "coréenne",                 /* \375\064 */
-    "cotice",                   /* \375\065 */
-    "coupe",                    /* \375\066 */
-    "coupure",                  /* \375\067 */
-    "courbé",                   /* \375\070 */
-    "couronne",                 /* \375\071 */
-    "course",                   /* \375\072 */
-    "croche",                   /* \375\073 */
-    "croissant",                /* \375\074 */
-    "croisée",                  /* \375\075 */
-    "cruzeiro",                 /* \375\076 */
-    "cubique",                  /* \375\077 */
-    "cursif",                   /* \375\100 */
-    "cylindricité",             /* \375\101 */
-    "d'abbréviation",           /* \375\102 */
-    "d'abréviation",            /* \375\103 */
-    "d'article",                /* \375\104 */
-    "d'emplacement",            /* \375\105 */
-    "d'enregistrement",         /* \375\106 */
-    "d'ensemble",               /* \375\107 */
-    "d'euler",                  /* \375\110 */
-    "d'exploitation",           /* \375\111 */
-    "d'intérêt",                /* \375\112 */
-    "d'inversion",              /* \375\113 */
-    "d'unité",                  /* \375\114 */
-    "d'échappement",            /* \375\115 */
-    "d'écrire",                 /* \375\116 */
-    "daasu",                    /* \375\117 */
-    "dagech",                   /* \375\120 */
-    "david",                    /* \375\121 */
-    "db",                       /* \375\122 */
-    "dddha",                    /* \375\123 */
-    "dej",                      /* \375\124 */
-    "dek",                      /* \375\125 */
-    "del",                      /* \375\126 */
-    "demi",                     /* \375\127 */
-    "demi-cadrat",              /* \375\130 */
-    "demi-espace",              /* \375\131 */
-    "dental",                   /* \375\132 */
-    "dernier",                  /* \375\133 */
-    "descendant",               /* \375\134 */
-    "descendu",                 /* \375\135 */
-    "desi",                     /* \375\136 */
-    "dessous",                  /* \375\137 */
-    "dharma",                   /* \375\140 */
-    "diagonale",                /* \375\141 */
-    "diamètre",                 /* \375\142 */
-    "digamma",                  /* \375\143 */
-    "dingot",                   /* \375\144 */
-    "directionnel",             /* \375\145 */
-    "divisé",                   /* \375\146 */
-    "dièse",                    /* \375\147 */
-    "djalladjalalouhou",        /* \375\150 */
-    "dl",                       /* \375\151 */
-    "domino",                   /* \375\152 */
-    "dong",                     /* \375\153 */
-    "doru",                     /* \375\154 */
-    "doubles",                  /* \375\155 */
-    "doute",                    /* \375\156 */
-    "décembre",                 /* \375\157 */
-    "décimal",                  /* \375\160 */
-    "définition",               /* \375\161 */
-    "démontrer",                /* \375\162 */
-    "dépilement",               /* \375\163 */
-    "déposée",                  /* \375\164 */
-    "dérivée",                  /* \375\165 */
-    "dérouleur",                /* \375\166 */
-    "eekaa",                    /* \375\167 */
-    "effacement",               /* \375\170 */
-    "effachement",              /* \375\171 */
-    "egal",                     /* \375\172 */
-    "eh",                       /* \375\173 */
-    "el",                       /* \375\174 */
-    "enfer",                    /* \375\175 */
-    "enregistreur",             /* \375\176 */
-    "ensemble",                 /* \375\177 */
-    "entièrement",              /* \375\200 */
-    "entrant",                  /* \375\201 */
-    "enveloppe",                /* \375\202 */
-    "er",                       /* \375\203 */
-    "esh",                      /* \375\204 */
-    "estime",                   /* \375\205 */
-    "estimé",                   /* \375\206 */
-    "esukuudo",                 /* \375\207 */
-    "euro",                     /* \375\210 */
-    "excellent",                /* \375\211 */
-    "exclarrogatif",            /* \375\212 */
-    "exclusif",                 /* \375\213 */
-    "excès",                    /* \375\214 */
-    "existe",                   /* \375\215 */
-    "exécution",                /* \375\216 */
-    "fahrenheit",               /* \375\217 */
-    "fallait",                  /* \375\220 */
-    "fan",                      /* \375\221 */
-    "faucille",                 /* \375\222 */
-    "fermeture",                /* \375\223 */
-    "festival",                 /* \375\224 */
-    "ff",                       /* \375\225 */
-    "ffi",                      /* \375\226 */
-    "ffl",                      /* \375\227 */
-    "fixe",                     /* \375\230 */
-    "fl",                       /* \375\231 */
-    "fm",                       /* \375\232 */
-    "folioles",                 /* \375\233 */
-    "foncée",                   /* \375\234 */
-    "fongman",                  /* \375\235 */
-    "fraisage",                 /* \375\236 */
-    "franc",                    /* \375\237 */
-    "français",                 /* \375\240 */
-    "fuseau",                   /* \375\241 */
-    "féminin",                  /* \375\242 */
-    "février",                  /* \375\243 */
-    "ganma",                    /* \375\244 */
-    "garon",                    /* \375\245 */
-    "gb",                       /* \375\246 */
-    "gerchâïm",                 /* \375\247 */
-    "gerech",                   /* \375\250 */
-    "ghz",                      /* \375\251 */
-    "giga",                     /* \375\252 */
-    "gimel",                    /* \375\253 */
-    "ginii",                    /* \375\254 */
-    "girudaa",                  /* \375\255 */
-    "gn",                       /* \375\256 */
-    "gpa",                      /* \375\257 */
-    "graphique",                /* \375\260 */
-    "grimaçant",                /* \375\261 */
-    "guillemets",               /* \375\262 */
-    "guramu",                   /* \375\263 */
-    "guramuton",                /* \375\264 */
-    "gy",                       /* \375\265 */
-    "gémeaux",                  /* \375\266 */
-    "géométrique",              /* \375\267 */
-    "géorgien",                 /* \375\270 */
-    "gêta",                     /* \375\271 */
-    "haitu",                    /* \375\272 */
-    "han",                      /* \375\273 */
-    "haute",                    /* \375\274 */
-    "heisei",                   /* \375\275 */
-    "hekutaaru",                /* \375\276 */
-    "hermitienne",              /* \375\277 */
-    "herutu",                   /* \375\300 */
-    "het",                      /* \375\301 */
-    "hip",                      /* \375\302 */
-    "hiriq",                    /* \375\303 */
-    "hizb",                     /* \375\304 */
-    "hiûh-miûm",                /* \375\305 */
-    "hiûh-niûn",                /* \375\306 */
-    "hiûh-piûp",                /* \375\307 */
-    "hiûh-riûl",                /* \375\310 */
-    "homothétique",             /* \375\311 */
-    "hon",                      /* \375\312 */
-    "hoon",                     /* \375\313 */
-    "hooru",                    /* \375\314 */
-    "horizontalement",          /* \375\315 */
-    "horizontaux",              /* \375\316 */
-    "hors-tout",                /* \375\317 */
-    "hp",                       /* \375\320 */
-    "hpa",                      /* \375\321 */
-    "huarado",                  /* \375\322 */
-    "huiito",                   /* \375\323 */
-    "huran",                    /* \375\324 */
-    "hv",                       /* \375\325 */
-    "hz",                       /* \375\326 */
-    "i-a",                      /* \375\327 */
-    "i-arèa",                   /* \375\330 */
-    "i-ou",                     /* \375\331 */
-    "i-ya",                     /* \375\332 */
-    "i-ô",                      /* \375\333 */
-    "i-û",                      /* \375\334 */
-    "identification",           /* \375\335 */
-    "ie",                       /* \375\336 */
-    "imprimer",                 /* \375\337 */
-    "incrément",                /* \375\340 */
-    "industrielle",             /* \375\341 */
-    "infini",                   /* \375\342 */
-    "info",                     /* \375\343 */
-    "iningu",                   /* \375\344 */
-    "intercale",                /* \375\345 */
-    "interrompue",              /* \375\346 */
-    "inti",                     /* \375\347 */
-    "inutilisé",                /* \375\350 */
-    "inversé",                  /* \375\351 */
-    "iri",                      /* \375\352 */
-    "iu",                       /* \375\353 */
-    "iûng-k'iûk'",              /* \375\354 */
-    "iûng-miûm",                /* \375\355 */
-    "iûng-p'iûp'",              /* \375\356 */
-    "iûng-pansiôs",             /* \375\357 */
-    "iûng-piûp",                /* \375\360 */
-    "iûng-siôs",                /* \375\361 */
-    "iûng-ssangkiyok",          /* \375\362 */
-    "iûng-t'iût'",              /* \375\363 */
-    "iûng-tch'iûtch'",          /* \375\364 */
-    "iûng-tchiûtch",            /* \375\365 */
-    "iûng-tikût",               /* \375\366 */
-    "janvier",                  /* \375\367 */
-    "japonaise",                /* \375\370 */
-    "judéo-espagnol",           /* \375\371 */
-    "juillet",                  /* \375\372 */
-    "juin",                     /* \375\373 */
-    "jupiter",                  /* \375\374 */
-    "justification",            /* \375\375 */
-    "jérusalem",                /* \375\376 */
-    "kai",                      /* \375\377 */
-    "kairi",                    /* \376\001 */
-    "kapyo-ounriûl",            /* \376\002 */
-    "karatto",                  /* \376\003 */
-    "karorii",                  /* \376\004 */
-    "kb",                       /* \376\005 */
-    "kcal",                     /* \376\006 */
-    "keesu",                    /* \376\007 */
-    "kelvin",                   /* \376\010 */
-    "khai",                     /* \376\011 */
-    "khomout",                  /* \376\012 */
-    "khon",                     /* \376\013 */
-    "khouat",                   /* \376\014 */
-    "khwai",                    /* \376\015 */
-    "khz",                      /* \376\016 */
-    "kiro",                     /* \376\017 */
-    "kiroguramu",               /* \376\020 */
-    "kiromeetoru",              /* \376\021 */
-    "kirowatto",                /* \376\022 */
-    "kiyok-riûl",               /* \376\023 */
-    "kiyok-siôs-kiyok",         /* \376\024 */
-    "kk",                       /* \376\025 */
-    "kl",                       /* \376\026 */
-    "kon",                      /* \376\027 */
-    "koopo",                    /* \376\030 */
-    "koruna",                   /* \376\031 */
-    "koubouts",                 /* \376\032 */
-    "kpa",                      /* \376\033 */
-    "kra",                      /* \376\034 */
-    "kt",                       /* \376\035 */
-    "kuroone",                  /* \376\036 */
-    "kuruzeiro",                /* \376\037 */
-    "kv",                       /* \376\040 */
-    "kw",                       /* \376\041 */
-    "kyurii",                   /* \376\042 */
-    "l'espace",                 /* \376\043 */
-    "l'homme",                  /* \376\044 */
-    "lac",                      /* \376\045 */
-    "lakkhangyao",              /* \376\046 */
-    "laotiens",                 /* \376\047 */
-    "latéral",                  /* \376\050 */
-    "ldjé",                     /* \376\051 */
-    "lej",                      /* \376\052 */
-    "liaison",                  /* \376\053 */
-    "libéral",                  /* \376\054 */
-    "limite",                   /* \376\055 */
-    "lion",                     /* \376\056 */
-    "lire",                     /* \376\057 */
-    "ljé",                      /* \376\060 */
-    "lm",                       /* \376\061 */
-    "ln",                       /* \376\062 */
-    "log",                      /* \376\063 */
-    "lorraine",                 /* \376\064 */
-    "lou",                      /* \376\065 */
-    "lout",                     /* \376\066 */
-    "lunaire",                  /* \376\067 */
-    "lx",                       /* \376\070 */
-    "légère",                   /* \376\071 */
-    "mahha",                    /* \376\072 */
-    "maimalai",                 /* \376\073 */
-    "maimuan",                  /* \376\074 */
-    "maison",                   /* \376\075 */
-    "maitaikhou",               /* \376\076 */
-    "maiyamok",                 /* \376\077 */
-    "makku",                    /* \376\100 */
-    "malte",                    /* \376\101 */
-    "mansyon",                  /* \376\102 */
-    "maqaf",                    /* \376\103 */
-    "marqué",                   /* \376\104 */
-    "mars",                     /* \376\105 */
-    "marteau",                  /* \376\106 */
-    "masculin",                 /* \376\107 */
-    "matrice",                  /* \376\110 */
-    "mayakru",                  /* \376\111 */
-    "mayakuro",                 /* \376\112 */
-    "meetoru",                  /* \376\113 */
-    "meizi",                    /* \376\114 */
-    "mercure",                  /* \376\115 */
-    "mesure",                   /* \376\116 */
-    "meteg",                    /* \376\117 */
-    "mg",                       /* \376\120 */
-    "mhz",                      /* \376\121 */
-    "micro",                    /* \376\122 */
-    "mikuron",                  /* \376\123 */
-    "mil",                      /* \376\124 */
-    "millième",                 /* \376\125 */
-    "minnie",                   /* \376\126 */
-    "miri",                     /* \376\127 */
-    "miribaaru",                /* \376\130 */
-    "mise",                     /* \376\131 */
-    "miûm-hiûh",                /* \376\132 */
-    "miûm-kiyok",               /* \376\133 */
-    "miûm-riûl",                /* \376\134 */
-    "miûm-ssangsiôs",           /* \376\135 */
-    "miûm-tch'iûtch'",          /* \376\136 */
-    "ml",                       /* \376\137 */
-    "mode",                     /* \376\140 */
-    "modélise",                 /* \376\141 */
-    "mohammad",                 /* \376\142 */
-    "moineau",                  /* \376\143 */
-    "moins-ou-plus",            /* \376\144 */
-    "mol",                      /* \376\145 */
-    "montagne",                 /* \376\146 */
-    "montant",                  /* \376\147 */
-    "montre",                   /* \376\150 */
-    "mort",                     /* \376\151 */
-    "mot",                      /* \376\152 */
-    "mouette",                  /* \376\153 */
-    "moyen",                    /* \376\154 */
-    "mpa",                      /* \376\155 */
-    "ms",                       /* \376\156 */
-    "multijection",             /* \376\157 */
-    "médecine",                 /* \376\160 */
-    "médiane",                  /* \376\161 */
-    "médians",                  /* \376\162 */
-    "mégatonne",                /* \376\163 */
-    "n'appartient",             /* \376\164 */
-    "n'est",                    /* \376\165 */
-    "n'existe",                 /* \376\166 */
-    "n'oblige",                 /* \376\167 */
-    "nabla",                    /* \376\170 */
-    "naira",                    /* \376\171 */
-    "nangmontho",               /* \376\172 */
-    "nano",                     /* \376\173 */
-    "nationales",               /* \376\174 */
-    "ndjé",                     /* \376\175 */
-    "nen",                      /* \376\176 */
-    "neptune",                  /* \376\177 */
-    "nf",                       /* \376\200 */
-    "ngu",                      /* \376\201 */
-    "niggahita",                /* \376\202 */
-    "nikhahit",                 /* \376\203 */
-    "niûn-piûp",                /* \376\204 */
-    "niûn-t'iût'",              /* \376\205 */
-    "njé",                      /* \376\206 */
-    "nm",                       /* \376\207 */
-    "noirs",                    /* \376\210 */
-    "nokhouk",                  /* \376\211 */
-    "nominales",                /* \376\212 */
-    "non-barre",                /* \376\213 */
-    "non-et",                   /* \376\214 */
-    "non-ou",                   /* \376\215 */
-    "notto",                    /* \376\216 */
-    "nou",                      /* \376\217 */
-    "nouveau",                  /* \376\220 */
-    "nouvelle",                 /* \376\221 */
-    "novembre",                 /* \376\222 */
-    "ns",                       /* \376\223 */
-    "nuage",                    /* \376\224 */
-    "nuit",                     /* \376\225 */
-    "nv",                       /* \376\226 */
-    "nw",                       /* \376\227 */
-    "o-ou",                     /* \376\230 */
-    "o-ô",                      /* \376\231 */
-    "o-û",                      /* \376\232 */
-    "oblige",                   /* \376\233 */
-    "octet",                    /* \376\234 */
-    "octobre",                  /* \376\235 */
-    "once",                     /* \376\236 */
-    "onkar",                    /* \376\237 */
-    "onsu",                     /* \376\240 */
-    "oomu",                     /* \376\241 */
-    "opposition",               /* \376\242 */
-    "option",                   /* \376\243 */
-    "orage",                    /* \376\244 */
-    "ordonnances",              /* \376\245 */
-    "origine",                  /* \376\246 */
-    "orthodoxe",                /* \376\247 */
-    "ou-a",                     /* \376\250 */
-    "ou-o-û",                   /* \376\251 */
-    "ou-ou",                    /* \376\252 */
-    "ou-yé",                    /* \376\253 */
-    "ou-è",                     /* \376\254 */
-    "oue",                      /* \376\255 */
-    "ouee",                     /* \376\256 */
-    "ouverte",                  /* \376\257 */
-    "ov",                       /* \376\260 */
-    "paasento",                 /* \376\261 */
-    "paatu",                    /* \376\262 */
-    "paix",                     /* \376\263 */
-    "paiyannoi",                /* \376\264 */
-    "palatalisation",           /* \376\265 */
-    "palochka",                 /* \376\266 */
-    "parapluie",                /* \376\267 */
-    "parce",                    /* \376\270 */
-    "partie",                   /* \376\271 */
-    "partielle",                /* \376\272 */
-    "partir",                   /* \376\273 */
-    "paseq",                    /* \376\274 */
-    "pastille",                 /* \376\275 */
-    "pasuq",                    /* \376\276 */
-    "patak",                    /* \376\277 */
-    "pc",                       /* \376\300 */
-    "peezi",                    /* \376\301 */
-    "penihi",                   /* \376\302 */
-    "pensu",                    /* \376\303 */
-    "pente",                    /* \376\304 */
-    "permis",                   /* \376\305 */
-    "perspective",              /* \376\306 */
-    "peseta",                   /* \376\307 */
-    "peso",                     /* \376\310 */
-    "pf",                       /* \376\311 */
-    "ph",                       /* \376\312 */
-    "phan",                     /* \376\313 */
-    "phinthou",                 /* \376\314 */
-    "phonogramme",              /* \376\315 */
-    "phoung",                   /* \376\316 */
-    "phouthao",                 /* \376\317 */
-    "piasutoru",                /* \376\320 */
-    "piko",                     /* \376\321 */
-    "pikuru",                   /* \376\322 */
-    "piûp-hiûh",                /* \376\323 */
-    "piûp-niûn",                /* \376\324 */
-    "piûp-riûl",                /* \376\325 */
-    "piûp-siôs-piûp",           /* \376\326 */
-    "piûp-siôs-tchiûtch",       /* \376\327 */
-    "piûp-ssangsiôs",           /* \376\330 */
-    "piûp-tch'iûtch'",          /* \376\331 */
-    "pla",                      /* \376\332 */
-    "place",                    /* \376\333 */
-    "plus-ou-moins",            /* \376\334 */
-    "pluton",                   /* \376\335 */
-    "pm",                       /* \376\336 */
-    "pointillé",                /* \376\337 */
-    "pointo",                   /* \376\340 */
-    "poissons",                 /* \376\341 */
-    "pommeté",                  /* \376\342 */
-    "pondo",                    /* \376\343 */
-    "position",                 /* \376\344 */
-    "ppm",                      /* \376\345 */
-    "pr",                       /* \376\346 */
-    "precède",                  /* \376\347 */
-    "profil",                   /* \376\350 */
-    "progiciel",                /* \376\351 */
-    "projective",               /* \376\352 */
-    "proportionnel",            /* \376\353 */
-    "prouve",                   /* \376\354 */
-    "précédent",                /* \376\355 */
-    "précédée",                 /* \376\356 */
-    "prédéfini",                /* \376\357 */
-    "ps",                       /* \376\360 */
-    "pv",                       /* \376\361 */
-    "pw",                       /* \376\362 */
-    "qa",                       /* \376\363 */
-    "qala",                     /* \376\364 */
-    "qu'il",                    /* \376\365 */
-    "quad",                     /* \376\366 */
-    "quartefeuille",            /* \376\367 */
-    "radioactivivité",          /* \376\370 */
-    "rail",                     /* \376\371 */
-    "rakhang",                  /* \376\372 */
-    "rapport",                  /* \376\373 */
-    "rasoul",                   /* \376\374 */
-    "rayonnant",                /* \376\375 */
-    "rayé",                     /* \376\376 */
-    "rectangulaire",            /* \376\377 */
-    "religion",                 /* \377\001 */
-    "remu",                     /* \377\002 */
-    "rentogen",                 /* \377\003 */
-    "représente",               /* \377\004 */
-    "rhotacisme",               /* \377\005 */
-    "rhéostat",                 /* \377\006 */
-    "rideaux",                  /* \377\007 */
-    "rira",                     /* \377\010 */
-    "rittoru",                  /* \377\011 */
-    "riûl-k'iûk'",              /* \377\012 */
-    "riûl-kapyo-ounpiûp",       /* \377\013 */
-    "riûl-miûm-kiyok",          /* \377\014 */
-    "riûl-miûm-siôs",           /* \377\015 */
-    "riûl-piûp-hiûh",           /* \377\016 */
-    "riûl-ssangsiôs",           /* \377\017 */
-    "riûl-tikût-hiûh",          /* \377\020 */
-    "rou",                      /* \377\021 */
-    "roua",                     /* \377\022 */
-    "roub",                     /* \377\023 */
-    "roue",                     /* \377\024 */
-    "rousi",                    /* \377\025 */
-    "ruban",                    /* \377\026 */
-    "rupii",                    /* \377\027 */
-    "ruuburu",                  /* \377\030 */
-    "référence",                /* \377\031 */
-    "réponse",                  /* \377\032 */
-    "rétrécissement",           /* \377\033 */
-    "réunion",                  /* \377\034 */
-    "sablier",                  /* \377\035 */
-    "sagittaire",               /* \377\036 */
-    "saikuru",                  /* \377\037 */
-    "sajdah",                   /* \377\040 */
-    "sala",                     /* \377\041 */
-    "salam",                    /* \377\042 */
-    "sallallahou",              /* \377\043 */
-    "samek",                    /* \377\044 */
-    "samekh",                   /* \377\045 */
-    "samphao",                  /* \377\046 */
-    "sampi",                    /* \377\047 */
-    "sanglé",                   /* \377\050 */
-    "santiimu",                 /* \377\051 */
-    "sapin",                    /* \377\052 */
-    "saut",                     /* \377\053 */
-    "scorpion",                 /* \377\054 */
-    "scrupule",                 /* \377\055 */
-    "second",                   /* \377\056 */
-    "seconde",                  /* \377\057 */
-    "secret",                   /* \377\060 */
-    "secteur",                  /* \377\061 */
-    "segment",                  /* \377\062 */
-    "senti",                    /* \377\063 */
-    "sento",                    /* \377\064 */
-    "septembre",                /* \377\065 */
-    "service",                  /* \377\066 */
-    "sh",                       /* \377\067 */
-    "shakti",                   /* \377\070 */
-    "shékel",                   /* \377\071 */
-    "sinusoïde",                /* \377\072 */
-    "siringu",                  /* \377\073 */
-    "sixièmes",                 /* \377\074 */
-    "sixtefeuille",             /* \377\075 */
-    "siôs-hiûh",                /* \377\076 */
-    "siôs-iûng",                /* \377\077 */
-    "siôs-k'iûk'",              /* \377\100 */
-    "siôs-miûm",                /* \377\101 */
-    "siôs-p'iûp'",              /* \377\102 */
-    "siôs-piûp-kiyok",          /* \377\103 */
-    "siôs-ssangsiôs",           /* \377\104 */
-    "siôs-t'iût'",              /* \377\105 */
-    "siôs-tch'iûtch'",          /* \377\106 */
-    "sof",                      /* \377\107 */
-    "soi",                      /* \377\110 */
-    "soins",                    /* \377\111 */
-    "sommation",                /* \377\112 */
-    "sortant",                  /* \377\113 */
-    "soua",                     /* \377\114 */
-    "sources",                  /* \377\115 */
-    "sourire",                  /* \377\116 */
-    "sous-article",             /* \377\117 */
-    "sphérique",                /* \377\120 */
-    "sr",                       /* \377\121 */
-    "ssangarèa",                /* \377\122 */
-    "st",                       /* \377\123 */
-    "stigma",                   /* \377\124 */
-    "succursale",               /* \377\125 */
-    "suivante",                 /* \377\126 */
-    "supervise",                /* \377\127 */
-    "superviser",               /* \377\130 */
-    "surface",                  /* \377\131 */
-    "sv",                       /* \377\132 */
-    "symbolw",                  /* \377\133 */
-    "symétrie",                 /* \377\134 */
-    "syouwa",                   /* \377\135 */
-    "système",                  /* \377\136 */
-    "séquence",                 /* \377\137 */
-    "sérieux",                  /* \377\140 */
-    "sûr",                      /* \377\141 */
-    "tah",                      /* \377\142 */
-    "taisyou",                  /* \377\143 */
-    "tao",                      /* \377\144 */
-    "taureau",                  /* \377\145 */
-    "tc",                       /* \377\146 */
-    "tch'itouûmsiôs",           /* \377\147 */
-    "tch'itouûmssangsiôs",      /* \377\150 */
-    "tch'itouûmssangtchiûtch",  /* \377\151 */
-    "tch'itouûmtch'iûtch'",     /* \377\152 */
-    "tch'itouûmtchiûtch",       /* \377\153 */
-    "tch'iûtch'-hiûh",          /* \377\154 */
-    "tch'iûtch'-k'iûk'",        /* \377\155 */
-    "tchada",                   /* \377\156 */
-    "tchan",                    /* \377\157 */
-    "tchang",                   /* \377\160 */
-    "tchattawa",                /* \377\161 */
-    "tching",                   /* \377\162 */
-    "tchiûtch-iûng",            /* \377\163 */
-    "tchoe",                    /* \377\164 */
-    "tchongtch'iûmsiôs",        /* \377\165 */
-    "tchongtch'iûmssangsiôs",   /* \377\166 */
-    "tchongtch'iûmssangtchiûtch",/* \377\167 */
-    "tchongtch'iûmtch'iûtch'",  /* \377\170 */
-    "tchongtch'iûmtchiûtch",    /* \377\171 */
-    "tchoula",                  /* \377\172 */
-    "teleia",                   /* \377\173 */
-    "tend",                     /* \377\174 */
-    "thahan",                   /* \377\175 */
-    "thanthakhat",              /* \377\176 */
-    "thong",                    /* \377\177 */
-    "thoung",                   /* \377\200 */
-    "thz",                      /* \377\201 */
-    "tikût-riûl",               /* \377\202 */
-    "tippi",                    /* \377\203 */
-    "tja",                      /* \377\204 */
-    "tjo",                      /* \377\205 */
-    "tonne",                    /* \377\206 */
-    "tonnerre",                 /* \377\207 */
-    "totale",                   /* \377\210 */
-    "touche",                   /* \377\211 */
-    "tous",                     /* \377\212 */
-    "train",                    /* \377\213 */
-    "traits",                   /* \377\214 */
-    "transpercés",              /* \377\215 */
-    "trappu",                   /* \377\216 */
-    "trappue",                  /* \377\217 */
-    "traçage",                  /* \377\220 */
-    "trente",                   /* \377\221 */
-    "trente-et-un",             /* \377\222 */
-    "tri",                      /* \377\223 */
-    "triangulaires",            /* \377\224 */
-    "troisième",                /* \377\225 */
-    "tréflée",                  /* \377\226 */
-    "ts",                       /* \377\227 */
-    "tsere",                    /* \377\230 */
-    "tèche",                    /* \377\231 */
-    "téléphonique",             /* \377\232 */
-    "tête",                     /* \377\233 */
-    "udatta",                   /* \377\234 */
-    "ultra-fine",               /* \377\235 */
-    "una",                      /* \377\236 */
-    "une",                      /* \377\237 */
-    "uon",                      /* \377\240 */
-    "ura",                      /* \377\241 */
-    "uranus",                   /* \377\242 */
-    "uu",                       /* \377\243 */
-    "variant",                  /* \377\244 */
-    "varika",                   /* \377\245 */
-    "vent",                     /* \377\246 */
-    "verrou",                   /* \377\247 */
-    "verseau",                  /* \377\250 */
-    "versicule",                /* \377\251 */
-    "verticaux",                /* \377\252 */
-    "vi",                       /* \377\253 */
-    "victoire",                 /* \377\254 */
-    "vide",                     /* \377\255 */
-    "vidée",                    /* \377\256 */
-    "vierge",                   /* \377\257 */
-    "vingt-cinq",               /* \377\260 */
-    "vingt-huit",               /* \377\261 */
-    "vingt-neuf",               /* \377\262 */
-    "vingt-sept",               /* \377\263 */
-    "vingt-six",                /* \377\264 */
-    "virtuel",                  /* \377\265 */
-    "visualisation",            /* \377\266 */
-    "visuel",                   /* \377\267 */
-    "volume",                   /* \377\270 */
-    "waen",                     /* \377\271 */
-    "watto",                    /* \377\272 */
-    "wb",                       /* \377\273 */
-    "wynn",                     /* \377\274 */
-    "ya-yô",                    /* \377\275 */
-    "ya-ô",                     /* \377\276 */
-    "yaado",                    /* \377\277 */
-    "yaaru",                    /* \377\300 */
-    "yak",                      /* \377\301 */
-    "yamakkan",                 /* \377\302 */
-    "yang",                     /* \377\303 */
-    "yin",                      /* \377\304 */
-    "ying",                     /* \377\305 */
-    "yo-ou",                    /* \377\306 */
-    "yo-ô",                     /* \377\307 */
-    "yot",                      /* \377\310 */
-    "you-a",                    /* \377\311 */
-    "you-o",                    /* \377\312 */
-    "you-ou",                   /* \377\313 */
-    "you-é",                    /* \377\314 */
-    "yr",                       /* \377\315 */
-    "yuan",                     /* \377\316 */
-    "yô-yo",                    /* \377\317 */
-    "yô-ô",                     /* \377\320 */
-    "zh",                       /* \377\321 */
-    "zigzag",                   /* \377\322 */
-    "zilde",                    /* \377\323 */
-    "éclair",                   /* \377\324 */
-    "écrasé",                   /* \377\325 */
-    "écu",                      /* \377\326 */
-    "égalité",                  /* \377\327 */
-    "égyptienne",               /* \377\330 */
-    "épaisse",                  /* \377\331 */
-    "équiangulaire",            /* \377\332 */
-    "étagère",                  /* \377\333 */
-    "étiré",                    /* \377\334 */
-    "ô-o",                      /* \377\335 */
-    "ô-ou",                     /* \377\336 */
-    "ô-yé",                     /* \377\337 */
-    "ô-é",                      /* \377\340 */
-    "ô-ô",                      /* \377\341 */
-    "û-ou",                     /* \377\342 */
-    "û-û",                      /* \377\343 */
-    "ûi-ou",                    /* \377\344 */
+    "<=",                       /* \373\023 */
+    "accusé",                   /* \373\024 */
+    "activateur",               /* \373\025 */
+    "aib",                      /* \373\026 */
+    "alayhe",                   /* \373\027 */
+    "alliance",                 /* \373\030 */
+    "ang",                      /* \373\031 */
+    "annulation",               /* \373\032 */
+    "appartient",               /* \373\033 */
+    "arrière",                  /* \373\034 */
+    "arèa",                     /* \373\035 */
+    "ascendant",                /* \373\036 */
+    "astérisque-hélice",        /* \373\037 */
+    "asymptotiquement",         /* \373\040 */
+    "avoir",                    /* \373\041 */
+    "aïn",                      /* \373\042 */
+    "ban",                      /* \373\043 */
+    "bashkir",                  /* \373\044 */
+    "be",                       /* \373\045 */
+    "beaucoup",                 /* \373\046 */
+    "bec",                      /* \373\047 */
+    "bi",                       /* \373\050 */
+    "bien",                     /* \373\051 */
+    "biélorusse",               /* \373\052 */
+    "biélorusse-ukrainien",     /* \373\053 */
+    "bois",                     /* \373\054 */
+    "bu",                       /* \373\055 */
+    "bé",                       /* \373\056 */
+    "carreau",                  /* \373\057 */
+    "cavalier",                 /* \373\060 */
+    "cciar",                    /* \373\061 */
+    "central",                  /* \373\062 */
+    "centré",                   /* \373\063 */
+    "cents",                    /* \373\064 */
+    "chan",                     /* \373\065 */
+    "changement",               /* \373\066 */
+    "chariot",                  /* \373\067 */
+    "chhan",                    /* \373\070 */
+    "chtcha",                   /* \373\071 */
+    "cin",                      /* \373\072 */
+    "cinquante",                /* \373\073 */
+    "colon",                    /* \373\074 */
+    "considéralement",          /* \373\075 */
+    "consonne",                 /* \373\076 */
+    "copyright",                /* \373\077 */
+    "coranique",                /* \373\100 */
+    "coronis",                  /* \373\101 */
+    "courbée",                  /* \373\102 */
+    "cqar",                     /* \373\103 */
+    "croches",                  /* \373\104 */
+    "d'accolade",               /* \373\105 */
+    "d'accusé",                 /* \373\106 */
+    "d'annulation",             /* \373\107 */
+    "d'arrêt",                  /* \373\110 */
+    "d'en-tête",                /* \373\111 */
+    "d'insertion",              /* \373\112 */
+    "d'intégrale",              /* \373\113 */
+    "d'une",                    /* \373\114 */
+    "d'échange",                /* \373\115 */
+    "dame",                     /* \373\116 */
+    "danda",                    /* \373\117 */
+    "danger",                   /* \373\120 */
+    "dché",                     /* \373\121 */
+    "dei",                      /* \373\122 */
+    "demande",                  /* \373\123 */
+    "demi-anneau",              /* \373\124 */
+    "demi-disque",              /* \373\125 */
+    "demi-voyelle",             /* \373\126 */
+    "dessus",                   /* \373\127 */
+    "deuxième",                 /* \373\130 */
+    "di",                       /* \373\131 */
+    "diagonaux",                /* \373\132 */
+    "différence",               /* \373\133 */
+    "disque",                   /* \373\134 */
+    "diviseur",                 /* \373\135 */
+    "djhe",                     /* \373\136 */
+    "don",                      /* \373\137 */
+    "dsa",                      /* \373\140 */
+    "dza",                      /* \373\141 */
+    "dzêta",                    /* \373\142 */
+    "dé",                       /* \373\143 */
+    "dénominateur",             /* \373\144 */
+    "ed",                       /* \373\145 */
+    "effe",                     /* \373\146 */
+    "ei",                       /* \373\147 */
+    "elle",                     /* \373\150 */
+    "emme",                     /* \373\151 */
+    "enchâssement",             /* \373\152 */
+    "encochée",                 /* \373\153 */
+    "entreprise",               /* \373\154 */
+    "erre",                     /* \373\155 */
+    "facteur",                  /* \373\156 */
+    "far",                      /* \373\157 */
+    "fe",                       /* \373\160 */
+    "fei",                      /* \373\161 */
+    "femelle",                  /* \373\162 */
+    "fi",                       /* \373\163 */
+    "fichier",                  /* \373\164 */
+    "financier",                /* \373\165 */
+    "fine",                     /* \373\166 */
+    "fita",                     /* \373\167 */
+    "floral",                   /* \373\170 */
+    "formage",                  /* \373\171 */
+    "formatage",                /* \373\172 */
+    "formes",                   /* \373\173 */
+    "forçage",                  /* \373\174 */
+    "fou",                      /* \373\175 */
+    "fourche",                  /* \373\176 */
+    "fourchette",               /* \373\177 */
+    "fractionnaire",            /* \373\200 */
+    "félicitations",            /* \373\201 */
+    "gauche-droite",            /* \373\202 */
+    "ge",                       /* \373\203 */
+    "ghan",                     /* \373\204 */
+    "ghat",                     /* \373\205 */
+    "ghha",                     /* \373\206 */
+    "ghhan",                    /* \373\207 */
+    "gi",                       /* \373\210 */
+    "gian",                     /* \373\211 */
+    "giangia",                  /* \373\212 */
+    "gim",                      /* \373\213 */
+    "gjé",                      /* \373\214 */
+    "go",                       /* \373\215 */
+    "groupe",                   /* \373\216 */
+    "gu",                       /* \373\217 */
+    "guimel",                   /* \373\220 */
+    "géométriquement",          /* \373\221 */
+    "hhae",                     /* \373\222 */
+    "hhar",                     /* \373\223 */
+    "hhoe",                     /* \373\224 */
+    "hie",                      /* \373\225 */
+    "holam",                    /* \373\226 */
+    "hori",                     /* \373\227 */
+    "hors",                     /* \373\230 */
+    "hue",                      /* \373\231 */
+    "ia",                       /* \373\232 */
+    "ici",                      /* \373\233 */
+    "identique",                /* \373\234 */
+    "ij",                       /* \373\235 */
+    "il",                       /* \373\236 */
+    "inhibiteur",               /* \373\237 */
+    "insécable",                /* \373\240 */
+    "io",                       /* \373\241 */
+    "iou",                      /* \373\242 */
+    "isshar",                   /* \373\243 */
+    "iûng-kiyok",               /* \373\244 */
+    "je",                       /* \373\245 */
+    "jeth",                     /* \373\246 */
+    "kapyo-ounssangpiûp",       /* \373\247 */
+    "kazakhe",                  /* \373\250 */
+    "kg",                       /* \373\251 */
+    "khakassien",               /* \373\252 */
+    "khei",                     /* \373\253 */
+    "khha",                     /* \373\254 */
+    "kien",                     /* \373\255 */
+    "kjé",                      /* \373\256 */
+    "ksi",                      /* \373\257 */
+    "l'arrière",                /* \373\260 */
+    "lame",                     /* \373\261 */
+    "larmées",                  /* \373\262 */
+    "las",                      /* \373\263 */
+    "liant",                    /* \373\264 */
+    "ling",                     /* \373\265 */
+    "liun",                     /* \373\266 */
+    "livre",                    /* \373\267 */
+    "lj",                       /* \373\270 */
+    "main",                     /* \373\271 */
+    "man",                      /* \373\272 */
+    "marchandises",             /* \373\273 */
+    "mb",                       /* \373\274 */
+    "message",                  /* \373\275 */
+    "mesuré",                   /* \373\276 */
+    "milliers",                 /* \373\277 */
+    "mince",                    /* \373\300 */
+    "miûm-pansiôs",             /* \373\301 */
+    "miûm-siôs",                /* \373\302 */
+    "molette",                  /* \373\303 */
+    "mouche",                   /* \373\304 */
+    "moue",                     /* \373\305 */
+    "mouillure",                /* \373\306 */
+    "moyenne",                  /* \373\307 */
+    "mv",                       /* \373\310 */
+    "mw",                       /* \373\311 */
+    "mâle",                     /* \373\312 */
+    "métal",                    /* \373\313 */
+    "nar",                      /* \373\314 */
+    "ngo",                      /* \373\315 */
+    "niûn-kiyok",               /* \373\316 */
+    "niûn-pansiôs",             /* \373\317 */
+    "niûn-siôs",                /* \373\320 */
+    "nj",                       /* \373\321 */
+    "nnna",                     /* \373\322 */
+    "nom",                      /* \373\323 */
+    "norme",                    /* \373\324 */
+    "note",                     /* \373\325 */
+    "nul",                      /* \373\326 */
+    "numéral",                  /* \373\327 */
+    "numérique",                /* \373\330 */
+    "numéro",                   /* \373\331 */
+    "obliquement",              /* \373\332 */
+    "obèle",                    /* \373\333 */
+    "oh",                       /* \373\334 */
+    "om",                       /* \373\335 */
+    "on",                       /* \373\336 */
+    "ondé",                     /* \373\337 */
+    "ordinal",                  /* \373\340 */
+    "ornée",                    /* \373\341 */
+    "otte",                     /* \373\342 */
+    "ouk",                      /* \373\343 */
+    "oï",                       /* \373\344 */
+    "p'iûp'-piûp",              /* \373\345 */
+    "page",                     /* \373\346 */
+    "papillon",                 /* \373\347 */
+    "parallélogramme",          /* \373\350 */
+    "partiel",                  /* \373\351 */
+    "penchée",                  /* \373\352 */
+    "percé",                    /* \373\353 */
+    "pied",                     /* \373\354 */
+    "pion",                     /* \373\355 */
+    "piur",                     /* \373\356 */
+    "piûp-kiyok",               /* \373\357 */
+    "piûp-p'iûp'",              /* \373\360 */
+    "piûp-siôs-kiyok",          /* \373\361 */
+    "piûp-siôs-tikût",          /* \373\362 */
+    "piûp-t'iût'",              /* \373\363 */
+    "piûp-tchiûtch",            /* \373\364 */
+    "piûp-tikût",               /* \373\365 */
+    "plafond",                  /* \373\366 */
+    "plancher",                 /* \373\367 */
+    "planck",                   /* \373\370 */
+    "plein",                    /* \373\371 */
+    "plume",                    /* \373\372 */
+    "pneumata",                 /* \373\373 */
+    "pommetée",                 /* \373\374 */
+    "pont",                     /* \373\375 */
+    "premier",                  /* \373\376 */
+    "projetée",                 /* \373\377 */
+    "proportion",               /* \374\001 */
+    "protégée",                 /* \374\002 */
+    "précédant",                /* \374\003 */
+    "pu",                       /* \374\004 */
+    "qof",                      /* \374\005 */
+    "quadrillé",                /* \374\006 */
+    "quartier",                 /* \374\007 */
+    "quatrième",                /* \374\010 */
+    "quintefeuille",            /* \374\011 */
+    "rae",                      /* \374\012 */
+    "ramées",                   /* \374\013 */
+    "rayonnante",               /* \374\014 */
+    "rayons",                   /* \374\015 */
+    "recourbé",                 /* \374\016 */
+    "rectiligne",               /* \374\017 */
+    "relation",                 /* \374\020 */
+    "repos",                    /* \374\021 */
+    "ressource",                /* \374\022 */
+    "retour",                   /* \374\023 */
+    "riûl-kiyok-siôs",          /* \374\024 */
+    "riûl-niûn",                /* \374\025 */
+    "riûl-pansiôs",             /* \374\026 */
+    "riûl-piûp-siôs",           /* \374\027 */
+    "riûl-tikût",               /* \374\030 */
+    "riûl-yorinhiûh",           /* \374\031 */
+    "roi",                      /* \374\032 */
+    "réfléchie",                /* \374\033 */
+    "salla",                    /* \374\034 */
+    "san",                      /* \374\035 */
+    "saturne",                  /* \374\036 */
+    "scei",                     /* \374\037 */
+    "scima",                    /* \374\040 */
+    "scin",                     /* \374\041 */
+    "segol",                    /* \374\042 */
+    "semi-circulaire",          /* \374\043 */
+    "sgian",                    /* \374\044 */
+    "shha",                     /* \374\045 */
+    "siôs-niûn",                /* \374\046 */
+    "siôs-riûl",                /* \374\047 */
+    "siôs-tchiûtch",            /* \374\050 */
+    "sonnerie",                 /* \374\051 */
+    "souriant",                 /* \374\052 */
+    "spécial",                  /* \374\053 */
+    "ssanghiûh",                /* \374\054 */
+    "ssangniûn",                /* \374\055 */
+    "ssangriûl",                /* \374\056 */
+    "substitution",             /* \374\057 */
+    "suivant",                  /* \374\060 */
+    "support",                  /* \374\061 */
+    "suppression",              /* \374\062 */
+    "suspension",               /* \374\063 */
+    "symétrique",               /* \374\064 */
+    "synchronisation",          /* \374\065 */
+    "szen",                     /* \374\066 */
+    "sélecteur",                /* \374\067 */
+    "sélectionnée",             /* \374\070 */
+    "tar",                      /* \374\071 */
+    "tatouïl",                  /* \374\072 */
+    "tau",                      /* \374\073 */
+    "tce",                      /* \374\074 */
+    "tet",                      /* \374\075 */
+    "thorn",                    /* \374\076 */
+    "thue",                     /* \374\077 */
+    "tikût-kiyok",              /* \374\100 */
+    "tirant",                   /* \374\101 */
+    "tire-bouchon",             /* \374\102 */
+    "tiun",                     /* \374\103 */
+    "tour",                     /* \374\104 */
+    "travail",                  /* \374\105 */
+    "trompe-l'oeil",            /* \374\106 */
+    "trèfle",                   /* \374\107 */
+    "très",                     /* \374\110 */
+    "ukrainien",                /* \374\111 */
+    "usage",                    /* \374\112 */
+    "utilisé",                  /* \374\113 */
+    "vecteur",                  /* \374\114 */
+    "vin",                      /* \374\115 */
+    "vingt-deux",               /* \374\116 */
+    "vingt-et-un",              /* \374\117 */
+    "vingt-quatre",             /* \374\120 */
+    "vingt-trois",              /* \374\121 */
+    "visible",                  /* \374\122 */
+    "voisée",                   /* \374\123 */
+    "vrai",                     /* \374\124 */
+    "vu",                       /* \374\125 */
+    "vé",                       /* \374\126 */
+    "vérification",             /* \374\127 */
+    "wasallam",                 /* \374\130 */
+    "won",                      /* \374\131 */
+    "xi",                       /* \374\132 */
+    "yate",                     /* \374\133 */
+    "yen",                      /* \374\134 */
+    "yesiûng-pansiôs",          /* \374\135 */
+    "yesiûng-siôs",             /* \374\136 */
+    "you-i",                    /* \374\137 */
+    "you-yo",                   /* \374\140 */
+    "you-yé",                   /* \374\141 */
+    "yô-i",                     /* \374\142 */
+    "yô-ya",                    /* \374\143 */
+    "yô-yè",                    /* \374\144 */
+    "zaïn",                     /* \374\145 */
+    "ze",                       /* \374\146 */
+    "zi",                       /* \374\147 */
+    "zil",                      /* \374\150 */
+    "zo",                       /* \374\151 */
+    "zu",                       /* \374\152 */
+    "zzan",                     /* \374\153 */
+    "zzil",                     /* \374\154 */
+    "éclairée",                 /* \374\155 */
+    "étincellement",            /* \374\156 */
+    "étude",                    /* \374\157 */
+    "ño",                       /* \374\160 */
+    "(ack)",                    /* \374\161 */
+    "(apc)",                    /* \374\162 */
+    "(bel)",                    /* \374\163 */
+    "(bph)",                    /* \374\164 */
+    "(bs)",                     /* \374\165 */
+    "(can)",                    /* \374\166 */
+    "(cch)",                    /* \374\167 */
+    "(cr)",                     /* \374\170 */
+    "(csi)",                    /* \374\171 */
+    "(dc1)",                    /* \374\172 */
+    "(dc2)",                    /* \374\173 */
+    "(dc3)",                    /* \374\174 */
+    "(dc4)",                    /* \374\175 */
+    "(dcs)",                    /* \374\176 */
+    "(del)",                    /* \374\177 */
+    "(dle)",                    /* \374\200 */
+    "(ega)",                    /* \374\201 */
+    "(em)",                     /* \374\202 */
+    "(enq)",                    /* \374\203 */
+    "(eot)",                    /* \374\204 */
+    "(esa)",                    /* \374\205 */
+    "(esc)",                    /* \374\206 */
+    "(etb)",                    /* \374\207 */
+    "(etx)",                    /* \374\210 */
+    "(ff)",                     /* \374\211 */
+    "(fs)",                     /* \374\212 */
+    "(gs)",                     /* \374\213 */
+    "(hop)",                    /* \374\214 */
+    "(ht)",                     /* \374\215 */
+    "(htj)",                    /* \374\216 */
+    "(hts)",                    /* \374\217 */
+    "(ind)",                    /* \374\220 */
+    "(lf)",                     /* \374\221 */
+    "(mw)",                     /* \374\222 */
+    "(nak)",                    /* \374\223 */
+    "(nbh)",                    /* \374\224 */
+    "(nel)",                    /* \374\225 */
+    "(nul)",                    /* \374\226 */
+    "(osc)",                    /* \374\227 */
+    "(pad)",                    /* \374\230 */
+    "(pld)",                    /* \374\231 */
+    "(plu)",                    /* \374\232 */
+    "(pm)",                     /* \374\233 */
+    "(pu1)",                    /* \374\234 */
+    "(pu2)",                    /* \374\235 */
+    "(ri)",                     /* \374\236 */
+    "(rs)",                     /* \374\237 */
+    "(sci)",                    /* \374\240 */
+    "(sga)",                    /* \374\241 */
+    "(sgci)",                   /* \374\242 */
+    "(si)",                     /* \374\243 */
+    "(so)",                     /* \374\244 */
+    "(soh)",                    /* \374\245 */
+    "(sos)",                    /* \374\246 */
+    "(ss2)",                    /* \374\247 */
+    "(ss3)",                    /* \374\250 */
+    "(ssa)",                    /* \374\251 */
+    "(st)",                     /* \374\252 */
+    "(sts)",                    /* \374\253 */
+    "(stx)",                    /* \374\254 */
+    "(sub)",                    /* \374\255 */
+    "(syn)",                    /* \374\256 */
+    "(us)",                     /* \374\257 */
+    "(vt)",                     /* \374\260 */
+    "(vts)",                    /* \374\261 */
+    "a-ou",                     /* \374\262 */
+    "a-ô",                      /* \374\263 */
+    "aaru",                     /* \374\264 */
+    "abat-jour",                /* \374\265 */
+    "abîme",                    /* \374\266 */
+    "accentué",                 /* \374\267 */
+    "acceptable",               /* \374\270 */
+    "acceptées",                /* \374\271 */
+    "addak",                    /* \374\272 */
+    "adi",                      /* \374\273 */
+    "africain",                 /* \374\274 */
+    "akat",                     /* \374\275 */
+    "akbar",                    /* \374\276 */
+    "aleph",                    /* \374\277 */
+    "alignés",                  /* \374\300 */
+    "allah",                    /* \374\301 */
+    "aloha",                    /* \374\302 */
+    "alternative",              /* \374\303 */
+    "alvéolaire",               /* \374\304 */
+    "alésage",                  /* \374\305 */
+    "ampères",                  /* \374\306 */
+    "angkhankhou",              /* \374\307 */
+    "angström",                 /* \374\310 */
+    "anneau",                   /* \374\311 */
+    "ano",                      /* \374\312 */
+    "anousvâra",                /* \374\313 */
+    "anpea",                    /* \374\314 */
+    "anti-liant",               /* \374\315 */
+    "anudatta",                 /* \374\316 */
+    "août",                     /* \374\317 */
+    "apaato",                   /* \374\320 */
+    "appel",                    /* \374\321 */
+    "arrondi",                  /* \374\322 */
+    "arrondie",                 /* \374\323 */
+    "arrondis",                 /* \374\324 */
+    "article",                  /* \374\325 */
+    "aruhua",                   /* \374\326 */
+    "arèa-i",                   /* \374\327 */
+    "arèa-o",                   /* \374\330 */
+    "arèa-ou",                  /* \374\331 */
+    "arèè",                     /* \374\332 */
+    "as",                       /* \374\333 */
+    "assertion",                /* \374\334 */
+    "astérique",                /* \374\335 */
+    "astérisme",                /* \374\336 */
+    "atteindre",                /* \374\337 */
+    "attente",                  /* \374\340 */
+    "attention",                /* \374\341 */
+    "aucun",                    /* \374\342 */
+    "aux",                      /* \374\343 */
+    "avion",                    /* \374\344 */
+    "avril",                    /* \374\345 */
+    "ay",                       /* \374\346 */
+    "ayah",                     /* \374\347 */
+    "baareru",                  /* \374\350 */
+    "baht",                     /* \374\351 */
+    "baimai",                   /* \374\352 */
+    "balance",                  /* \374\353 */
+    "bancaire",                 /* \374\354 */
+    "bar",                      /* \374\355 */
+    "barbiche",                 /* \374\356 */
+    "barricade",                /* \374\357 */
+    "base",                     /* \374\360 */
+    "beeta",                    /* \374\361 */
+    "beigne",                   /* \374\362 */
+    "benzène",                  /* \374\363 */
+    "bilabial",                 /* \374\364 */
+    "bindi",                    /* \374\365 */
+    "biologique",               /* \374\366 */
+    "biru",                     /* \374\367 */
+    "bisectrice",               /* \374\370 */
+    "blancs",                   /* \374\371 */
+    "bonhomme",                 /* \374\372 */
+    "bons",                     /* \374\373 */
+    "boruto",                   /* \374\374 */
+    "bouton",                   /* \374\375 */
+    "boîte",                    /* \374\376 */
+    "bq",                       /* \374\377 */
+    "brisée",                   /* \375\001 */
+    "bussyeru",                 /* \375\002 */
+    "bécarre",                  /* \375\003 */
+    "bélier",                   /* \375\004 */
+    "bémol",                    /* \375\005 */
+    "cada",                     /* \375\006 */
+    "cadrat",                   /* \375\007 */
+    "caducée",                  /* \375\010 */
+    "cal",                      /* \375\011 */
+    "cancer",                   /* \375\012 */
+    "capricorne",               /* \375\013 */
+    "care-of",                  /* \375\014 */
+    "carotte",                  /* \375\015 */
+    "catawa",                   /* \375\016 */
+    "cc",                       /* \375\017 */
+    "cd",                       /* \375\020 */
+    "ce",                       /* \375\021 */
+    "ceinture",                 /* \375\022 */
+    "celsius",                  /* \375\023 */
+    "ch",                       /* \375\024 */
+    "chadda",                   /* \375\025 */
+    "chaise",                   /* \375\026 */
+    "chapeau",                  /* \375\027 */
+    "chaudes",                  /* \375\030 */
+    "cheva",                    /* \375\031 */
+    "chevron",                  /* \375\032 */
+    "chevrons",                 /* \375\033 */
+    "chifre",                   /* \375\034 */
+    "chèque",                   /* \375\035 */
+    "circulaire",               /* \375\036 */
+    "citron",                   /* \375\037 */
+    "clavier",                  /* \375\040 */
+    "coché",                    /* \375\041 */
+    "coins",                    /* \375\042 */
+    "commerce",                 /* \375\043 */
+    "complément",               /* \375\044 */
+    "compte",                   /* \375\045 */
+    "compte-client",            /* \375\046 */
+    "comète",                   /* \375\047 */
+    "concave",                  /* \375\050 */
+    "conique",                  /* \375\051 */
+    "conjonction",              /* \375\052 */
+    "conjuguée",                /* \375\053 */
+    "conservateur",             /* \375\054 */
+    "conséquent",               /* \375\055 */
+    "contenant",                /* \375\056 */
+    "contre-cotice",            /* \375\057 */
+    "copie",                    /* \375\060 */
+    "coproduit",                /* \375\061 */
+    "corbeau",                  /* \375\062 */
+    "correct",                  /* \375\063 */
+    "correspond",               /* \375\064 */
+    "coréenne",                 /* \375\065 */
+    "cotice",                   /* \375\066 */
+    "coupe",                    /* \375\067 */
+    "coupure",                  /* \375\070 */
+    "courbé",                   /* \375\071 */
+    "couronne",                 /* \375\072 */
+    "course",                   /* \375\073 */
+    "croche",                   /* \375\074 */
+    "croissant",                /* \375\075 */
+    "croisée",                  /* \375\076 */
+    "cruzeiro",                 /* \375\077 */
+    "cubique",                  /* \375\100 */
+    "cursif",                   /* \375\101 */
+    "cylindricité",             /* \375\102 */
+    "d'abbréviation",           /* \375\103 */
+    "d'abréviation",            /* \375\104 */
+    "d'article",                /* \375\105 */
+    "d'emplacement",            /* \375\106 */
+    "d'enregistrement",         /* \375\107 */
+    "d'ensemble",               /* \375\110 */
+    "d'euler",                  /* \375\111 */
+    "d'exploitation",           /* \375\112 */
+    "d'intérêt",                /* \375\113 */
+    "d'inversion",              /* \375\114 */
+    "d'unité",                  /* \375\115 */
+    "d'échappement",            /* \375\116 */
+    "d'écrire",                 /* \375\117 */
+    "daasu",                    /* \375\120 */
+    "dagech",                   /* \375\121 */
+    "david",                    /* \375\122 */
+    "db",                       /* \375\123 */
+    "dddha",                    /* \375\124 */
+    "dej",                      /* \375\125 */
+    "dek",                      /* \375\126 */
+    "del",                      /* \375\127 */
+    "demi",                     /* \375\130 */
+    "demi-cadrat",              /* \375\131 */
+    "demi-espace",              /* \375\132 */
+    "dental",                   /* \375\133 */
+    "dernier",                  /* \375\134 */
+    "descendant",               /* \375\135 */
+    "descendu",                 /* \375\136 */
+    "desi",                     /* \375\137 */
+    "dessous",                  /* \375\140 */
+    "dharma",                   /* \375\141 */
+    "diagonale",                /* \375\142 */
+    "diamètre",                 /* \375\143 */
+    "digamma",                  /* \375\144 */
+    "dingot",                   /* \375\145 */
+    "directionnel",             /* \375\146 */
+    "divisé",                   /* \375\147 */
+    "dièse",                    /* \375\150 */
+    "djalladjalalouhou",        /* \375\151 */
+    "dl",                       /* \375\152 */
+    "domino",                   /* \375\153 */
+    "dong",                     /* \375\154 */
+    "doru",                     /* \375\155 */
+    "doubles",                  /* \375\156 */
+    "doute",                    /* \375\157 */
+    "décembre",                 /* \375\160 */
+    "décimal",                  /* \375\161 */
+    "définition",               /* \375\162 */
+    "démontrer",                /* \375\163 */
+    "dépilement",               /* \375\164 */
+    "déposée",                  /* \375\165 */
+    "dérivée",                  /* \375\166 */
+    "dérouleur",                /* \375\167 */
+    "eekaa",                    /* \375\170 */
+    "effacement",               /* \375\171 */
+    "effachement",              /* \375\172 */
+    "egal",                     /* \375\173 */
+    "eh",                       /* \375\174 */
+    "el",                       /* \375\175 */
+    "enfer",                    /* \375\176 */
+    "enregistreur",             /* \375\177 */
+    "ensemble",                 /* \375\200 */
+    "entièrement",              /* \375\201 */
+    "entrant",                  /* \375\202 */
+    "enveloppe",                /* \375\203 */
+    "er",                       /* \375\204 */
+    "esh",                      /* \375\205 */
+    "estime",                   /* \375\206 */
+    "estimé",                   /* \375\207 */
+    "esukuudo",                 /* \375\210 */
+    "euro",                     /* \375\211 */
+    "excellent",                /* \375\212 */
+    "exclarrogatif",            /* \375\213 */
+    "exclusif",                 /* \375\214 */
+    "excès",                    /* \375\215 */
+    "existe",                   /* \375\216 */
+    "exécution",                /* \375\217 */
+    "fahrenheit",               /* \375\220 */
+    "fallait",                  /* \375\221 */
+    "fan",                      /* \375\222 */
+    "faucille",                 /* \375\223 */
+    "fermeture",                /* \375\224 */
+    "festival",                 /* \375\225 */
+    "ff",                       /* \375\226 */
+    "ffi",                      /* \375\227 */
+    "ffl",                      /* \375\230 */
+    "fixe",                     /* \375\231 */
+    "fl",                       /* \375\232 */
+    "fm",                       /* \375\233 */
+    "folioles",                 /* \375\234 */
+    "foncée",                   /* \375\235 */
+    "fongman",                  /* \375\236 */
+    "fraisage",                 /* \375\237 */
+    "franc",                    /* \375\240 */
+    "français",                 /* \375\241 */
+    "fuseau",                   /* \375\242 */
+    "féminin",                  /* \375\243 */
+    "février",                  /* \375\244 */
+    "ganma",                    /* \375\245 */
+    "garon",                    /* \375\246 */
+    "gb",                       /* \375\247 */
+    "gerchâïm",                 /* \375\250 */
+    "gerech",                   /* \375\251 */
+    "ghz",                      /* \375\252 */
+    "giga",                     /* \375\253 */
+    "gimel",                    /* \375\254 */
+    "ginii",                    /* \375\255 */
+    "girudaa",                  /* \375\256 */
+    "gn",                       /* \375\257 */
+    "gpa",                      /* \375\260 */
+    "graphique",                /* \375\261 */
+    "grimaçant",                /* \375\262 */
+    "guillemets",               /* \375\263 */
+    "guramu",                   /* \375\264 */
+    "guramuton",                /* \375\265 */
+    "gy",                       /* \375\266 */
+    "gémeaux",                  /* \375\267 */
+    "géométrique",              /* \375\270 */
+    "géorgien",                 /* \375\271 */
+    "gêta",                     /* \375\272 */
+    "haitu",                    /* \375\273 */
+    "han",                      /* \375\274 */
+    "haute",                    /* \375\275 */
+    "heisei",                   /* \375\276 */
+    "hekutaaru",                /* \375\277 */
+    "hermitienne",              /* \375\300 */
+    "herutu",                   /* \375\301 */
+    "het",                      /* \375\302 */
+    "hip",                      /* \375\303 */
+    "hiriq",                    /* \375\304 */
+    "hizb",                     /* \375\305 */
+    "hiûh-miûm",                /* \375\306 */
+    "hiûh-niûn",                /* \375\307 */
+    "hiûh-piûp",                /* \375\310 */
+    "hiûh-riûl",                /* \375\311 */
+    "homothétique",             /* \375\312 */
+    "hon",                      /* \375\313 */
+    "hoon",                     /* \375\314 */
+    "hooru",                    /* \375\315 */
+    "horizontalement",          /* \375\316 */
+    "horizontaux",              /* \375\317 */
+    "hors-tout",                /* \375\320 */
+    "hp",                       /* \375\321 */
+    "hpa",                      /* \375\322 */
+    "huarado",                  /* \375\323 */
+    "huiito",                   /* \375\324 */
+    "huran",                    /* \375\325 */
+    "hv",                       /* \375\326 */
+    "hz",                       /* \375\327 */
+    "i-a",                      /* \375\330 */
+    "i-arèa",                   /* \375\331 */
+    "i-ou",                     /* \375\332 */
+    "i-ya",                     /* \375\333 */
+    "i-ô",                      /* \375\334 */
+    "i-û",                      /* \375\335 */
+    "identification",           /* \375\336 */
+    "ie",                       /* \375\337 */
+    "imprimer",                 /* \375\340 */
+    "incrément",                /* \375\341 */
+    "industrielle",             /* \375\342 */
+    "infini",                   /* \375\343 */
+    "info",                     /* \375\344 */
+    "iningu",                   /* \375\345 */
+    "intercale",                /* \375\346 */
+    "interrompue",              /* \375\347 */
+    "inti",                     /* \375\350 */
+    "inutilisé",                /* \375\351 */
+    "inversé",                  /* \375\352 */
+    "iri",                      /* \375\353 */
+    "iu",                       /* \375\354 */
+    "iûng-k'iûk'",              /* \375\355 */
+    "iûng-miûm",                /* \375\356 */
+    "iûng-p'iûp'",              /* \375\357 */
+    "iûng-pansiôs",             /* \375\360 */
+    "iûng-piûp",                /* \375\361 */
+    "iûng-siôs",                /* \375\362 */
+    "iûng-ssangkiyok",          /* \375\363 */
+    "iûng-t'iût'",              /* \375\364 */
+    "iûng-tch'iûtch'",          /* \375\365 */
+    "iûng-tchiûtch",            /* \375\366 */
+    "iûng-tikût",               /* \375\367 */
+    "janvier",                  /* \375\370 */
+    "japonaise",                /* \375\371 */
+    "judéo-espagnol",           /* \375\372 */
+    "juillet",                  /* \375\373 */
+    "juin",                     /* \375\374 */
+    "jupiter",                  /* \375\375 */
+    "justification",            /* \375\376 */
+    "jérusalem",                /* \375\377 */
+    "kai",                      /* \376\001 */
+    "kairi",                    /* \376\002 */
+    "kapyo-ounriûl",            /* \376\003 */
+    "karatto",                  /* \376\004 */
+    "karorii",                  /* \376\005 */
+    "kb",                       /* \376\006 */
+    "kcal",                     /* \376\007 */
+    "keesu",                    /* \376\010 */
+    "kelvin",                   /* \376\011 */
+    "khai",                     /* \376\012 */
+    "khomout",                  /* \376\013 */
+    "khon",                     /* \376\014 */
+    "khouat",                   /* \376\015 */
+    "khwai",                    /* \376\016 */
+    "khz",                      /* \376\017 */
+    "kiro",                     /* \376\020 */
+    "kiroguramu",               /* \376\021 */
+    "kiromeetoru",              /* \376\022 */
+    "kirowatto",                /* \376\023 */
+    "kiyok-riûl",               /* \376\024 */
+    "kiyok-siôs-kiyok",         /* \376\025 */
+    "kk",                       /* \376\026 */
+    "kl",                       /* \376\027 */
+    "kon",                      /* \376\030 */
+    "koopo",                    /* \376\031 */
+    "koruna",                   /* \376\032 */
+    "koubouts",                 /* \376\033 */
+    "kpa",                      /* \376\034 */
+    "kra",                      /* \376\035 */
+    "kt",                       /* \376\036 */
+    "kuroone",                  /* \376\037 */
+    "kuruzeiro",                /* \376\040 */
+    "kv",                       /* \376\041 */
+    "kw",                       /* \376\042 */
+    "kyurii",                   /* \376\043 */
+    "l'espace",                 /* \376\044 */
+    "l'homme",                  /* \376\045 */
+    "lac",                      /* \376\046 */
+    "lakkhangyao",              /* \376\047 */
+    "laotiens",                 /* \376\050 */
+    "latéral",                  /* \376\051 */
+    "ldjé",                     /* \376\052 */
+    "lej",                      /* \376\053 */
+    "liaison",                  /* \376\054 */
+    "libéral",                  /* \376\055 */
+    "limite",                   /* \376\056 */
+    "lion",                     /* \376\057 */
+    "lire",                     /* \376\060 */
+    "ljé",                      /* \376\061 */
+    "lm",                       /* \376\062 */
+    "ln",                       /* \376\063 */
+    "log",                      /* \376\064 */
+    "lorraine",                 /* \376\065 */
+    "lou",                      /* \376\066 */
+    "lout",                     /* \376\067 */
+    "lunaire",                  /* \376\070 */
+    "lx",                       /* \376\071 */
+    "légère",                   /* \376\072 */
+    "mahha",                    /* \376\073 */
+    "maimalai",                 /* \376\074 */
+    "maimuan",                  /* \376\075 */
+    "maison",                   /* \376\076 */
+    "maitaikhou",               /* \376\077 */
+    "maiyamok",                 /* \376\100 */
+    "makku",                    /* \376\101 */
+    "malte",                    /* \376\102 */
+    "mansyon",                  /* \376\103 */
+    "maqaf",                    /* \376\104 */
+    "marqué",                   /* \376\105 */
+    "mars",                     /* \376\106 */
+    "marteau",                  /* \376\107 */
+    "masculin",                 /* \376\110 */
+    "matrice",                  /* \376\111 */
+    "mayakru",                  /* \376\112 */
+    "mayakuro",                 /* \376\113 */
+    "meetoru",                  /* \376\114 */
+    "meizi",                    /* \376\115 */
+    "mercure",                  /* \376\116 */
+    "mesure",                   /* \376\117 */
+    "meteg",                    /* \376\120 */
+    "mg",                       /* \376\121 */
+    "mhz",                      /* \376\122 */
+    "micro",                    /* \376\123 */
+    "mikuron",                  /* \376\124 */
+    "mil",                      /* \376\125 */
+    "millième",                 /* \376\126 */
+    "minnie",                   /* \376\127 */
+    "miri",                     /* \376\130 */
+    "miribaaru",                /* \376\131 */
+    "mise",                     /* \376\132 */
+    "miûm-hiûh",                /* \376\133 */
+    "miûm-kiyok",               /* \376\134 */
+    "miûm-riûl",                /* \376\135 */
+    "miûm-ssangsiôs",           /* \376\136 */
+    "miûm-tch'iûtch'",          /* \376\137 */
+    "ml",                       /* \376\140 */
+    "mode",                     /* \376\141 */
+    "modélise",                 /* \376\142 */
+    "mohammad",                 /* \376\143 */
+    "moineau",                  /* \376\144 */
+    "moins-ou-plus",            /* \376\145 */
+    "mol",                      /* \376\146 */
+    "montagne",                 /* \376\147 */
+    "montant",                  /* \376\150 */
+    "montre",                   /* \376\151 */
+    "mort",                     /* \376\152 */
+    "mot",                      /* \376\153 */
+    "mouette",                  /* \376\154 */
+    "moyen",                    /* \376\155 */
+    "mpa",                      /* \376\156 */
+    "ms",                       /* \376\157 */
+    "multijection",             /* \376\160 */
+    "médecine",                 /* \376\161 */
+    "médiane",                  /* \376\162 */
+    "médians",                  /* \376\163 */
+    "mégatonne",                /* \376\164 */
+    "n'appartient",             /* \376\165 */
+    "n'est",                    /* \376\166 */
+    "n'existe",                 /* \376\167 */
+    "n'oblige",                 /* \376\170 */
+    "nabla",                    /* \376\171 */
+    "naira",                    /* \376\172 */
+    "nangmontho",               /* \376\173 */
+    "nano",                     /* \376\174 */
+    "nationales",               /* \376\175 */
+    "ndjé",                     /* \376\176 */
+    "nen",                      /* \376\177 */
+    "neptune",                  /* \376\200 */
+    "nf",                       /* \376\201 */
+    "ngu",                      /* \376\202 */
+    "niggahita",                /* \376\203 */
+    "nikhahit",                 /* \376\204 */
+    "niûn-piûp",                /* \376\205 */
+    "niûn-t'iût'",              /* \376\206 */
+    "njé",                      /* \376\207 */
+    "nm",                       /* \376\210 */
+    "noirs",                    /* \376\211 */
+    "nokhouk",                  /* \376\212 */
+    "nominales",                /* \376\213 */
+    "non-barre",                /* \376\214 */
+    "non-et",                   /* \376\215 */
+    "non-ou",                   /* \376\216 */
+    "notto",                    /* \376\217 */
+    "nou",                      /* \376\220 */
+    "nouveau",                  /* \376\221 */
+    "nouvelle",                 /* \376\222 */
+    "novembre",                 /* \376\223 */
+    "ns",                       /* \376\224 */
+    "nuage",                    /* \376\225 */
+    "nuit",                     /* \376\226 */
+    "nv",                       /* \376\227 */
+    "nw",                       /* \376\230 */
+    "o-ou",                     /* \376\231 */
+    "o-ô",                      /* \376\232 */
+    "o-û",                      /* \376\233 */
+    "oblige",                   /* \376\234 */
+    "octet",                    /* \376\235 */
+    "octobre",                  /* \376\236 */
+    "once",                     /* \376\237 */
+    "onkar",                    /* \376\240 */
+    "onsu",                     /* \376\241 */
+    "oomu",                     /* \376\242 */
+    "opposition",               /* \376\243 */
+    "option",                   /* \376\244 */
+    "orage",                    /* \376\245 */
+    "ordonnances",              /* \376\246 */
+    "origine",                  /* \376\247 */
+    "orthodoxe",                /* \376\250 */
+    "ou-a",                     /* \376\251 */
+    "ou-o-û",                   /* \376\252 */
+    "ou-ou",                    /* \376\253 */
+    "ou-yé",                    /* \376\254 */
+    "ou-è",                     /* \376\255 */
+    "oue",                      /* \376\256 */
+    "ouee",                     /* \376\257 */
+    "ouverte",                  /* \376\260 */
+    "ov",                       /* \376\261 */
+    "paasento",                 /* \376\262 */
+    "paatu",                    /* \376\263 */
+    "paix",                     /* \376\264 */
+    "paiyannoi",                /* \376\265 */
+    "palatalisation",           /* \376\266 */
+    "palochka",                 /* \376\267 */
+    "parapluie",                /* \376\270 */
+    "parce",                    /* \376\271 */
+    "partie",                   /* \376\272 */
+    "partielle",                /* \376\273 */
+    "partir",                   /* \376\274 */
+    "paseq",                    /* \376\275 */
+    "pastille",                 /* \376\276 */
+    "pasuq",                    /* \376\277 */
+    "patak",                    /* \376\300 */
+    "pc",                       /* \376\301 */
+    "peezi",                    /* \376\302 */
+    "penihi",                   /* \376\303 */
+    "pensu",                    /* \376\304 */
+    "pente",                    /* \376\305 */
+    "permis",                   /* \376\306 */
+    "perspective",              /* \376\307 */
+    "peseta",                   /* \376\310 */
+    "peso",                     /* \376\311 */
+    "pf",                       /* \376\312 */
+    "ph",                       /* \376\313 */
+    "phan",                     /* \376\314 */
+    "phinthou",                 /* \376\315 */
+    "phonogramme",              /* \376\316 */
+    "phoung",                   /* \376\317 */
+    "phouthao",                 /* \376\320 */
+    "piasutoru",                /* \376\321 */
+    "piko",                     /* \376\322 */
+    "pikuru",                   /* \376\323 */
+    "piûp-hiûh",                /* \376\324 */
+    "piûp-niûn",                /* \376\325 */
+    "piûp-riûl",                /* \376\326 */
+    "piûp-siôs-piûp",           /* \376\327 */
+    "piûp-siôs-tchiûtch",       /* \376\330 */
+    "piûp-ssangsiôs",           /* \376\331 */
+    "piûp-tch'iûtch'",          /* \376\332 */
+    "pla",                      /* \376\333 */
+    "place",                    /* \376\334 */
+    "plus-ou-moins",            /* \376\335 */
+    "pluton",                   /* \376\336 */
+    "pm",                       /* \376\337 */
+    "pointillé",                /* \376\340 */
+    "pointo",                   /* \376\341 */
+    "poissons",                 /* \376\342 */
+    "pommeté",                  /* \376\343 */
+    "pondo",                    /* \376\344 */
+    "position",                 /* \376\345 */
+    "ppm",                      /* \376\346 */
+    "pr",                       /* \376\347 */
+    "precède",                  /* \376\350 */
+    "profil",                   /* \376\351 */
+    "progiciel",                /* \376\352 */
+    "projective",               /* \376\353 */
+    "proportionnel",            /* \376\354 */
+    "prouve",                   /* \376\355 */
+    "précédent",                /* \376\356 */
+    "précédée",                 /* \376\357 */
+    "prédéfini",                /* \376\360 */
+    "ps",                       /* \376\361 */
+    "pv",                       /* \376\362 */
+    "pw",                       /* \376\363 */
+    "qa",                       /* \376\364 */
+    "qala",                     /* \376\365 */
+    "qu'il",                    /* \376\366 */
+    "quad",                     /* \376\367 */
+    "quartefeuille",            /* \376\370 */
+    "radioactivivité",          /* \376\371 */
+    "rail",                     /* \376\372 */
+    "rakhang",                  /* \376\373 */
+    "rapport",                  /* \376\374 */
+    "rasoul",                   /* \376\375 */
+    "rayonnant",                /* \376\376 */
+    "rayé",                     /* \376\377 */
+    "rectangulaire",            /* \377\001 */
+    "religion",                 /* \377\002 */
+    "remu",                     /* \377\003 */
+    "rentogen",                 /* \377\004 */
+    "représente",               /* \377\005 */
+    "rhotacisme",               /* \377\006 */
+    "rhéostat",                 /* \377\007 */
+    "rideaux",                  /* \377\010 */
+    "rira",                     /* \377\011 */
+    "rittoru",                  /* \377\012 */
+    "riûl-k'iûk'",              /* \377\013 */
+    "riûl-kapyo-ounpiûp",       /* \377\014 */
+    "riûl-miûm-kiyok",          /* \377\015 */
+    "riûl-miûm-siôs",           /* \377\016 */
+    "riûl-piûp-hiûh",           /* \377\017 */
+    "riûl-ssangsiôs",           /* \377\020 */
+    "riûl-tikût-hiûh",          /* \377\021 */
+    "rou",                      /* \377\022 */
+    "roua",                     /* \377\023 */
+    "roub",                     /* \377\024 */
+    "roue",                     /* \377\025 */
+    "rousi",                    /* \377\026 */
+    "ruban",                    /* \377\027 */
+    "rupii",                    /* \377\030 */
+    "ruuburu",                  /* \377\031 */
+    "référence",                /* \377\032 */
+    "réponse",                  /* \377\033 */
+    "rétrécissement",           /* \377\034 */
+    "réunion",                  /* \377\035 */
+    "sablier",                  /* \377\036 */
+    "sagittaire",               /* \377\037 */
+    "saikuru",                  /* \377\040 */
+    "sajdah",                   /* \377\041 */
+    "sala",                     /* \377\042 */
+    "salam",                    /* \377\043 */
+    "sallallahou",              /* \377\044 */
+    "samek",                    /* \377\045 */
+    "samekh",                   /* \377\046 */
+    "samphao",                  /* \377\047 */
+    "sampi",                    /* \377\050 */
+    "sanglé",                   /* \377\051 */
+    "santiimu",                 /* \377\052 */
+    "sapin",                    /* \377\053 */
+    "saut",                     /* \377\054 */
+    "scorpion",                 /* \377\055 */
+    "scrupule",                 /* \377\056 */
+    "second",                   /* \377\057 */
+    "seconde",                  /* \377\060 */
+    "secret",                   /* \377\061 */
+    "secteur",                  /* \377\062 */
+    "segment",                  /* \377\063 */
+    "senti",                    /* \377\064 */
+    "sento",                    /* \377\065 */
+    "septembre",                /* \377\066 */
+    "service",                  /* \377\067 */
+    "sh",                       /* \377\070 */
+    "shakti",                   /* \377\071 */
+    "shékel",                   /* \377\072 */
+    "sinusoïde",                /* \377\073 */
+    "siringu",                  /* \377\074 */
+    "sixièmes",                 /* \377\075 */
+    "sixtefeuille",             /* \377\076 */
+    "siôs-hiûh",                /* \377\077 */
+    "siôs-iûng",                /* \377\100 */
+    "siôs-k'iûk'",              /* \377\101 */
+    "siôs-miûm",                /* \377\102 */
+    "siôs-p'iûp'",              /* \377\103 */
+    "siôs-piûp-kiyok",          /* \377\104 */
+    "siôs-ssangsiôs",           /* \377\105 */
+    "siôs-t'iût'",              /* \377\106 */
+    "siôs-tch'iûtch'",          /* \377\107 */
+    "sof",                      /* \377\110 */
+    "soi",                      /* \377\111 */
+    "soins",                    /* \377\112 */
+    "sommation",                /* \377\113 */
+    "sortant",                  /* \377\114 */
+    "soua",                     /* \377\115 */
+    "sources",                  /* \377\116 */
+    "sourire",                  /* \377\117 */
+    "sous-article",             /* \377\120 */
+    "sphérique",                /* \377\121 */
+    "sr",                       /* \377\122 */
+    "ssangarèa",                /* \377\123 */
+    "st",                       /* \377\124 */
+    "stigma",                   /* \377\125 */
+    "succursale",               /* \377\126 */
+    "suivante",                 /* \377\127 */
+    "supervise",                /* \377\130 */
+    "superviser",               /* \377\131 */
+    "surface",                  /* \377\132 */
+    "sv",                       /* \377\133 */
+    "symbolw",                  /* \377\134 */
+    "symétrie",                 /* \377\135 */
+    "syouwa",                   /* \377\136 */
+    "système",                  /* \377\137 */
+    "séquence",                 /* \377\140 */
+    "sérieux",                  /* \377\141 */
+    "sûr",                      /* \377\142 */
+    "tah",                      /* \377\143 */
+    "taisyou",                  /* \377\144 */
+    "tao",                      /* \377\145 */
+    "taureau",                  /* \377\146 */
+    "tc",                       /* \377\147 */
+    "tch'itouûmsiôs",           /* \377\150 */
+    "tch'itouûmssangsiôs",      /* \377\151 */
+    "tch'itouûmssangtchiûtch",  /* \377\152 */
+    "tch'itouûmtch'iûtch'",     /* \377\153 */
+    "tch'itouûmtchiûtch",       /* \377\154 */
+    "tch'iûtch'-hiûh",          /* \377\155 */
+    "tch'iûtch'-k'iûk'",        /* \377\156 */
+    "tchada",                   /* \377\157 */
+    "tchan",                    /* \377\160 */
+    "tchang",                   /* \377\161 */
+    "tchattawa",                /* \377\162 */
+    "tching",                   /* \377\163 */
+    "tchiûtch-iûng",            /* \377\164 */
+    "tchoe",                    /* \377\165 */
+    "tchongtch'iûmsiôs",        /* \377\166 */
+    "tchongtch'iûmssangsiôs",   /* \377\167 */
+    "tchongtch'iûmssangtchiûtch",/* \377\170 */
+    "tchongtch'iûmtch'iûtch'",  /* \377\171 */
+    "tchongtch'iûmtchiûtch",    /* \377\172 */
+    "tchoula",                  /* \377\173 */
+    "teleia",                   /* \377\174 */
+    "tend",                     /* \377\175 */
+    "thahan",                   /* \377\176 */
+    "thanthakhat",              /* \377\177 */
+    "thong",                    /* \377\200 */
+    "thoung",                   /* \377\201 */
+    "thz",                      /* \377\202 */
+    "tikût-riûl",               /* \377\203 */
+    "tippi",                    /* \377\204 */
+    "tja",                      /* \377\205 */
+    "tjo",                      /* \377\206 */
+    "tonne",                    /* \377\207 */
+    "tonnerre",                 /* \377\210 */
+    "totale",                   /* \377\211 */
+    "touche",                   /* \377\212 */
+    "tous",                     /* \377\213 */
+    "train",                    /* \377\214 */
+    "traits",                   /* \377\215 */
+    "transpercés",              /* \377\216 */
+    "trappu",                   /* \377\217 */
+    "trappue",                  /* \377\220 */
+    "traçage",                  /* \377\221 */
+    "trente",                   /* \377\222 */
+    "trente-et-un",             /* \377\223 */
+    "tri",                      /* \377\224 */
+    "triangulaires",            /* \377\225 */
+    "troisième",                /* \377\226 */
+    "tréflée",                  /* \377\227 */
+    "ts",                       /* \377\230 */
+    "tsere",                    /* \377\231 */
+    "tèche",                    /* \377\232 */
+    "téléphonique",             /* \377\233 */
+    "tête",                     /* \377\234 */
+    "udatta",                   /* \377\235 */
+    "ultra-fine",               /* \377\236 */
+    "una",                      /* \377\237 */
+    "une",                      /* \377\240 */
+    "uon",                      /* \377\241 */
+    "ura",                      /* \377\242 */
+    "uranus",                   /* \377\243 */
+    "uu",                       /* \377\244 */
+    "variant",                  /* \377\245 */
+    "varika",                   /* \377\246 */
+    "vent",                     /* \377\247 */
+    "verrou",                   /* \377\250 */
+    "verseau",                  /* \377\251 */
+    "versicule",                /* \377\252 */
+    "verticaux",                /* \377\253 */
+    "vi",                       /* \377\254 */
+    "victoire",                 /* \377\255 */
+    "vide",                     /* \377\256 */
+    "vidée",                    /* \377\257 */
+    "vierge",                   /* \377\260 */
+    "vingt-cinq",               /* \377\261 */
+    "vingt-huit",               /* \377\262 */
+    "vingt-neuf",               /* \377\263 */
+    "vingt-sept",               /* \377\264 */
+    "vingt-six",                /* \377\265 */
+    "virtuel",                  /* \377\266 */
+    "visualisation",            /* \377\267 */
+    "visuel",                   /* \377\270 */
+    "volume",                   /* \377\271 */
+    "waen",                     /* \377\272 */
+    "watto",                    /* \377\273 */
+    "wb",                       /* \377\274 */
+    "wynn",                     /* \377\275 */
+    "ya-yô",                    /* \377\276 */
+    "ya-ô",                     /* \377\277 */
+    "yaado",                    /* \377\300 */
+    "yaaru",                    /* \377\301 */
+    "yak",                      /* \377\302 */
+    "yamakkan",                 /* \377\303 */
+    "yang",                     /* \377\304 */
+    "yin",                      /* \377\305 */
+    "ying",                     /* \377\306 */
+    "yo-ou",                    /* \377\307 */
+    "yo-ô",                     /* \377\310 */
+    "yot",                      /* \377\311 */
+    "you-a",                    /* \377\312 */
+    "you-o",                    /* \377\313 */
+    "you-ou",                   /* \377\314 */
+    "you-é",                    /* \377\315 */
+    "yr",                       /* \377\316 */
+    "yuan",                     /* \377\317 */
+    "yô-yo",                    /* \377\320 */
+    "yô-ô",                     /* \377\321 */
+    "zh",                       /* \377\322 */
+    "zigzag",                   /* \377\323 */
+    "zilde",                    /* \377\324 */
+    "éclair",                   /* \377\325 */
+    "écrasé",                   /* \377\326 */
+    "écu",                      /* \377\327 */
+    "égalité",                  /* \377\330 */
+    "égyptienne",               /* \377\331 */
+    "épaisse",                  /* \377\332 */
+    "équiangulaire",            /* \377\333 */
+    "étagère",                  /* \377\334 */
+    "étiré",                    /* \377\335 */
+    "ô-o",                      /* \377\336 */
+    "ô-ou",                     /* \377\337 */
+    "ô-yé",                     /* \377\340 */
+    "ô-é",                      /* \377\341 */
+    "ô-ô",                      /* \377\342 */
+    "û-ou",                     /* \377\343 */
+    "û-û",                      /* \377\344 */
+    "ûi-ou",                    /* \377\345 */
   };
 
 struct charname
@@ -2042,52 +2043,52 @@ struct charname
 
 static const struct charname charname[NUMBER_OF_CHARNAMES] =
   {
-    {0x0000, "\373\325\374\225"},
-    {0x0001, "\371\141\373\110\374\244"},
-    {0x0002, "\371\141\012\372\166\374\253"},
-    {0x0003, "\070\012\372\166\374\207"},
-    {0x0004, "\070\012\371\254\374\203"},
-    {0x0005, "\373\122\374\202"},
-    {0x0006, "\373\023\012\372\147\371\311\374\160"},
-    {0x0007, "\374\050\374\162"},
-    {0x0008, "\371\025\373\033\374\164"},
-    {0x0009, "\372\163\372\263\374\214"},
-    {0x000A, "\372\267\374\220"},
-    {0x000B, "\372\163\224\374\257"},
-    {0x000C, "\373\345\377\126\374\210"},
-    {0x000D, "\374\022\012\373\066\374\167"},
-    {0x000E, "\373\227\372\047\374\243"},
-    {0x000F, "\007\372\047\374\242"},
-    {0x0010, "\373\016\371\254\374\177"},
-    {0x0011, "\371\023\371\344\132\374\171"},
-    {0x0012, "\371\023\371\344\154\374\172"},
-    {0x0013, "\371\023\371\344\131\374\173"},
-    {0x0014, "\371\023\371\344\200\374\174"},
-    {0x0015, "\373\023\012\372\147\223\374\222"},
-    {0x0016, "\374\064\374\255"},
-    {0x0017, "\070\012\371\254\012\304\374\206"},
-    {0x0018, "\373\031\374\165"},
-    {0x0019, "\070\012\374\060\374\201"},
-    {0x001A, "\074\012\374\056\374\254"},
-    {0x001B, "\373\016\374\205"},
-    {0x001C, "\371\007\012\373\163\374\211"},
-    {0x001D, "\371\007\012\373\215\374\212"},
-    {0x001E, "\371\007\375\104\374\236"},
-    {0x001F, "\371\007\012\377\117\374\256"},
-    {0x0020, "\371\025"},
-    {0x0021, "\027\371\131"},
+    {0x0000, "\373\326\374\226"},
+    {0x0001, "\371\142\373\111\374\245"},
+    {0x0002, "\371\142\012\372\166\374\254"},
+    {0x0003, "\070\012\372\166\374\210"},
+    {0x0004, "\070\012\371\255\374\204"},
+    {0x0005, "\373\123\374\203"},
+    {0x0006, "\373\024\012\372\147\371\312\374\161"},
+    {0x0007, "\374\051\374\163"},
+    {0x0008, "\371\026\373\034\374\165"},
+    {0x0009, "\372\163\372\263\374\215"},
+    {0x000A, "\372\267\374\221"},
+    {0x000B, "\372\163\224\374\260"},
+    {0x000C, "\373\346\377\127\374\211"},
+    {0x000D, "\374\023\012\373\067\374\170"},
+    {0x000E, "\373\230\372\047\374\244"},
+    {0x000F, "\007\372\047\374\243"},
+    {0x0010, "\373\016\371\255\374\200"},
+    {0x0011, "\371\024\371\345\132\374\172"},
+    {0x0012, "\371\024\371\345\154\374\173"},
+    {0x0013, "\371\024\371\345\131\374\174"},
+    {0x0014, "\371\024\371\345\200\374\175"},
+    {0x0015, "\373\024\012\372\147\223\374\223"},
+    {0x0016, "\374\065\374\256"},
+    {0x0017, "\070\012\371\255\012\304\374\207"},
+    {0x0018, "\373\032\374\166"},
+    {0x0019, "\070\012\374\061\374\202"},
+    {0x001A, "\074\012\374\057\374\255"},
+    {0x001B, "\373\016\374\206"},
+    {0x001C, "\371\007\012\373\164\374\212"},
+    {0x001D, "\371\007\012\373\216\374\213"},
+    {0x001E, "\371\007\375\105\374\237"},
+    {0x001F, "\371\007\012\377\120\374\257"},
+    {0x0020, "\371\026"},
+    {0x0021, "\027\371\132"},
     {0x0022, "\371\014\372\037"},
     {0x0023, "\372\227"},
     {0x0024, "\015\372\243"},
-    {0x0025, "\015\335\371\222"},
+    {0x0025, "\015\335\371\223"},
     {0x0026, "\372\327"},
-    {0x0027, "\371\215"},
+    {0x0027, "\371\216"},
     {0x0028, "\371\004\042"},
     {0x0029, "\371\004\037"},
     {0x002A, "\371\011"},
     {0x002B, "\134\162"},
     {0x002C, "\331"},
-    {0x002D, "\371\071"},
+    {0x002D, "\371\072"},
     {0x002E, "\027"},
     {0x002F, "\210\361"},
     {0x0030, "\017\311"},
@@ -2100,12 +2101,12 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0037, "\017\221"},
     {0x0038, "\017\204"},
     {0x0039, "\017\235"},
-    {0x003A, "\371\347"},
-    {0x003B, "\372\007"},
+    {0x003A, "\371\350"},
+    {0x003B, "\372\010"},
     {0x003C, "\134\300\040"},
     {0x003D, "\134\142\040"},
     {0x003E, "\134\326\040"},
-    {0x003F, "\027\371\224"},
+    {0x003F, "\027\371\225"},
     {0x0040, "\372\206"},
     {0x0041, "\001\005\004\046"},
     {0x0042, "\001\005\004\275"},
@@ -2123,7 +2124,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x004E, "\001\005\004\213"},
     {0x004F, "\001\005\004\050"},
     {0x0050, "\001\005\004\351"},
-    {0x0051, "\001\005\004\371\065"},
+    {0x0051, "\001\005\004\371\066"},
     {0x0052, "\001\005\004\150"},
     {0x0053, "\001\005\004\207"},
     {0x0054, "\001\005\004\236"},
@@ -2134,7 +2135,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0059, "\001\005\004\240"},
     {0x005A, "\001\005\004\243"},
     {0x005B, "\100\042"},
-    {0x005C, "\210\361\371\274"},
+    {0x005C, "\210\361\371\275"},
     {0x005D, "\100\173"},
     {0x005E, "\026\117"},
     {0x005F, "\264\061"},
@@ -2155,7 +2156,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x006E, "\001\003\004\213"},
     {0x006F, "\001\003\004\050"},
     {0x0070, "\001\003\004\351"},
-    {0x0071, "\001\003\004\371\065"},
+    {0x0071, "\001\003\004\371\066"},
     {0x0072, "\001\003\004\150"},
     {0x0073, "\001\003\004\207"},
     {0x0074, "\001\003\004\236"},
@@ -2165,75 +2166,75 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0078, "\001\003\004\310"},
     {0x0079, "\001\003\004\240"},
     {0x007A, "\001\003\004\243"},
-    {0x007B, "\371\260\042"},
+    {0x007B, "\371\261\042"},
     {0x007C, "\210\224"},
-    {0x007D, "\371\260\037"},
+    {0x007D, "\371\261\037"},
     {0x007E, "\143"},
-    {0x007F, "\374\061\374\176"},
-    {0x0080, "\074\012\371\340\374\227"},
-    {0x0081, "\376\234\326\376\357\374\213"},
-    {0x0082, "\372\041\376\305\373\232\374\163"},
-    {0x0083, "\374\341\372\041\373\232\374\223"},
-    {0x0084, "\371\150\374\217"},
-    {0x0085, "\040\022\212\374\224"},
-    {0x0086, "\371\141\012\372\200\374\067\374\250"},
-    {0x0087, "\070\012\372\200\374\067\374\204"},
-    {0x0088, "\372\041\012\372\366\211\374\216"},
-    {0x0089, "\372\366\211\130\375\375\374\215"},
-    {0x008A, "\372\041\012\372\366\145\374\260"},
-    {0x008B, "\372\267\373\350\013\035\061\374\230"},
-    {0x008C, "\372\267\373\350\013\035\065\374\231"},
-    {0x008D, "\371\150\375\351\374\235"},
-    {0x008E, "\372\340\372\171\154\374\246"},
-    {0x008F, "\372\340\372\171\131\374\247"},
-    {0x0090, "\372\214\012\371\023\371\344\374\175"},
-    {0x0091, "\374\111\372\332\132\374\233"},
-    {0x0092, "\374\111\372\332\154\374\234"},
-    {0x0093, "\376\131\007\376\140\371\254\374\252"},
-    {0x0094, "\373\031\226\074\376\355\374\166"},
-    {0x0095, "\373\274\007\374\337\374\221"},
-    {0x0096, "\371\141\012\372\200\374\001\374\240"},
-    {0x0097, "\070\012\372\200\374\001\374\200"},
-    {0x0098, "\371\141\012\372\214\374\245"},
-    {0x0099, "\372\271\012\074\375\260\372\171\374\241"},
-    {0x009A, "\372\271\012\074\372\171\374\237"},
-    {0x009B, "\372\271\012\377\137\012\371\023\374\170"},
-    {0x009C, "\070\012\372\214\374\251"},
-    {0x009D, "\371\023\012\377\136\375\111\374\226"},
-    {0x009E, "\373\274\372\332\374\232"},
-    {0x009F, "\371\023\012\376\351\374\161"},
-    {0x00A0, "\371\025\373\237"},
-    {0x00A1, "\027\371\131\371\016"},
+    {0x007F, "\374\062\374\177"},
+    {0x0080, "\074\012\371\341\374\230"},
+    {0x0081, "\376\235\326\376\360\374\214"},
+    {0x0082, "\372\041\376\306\373\233\374\164"},
+    {0x0083, "\374\342\372\041\373\233\374\224"},
+    {0x0084, "\371\151\374\220"},
+    {0x0085, "\040\022\212\374\225"},
+    {0x0086, "\371\142\012\372\200\374\070\374\251"},
+    {0x0087, "\070\012\372\200\374\070\374\205"},
+    {0x0088, "\372\041\012\372\366\211\374\217"},
+    {0x0089, "\372\366\211\130\375\376\374\216"},
+    {0x008A, "\372\041\012\372\366\145\374\261"},
+    {0x008B, "\372\267\373\351\013\373\023\061\374\231"},
+    {0x008C, "\372\267\373\351\013\373\023\065\374\232"},
+    {0x008D, "\371\151\375\352\374\236"},
+    {0x008E, "\372\340\372\171\154\374\247"},
+    {0x008F, "\372\340\372\171\131\374\250"},
+    {0x0090, "\372\214\012\371\024\371\345\374\176"},
+    {0x0091, "\374\112\372\332\132\374\234"},
+    {0x0092, "\374\112\372\332\154\374\235"},
+    {0x0093, "\376\132\007\376\141\371\255\374\253"},
+    {0x0094, "\373\032\226\074\376\356\374\167"},
+    {0x0095, "\373\275\007\374\340\374\222"},
+    {0x0096, "\371\142\012\372\200\374\002\374\241"},
+    {0x0097, "\070\012\372\200\374\002\374\201"},
+    {0x0098, "\371\142\012\372\214\374\246"},
+    {0x0099, "\372\271\012\074\375\261\372\171\374\242"},
+    {0x009A, "\372\271\012\074\372\171\374\240"},
+    {0x009B, "\372\271\012\377\140\012\371\024\374\171"},
+    {0x009C, "\070\012\372\214\374\252"},
+    {0x009D, "\371\024\012\377\137\375\112\374\227"},
+    {0x009E, "\373\275\372\332\374\233"},
+    {0x009F, "\371\024\012\376\352\374\162"},
+    {0x00A0, "\371\026\373\240"},
+    {0x00A1, "\027\371\132\371\016"},
     {0x00A2, "\015\372\212"},
-    {0x00A3, "\015\373\266"},
-    {0x00A4, "\015\371\161"},
-    {0x00A5, "\015\374\133"},
-    {0x00A6, "\210\224\375\346"},
+    {0x00A3, "\015\373\267"},
+    {0x00A4, "\015\371\162"},
+    {0x00A5, "\015\374\134"},
+    {0x00A6, "\210\224\375\347"},
     {0x00A7, "\372\324"},
     {0x00A8, "\141"},
-    {0x00A9, "\015\373\076"},
-    {0x00AA, "\372\265\373\337\375\242"},
+    {0x00A9, "\015\373\077"},
+    {0x00AA, "\372\265\373\340\375\243"},
     {0x00AB, "\371\014\042"},
     {0x00AC, "\134\372\116"},
-    {0x00AD, "\264\371\225\377\265"},
-    {0x00AE, "\015\153\375\164"},
+    {0x00AD, "\264\371\226\377\266"},
+    {0x00AE, "\015\153\375\165"},
     {0x00AF, "\161"},
     {0x00B0, "\015\372\236"},
-    {0x00B1, "\134\376\334"},
+    {0x00B1, "\134\376\335"},
     {0x00B2, "\347\154"},
     {0x00B3, "\347\131"},
     {0x00B4, "\026\102"},
-    {0x00B5, "\015\376\122"},
-    {0x00B6, "\373\353\012\373\303"},
-    {0x00B7, "\027\371\037"},
+    {0x00B5, "\015\376\123"},
+    {0x00B6, "\373\354\012\373\304"},
+    {0x00B7, "\027\371\040"},
     {0x00B8, "\246"},
     {0x00B9, "\347\132"},
-    {0x00BA, "\372\265\373\337\376\107"},
+    {0x00BA, "\372\265\373\340\376\110"},
     {0x00BB, "\371\014\173"},
     {0x00BC, "\356\132\372\141"},
-    {0x00BD, "\356\132\375\127"},
+    {0x00BD, "\356\132\375\130"},
     {0x00BE, "\356\131\372\334"},
-    {0x00BF, "\027\371\224\371\016"},
+    {0x00BF, "\027\371\225\371\016"},
     {0x00C0, "\001\005\004\046\026\151"},
     {0x00C1, "\001\005\004\046\026\102"},
     {0x00C2, "\001\005\004\046\026\117"},
@@ -2249,7 +2250,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00CD, "\001\005\004\072\026\102"},
     {0x00CE, "\001\005\004\072\026\117"},
     {0x00CF, "\001\005\004\072\141"},
-    {0x00D0, "\001\005\004\373\144"},
+    {0x00D0, "\001\005\004\373\145"},
     {0x00D1, "\001\005\004\213\143"},
     {0x00D2, "\001\005\004\050\026\151"},
     {0x00D3, "\001\005\004\050\026\102"},
@@ -2257,13 +2258,13 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00D5, "\001\005\004\050\143"},
     {0x00D6, "\001\005\004\050\141"},
     {0x00D7, "\134\372\112"},
-    {0x00D8, "\001\005\004\050\175\373\331"},
+    {0x00D8, "\001\005\004\050\175\373\332"},
     {0x00D9, "\001\005\004\107\026\151"},
     {0x00DA, "\001\005\004\107\026\102"},
     {0x00DB, "\001\005\004\107\026\117"},
     {0x00DC, "\001\005\004\107\141"},
     {0x00DD, "\001\005\004\240\026\102"},
-    {0x00DE, "\001\005\004\374\075"},
+    {0x00DE, "\001\005\004\374\076"},
     {0x00DF, "\001\003\004\207\372\246"},
     {0x00E0, "\001\003\004\046\026\151"},
     {0x00E1, "\001\003\004\046\026\102"},
@@ -2280,7 +2281,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00ED, "\001\003\004\072\026\102"},
     {0x00EE, "\001\003\004\072\026\117"},
     {0x00EF, "\001\003\004\072\141"},
-    {0x00F0, "\001\003\004\373\144"},
+    {0x00F0, "\001\003\004\373\145"},
     {0x00F1, "\001\003\004\213\143"},
     {0x00F2, "\001\003\004\050\026\151"},
     {0x00F3, "\001\003\004\050\026\102"},
@@ -2288,13 +2289,13 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x00F5, "\001\003\004\050\143"},
     {0x00F6, "\001\003\004\050\141"},
     {0x00F7, "\134\372\242"},
-    {0x00F8, "\001\003\004\050\175\373\331"},
+    {0x00F8, "\001\003\004\050\175\373\332"},
     {0x00F9, "\001\003\004\107\026\151"},
     {0x00FA, "\001\003\004\107\026\102"},
     {0x00FB, "\001\003\004\107\026\117"},
     {0x00FC, "\001\003\004\107\141"},
     {0x00FD, "\001\003\004\240\026\102"},
-    {0x00FE, "\001\003\004\374\075"},
+    {0x00FE, "\001\003\004\374\076"},
     {0x00FF, "\001\003\004\240\141"},
     {0x0100, "\001\005\004\046\161"},
     {0x0101, "\001\003\004\046\161"},
@@ -2346,21 +2347,21 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x012F, "\001\003\004\072\371\003"},
     {0x0130, "\001\005\004\072\027\007\025"},
     {0x0131, "\001\003\004\072\232\027"},
-    {0x0132, "\371\054\372\155\005\372\102\373\234"},
-    {0x0133, "\371\054\372\155\003\372\102\373\234"},
+    {0x0132, "\371\055\372\155\005\372\102\373\235"},
+    {0x0133, "\371\055\372\155\003\372\102\373\235"},
     {0x0134, "\001\005\004\344\026\117"},
     {0x0135, "\001\003\004\344\026\117"},
     {0x0136, "\001\005\004\301\246"},
     {0x0137, "\001\003\004\301\246"},
-    {0x0138, "\001\003\004\376\034"},
+    {0x0138, "\001\003\004\376\035"},
     {0x0139, "\001\005\004\167\026\102"},
     {0x013A, "\001\003\004\167\026\102"},
     {0x013B, "\001\005\004\167\246"},
     {0x013C, "\001\003\004\167\246"},
     {0x013D, "\001\005\004\167\172"},
     {0x013E, "\001\003\004\167\172"},
-    {0x013F, "\001\005\004\167\027\371\037"},
-    {0x0140, "\001\003\004\167\027\371\037"},
+    {0x013F, "\001\005\004\167\027\371\040"},
+    {0x0140, "\001\003\004\167\027\371\040"},
     {0x0141, "\001\005\004\167\175"},
     {0x0142, "\001\003\004\167\175"},
     {0x0143, "\001\005\004\213\026\102"},
@@ -2369,7 +2370,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0146, "\001\003\004\213\246"},
     {0x0147, "\001\005\004\213\172"},
     {0x0148, "\001\003\004\213\172"},
-    {0x0149, "\001\003\004\213\376\356\373\113\371\215"},
+    {0x0149, "\001\003\004\213\376\357\373\114\371\216"},
     {0x014A, "\001\005\004\372\060"},
     {0x014B, "\001\003\004\372\060"},
     {0x014C, "\001\005\004\050\161"},
@@ -2378,8 +2379,8 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x014F, "\001\003\004\050\160"},
     {0x0150, "\001\005\004\050\051\026\102"},
     {0x0151, "\001\003\004\050\051\026\102"},
-    {0x0152, "\371\054\372\155\005\372\102\371\040"},
-    {0x0153, "\371\054\372\155\003\372\102\371\040"},
+    {0x0152, "\371\055\372\155\005\372\102\371\041"},
+    {0x0153, "\371\055\372\155\003\372\102\371\041"},
     {0x0154, "\001\005\004\150\026\102"},
     {0x0155, "\001\003\004\150\026\102"},
     {0x0156, "\001\005\004\150\246"},
@@ -2430,47 +2431,47 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0183, "\001\003\004\275\372\133"},
     {0x0184, "\001\005\004\372\154\272"},
     {0x0185, "\001\003\004\372\154\272"},
-    {0x0186, "\001\005\004\050\371\306"},
+    {0x0186, "\001\005\004\050\371\307"},
     {0x0187, "\001\005\004\241\254"},
     {0x0188, "\001\003\004\241\254"},
-    {0x0189, "\001\005\004\225\374\273"},
+    {0x0189, "\001\005\004\225\374\274"},
     {0x018A, "\001\005\004\225\254"},
     {0x018B, "\001\005\004\225\372\133"},
     {0x018C, "\001\003\004\225\372\133"},
-    {0x018D, "\001\003\004\371\267\371\343"},
+    {0x018D, "\001\003\004\371\270\371\344"},
     {0x018E, "\001\005\004\060\336"},
-    {0x018F, "\001\005\004\371\246"},
-    {0x0190, "\001\005\004\060\371\306"},
+    {0x018F, "\001\005\004\371\247"},
+    {0x0190, "\001\005\004\060\371\307"},
     {0x0191, "\001\005\004\355\342"},
     {0x0192, "\001\003\004\355\342"},
     {0x0193, "\001\005\004\227\254"},
-    {0x0194, "\001\005\004\371\273"},
-    {0x0195, "\001\003\004\375\325"},
+    {0x0194, "\001\005\004\371\274"},
+    {0x0195, "\001\003\004\375\326"},
     {0x0196, "\001\005\004\055"},
     {0x0197, "\001\005\004\072\175"},
     {0x0198, "\001\005\004\301\254"},
     {0x0199, "\001\003\004\301\254"},
-    {0x019A, "\001\003\004\167\376\376"},
+    {0x019A, "\001\003\004\167\376\377"},
     {0x019B, "\001\003\004\372\077\175"},
     {0x019C, "\001\005\004\256\260"},
     {0x019D, "\001\005\004\213\342"},
     {0x019E, "\001\003\004\213\040\372\306\320\173"},
-    {0x019F, "\001\005\004\050\143\371\037"},
+    {0x019F, "\001\005\004\050\143\371\040"},
     {0x01A0, "\001\005\004\050\253"},
     {0x01A1, "\001\003\004\050\253"},
-    {0x01A2, "\001\005\004\373\343"},
-    {0x01A3, "\001\003\004\373\343"},
+    {0x01A2, "\001\005\004\373\344"},
+    {0x01A3, "\001\003\004\373\344"},
     {0x01A4, "\001\005\004\351\254"},
     {0x01A5, "\001\003\004\351\254"},
-    {0x01A6, "\001\004\377\315"},
-    {0x01A7, "\001\005\004\373\127\272"},
-    {0x01A8, "\001\003\004\373\127\272"},
+    {0x01A6, "\001\004\377\316"},
+    {0x01A7, "\001\005\004\373\130\272"},
+    {0x01A8, "\001\003\004\373\130\272"},
     {0x01A9, "\001\005\004\372\201"},
-    {0x01AA, "\001\004\372\201\336\371\220"},
+    {0x01AA, "\001\004\372\201\336\371\221"},
     {0x01AB, "\001\003\004\236\342\372\322"},
     {0x01AC, "\001\005\004\236\254"},
     {0x01AD, "\001\003\004\236\254"},
-    {0x01AE, "\001\005\004\236\342\371\066"},
+    {0x01AE, "\001\005\004\236\342\371\067"},
     {0x01AF, "\001\005\004\107\253"},
     {0x01B0, "\001\003\004\107\253"},
     {0x01B1, "\001\005\004\214"},
@@ -2479,28 +2480,28 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x01B4, "\001\003\004\240\254"},
     {0x01B5, "\001\005\004\243\175"},
     {0x01B6, "\001\003\004\243\175"},
-    {0x01B7, "\001\005\004\371\142"},
-    {0x01B8, "\001\005\004\371\142\336"},
-    {0x01B9, "\001\003\004\371\142\336"},
-    {0x01BA, "\001\003\004\371\142\342"},
+    {0x01B7, "\001\005\004\371\143"},
+    {0x01B8, "\001\005\004\371\143\336"},
+    {0x01B9, "\001\003\004\371\143\336"},
+    {0x01BA, "\001\003\004\371\143\342"},
     {0x01BB, "\001\004\154\175"},
     {0x01BC, "\001\005\004\372\217\272"},
     {0x01BD, "\001\003\004\372\217\272"},
-    {0x01BE, "\001\004\371\075\012\371\101\175\371\016"},
-    {0x01BF, "\001\004\377\274"},
-    {0x01C0, "\001\004\371\342\375\132"},
-    {0x01C1, "\001\004\371\342\376\050"},
-    {0x01C2, "\001\004\371\342\374\303"},
-    {0x01C3, "\001\004\371\342\371\066"},
-    {0x01C4, "\001\005\004\371\271\172"},
+    {0x01BE, "\001\004\371\076\012\371\102\175\371\016"},
+    {0x01BF, "\001\004\377\275"},
+    {0x01C0, "\001\004\371\343\375\133"},
+    {0x01C1, "\001\004\371\343\376\051"},
+    {0x01C2, "\001\004\371\343\374\304"},
+    {0x01C3, "\001\004\371\343\371\067"},
+    {0x01C4, "\001\005\004\371\272\172"},
     {0x01C5, "\001\005\004\225\130\001\003\243\172"},
-    {0x01C6, "\001\003\004\371\271\172"},
-    {0x01C7, "\001\005\004\373\267"},
+    {0x01C6, "\001\003\004\371\272\172"},
+    {0x01C7, "\001\005\004\373\270"},
     {0x01C8, "\001\005\004\167\130\001\003\344"},
-    {0x01C9, "\001\003\004\373\267"},
-    {0x01CA, "\001\005\004\373\320"},
+    {0x01C9, "\001\003\004\373\270"},
+    {0x01CA, "\001\005\004\373\321"},
     {0x01CB, "\001\005\004\213\130\001\003\344"},
-    {0x01CC, "\001\003\004\373\320"},
+    {0x01CC, "\001\003\004\373\321"},
     {0x01CD, "\001\005\004\046\172"},
     {0x01CE, "\001\003\004\046\172"},
     {0x01CF, "\001\005\004\072\172"},
@@ -2532,12 +2533,12 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x01EB, "\001\003\004\050\371\003"},
     {0x01EC, "\001\005\004\050\371\003\011\161"},
     {0x01ED, "\001\003\004\050\371\003\011\161"},
-    {0x01EE, "\001\005\004\371\142\172"},
-    {0x01EF, "\001\003\004\371\142\172"},
+    {0x01EE, "\001\005\004\371\143\172"},
+    {0x01EF, "\001\003\004\371\143\172"},
     {0x01F0, "\001\003\004\344\172"},
-    {0x01F1, "\001\005\004\371\271"},
+    {0x01F1, "\001\005\004\371\272"},
     {0x01F2, "\001\005\004\225\130\001\003\243"},
-    {0x01F3, "\001\003\004\371\271"},
+    {0x01F3, "\001\003\004\371\272"},
     {0x01F4, "\001\005\004\227\026\102"},
     {0x01F5, "\001\003\004\227\026\102"},
     {0x01FA, "\001\005\004\046\231\007\025\011\026\102"},
@@ -2572,109 +2573,109 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0251, "\001\003\004\152"},
     {0x0252, "\001\003\004\152\260"},
     {0x0253, "\001\003\004\275\254"},
-    {0x0254, "\001\003\004\050\371\306"},
-    {0x0255, "\001\003\004\241\371\220"},
-    {0x0256, "\001\003\004\225\342\371\066"},
+    {0x0254, "\001\003\004\050\371\307"},
+    {0x0255, "\001\003\004\241\371\221"},
+    {0x0256, "\001\003\004\225\342\371\067"},
     {0x0257, "\001\003\004\225\254"},
     {0x0258, "\001\003\004\060\336"},
-    {0x0259, "\001\003\004\371\246"},
-    {0x025A, "\001\003\004\371\246\100"},
+    {0x0259, "\001\003\004\371\247"},
+    {0x025A, "\001\003\004\371\247\100"},
     {0x025B, "\001\003\004\247"},
     {0x025C, "\001\003\004\247\336"},
     {0x025D, "\001\003\004\247\336\100"},
     {0x025E, "\001\003\004\247\336\372\252"},
     {0x025F, "\001\003\004\344\232\027\175"},
     {0x0260, "\001\003\004\227\254"},
-    {0x0261, "\001\003\004\227\375\100"},
-    {0x0262, "\001\004\371\032\005\227"},
-    {0x0263, "\001\003\004\371\273"},
-    {0x0264, "\001\003\004\144\371\273"},
+    {0x0261, "\001\003\004\227\375\101"},
+    {0x0262, "\001\004\371\033\005\227"},
+    {0x0263, "\001\003\004\371\274"},
+    {0x0264, "\001\003\004\144\371\274"},
     {0x0265, "\001\003\004\230\260"},
     {0x0266, "\001\003\004\230\254"},
     {0x0267, "\001\003\004\372\060\254"},
     {0x0268, "\001\003\004\072\175"},
     {0x0269, "\001\003\004\055"},
-    {0x026A, "\001\004\371\032\005\072"},
-    {0x026B, "\001\003\004\167\143\371\037"},
-    {0x026C, "\001\003\004\167\377\050"},
-    {0x026D, "\001\003\004\167\342\371\066"},
-    {0x026E, "\001\003\004\376\052"},
+    {0x026A, "\001\004\371\033\005\072"},
+    {0x026B, "\001\003\004\167\143\371\040"},
+    {0x026C, "\001\003\004\167\377\051"},
+    {0x026D, "\001\003\004\167\342\371\067"},
+    {0x026E, "\001\003\004\376\053"},
     {0x026F, "\001\003\004\256\260"},
     {0x0270, "\001\003\004\256\372\260\260"},
     {0x0271, "\001\003\004\256\342\372\322"},
     {0x0272, "\001\003\004\213\342\040\042"},
-    {0x0273, "\001\003\004\213\342\371\066"},
-    {0x0274, "\001\004\371\032\005\213"},
+    {0x0273, "\001\003\004\213\342\371\067"},
+    {0x0274, "\001\004\371\033\005\213"},
     {0x0275, "\001\003\004\050\175"},
-    {0x0276, "\001\004\371\032\005\371\040"},
+    {0x0276, "\001\004\371\033\005\371\041"},
     {0x0277, "\001\003\004\147\372\252"},
     {0x0278, "\001\003\004\372\123"},
     {0x0279, "\001\003\004\150\260"},
     {0x027A, "\001\003\004\150\372\134\260"},
     {0x027B, "\001\003\004\150\254\260"},
     {0x027C, "\001\003\004\150\372\134"},
-    {0x027D, "\001\003\004\150\342\371\066"},
+    {0x027D, "\001\003\004\150\342\371\067"},
     {0x027E, "\001\003\004\150\232\372\257"},
     {0x027F, "\001\003\004\150\232\372\257\336"},
-    {0x0280, "\001\004\371\032\005\150"},
-    {0x0281, "\001\004\371\032\005\150\371\016"},
-    {0x0282, "\001\003\004\207\342\371\066"},
-    {0x0283, "\001\003\004\375\204"},
+    {0x0280, "\001\004\371\033\005\150"},
+    {0x0281, "\001\004\371\033\005\150\371\016"},
+    {0x0282, "\001\003\004\207\342\371\067"},
+    {0x0283, "\001\003\004\375\205"},
     {0x0284, "\001\003\004\344\232\027\175\254"},
-    {0x0285, "\001\003\004\372\201\377\216\371\016"},
-    {0x0286, "\001\003\004\372\201\371\220"},
+    {0x0285, "\001\003\004\372\201\377\217\371\016"},
+    {0x0286, "\001\003\004\372\201\371\221"},
     {0x0287, "\001\003\004\236\260"},
-    {0x0288, "\001\003\004\236\342\371\066"},
+    {0x0288, "\001\003\004\236\342\371\067"},
     {0x0289, "\001\003\004\107\175"},
     {0x028A, "\001\003\004\214"},
     {0x028B, "\001\003\004\324\012\371\005"},
     {0x028C, "\001\003\004\324\260"},
     {0x028D, "\001\003\004\273\260"},
     {0x028E, "\001\003\004\240\260"},
-    {0x028F, "\001\004\371\032\005\240"},
-    {0x0290, "\001\003\004\243\342\371\066"},
-    {0x0291, "\001\003\004\243\371\220"},
-    {0x0292, "\001\003\004\371\142"},
-    {0x0293, "\001\003\004\371\142\371\220"},
-    {0x0294, "\001\004\371\075\012\371\101"},
-    {0x0295, "\001\004\371\075\012\371\101\336"},
-    {0x0296, "\001\004\371\075\012\371\101\371\016"},
-    {0x0297, "\001\004\241\377\334"},
-    {0x0298, "\001\004\371\342\374\363"},
-    {0x0299, "\001\004\371\032\005\275"},
+    {0x028F, "\001\004\371\033\005\240"},
+    {0x0290, "\001\003\004\243\342\371\067"},
+    {0x0291, "\001\003\004\243\371\221"},
+    {0x0292, "\001\003\004\371\143"},
+    {0x0293, "\001\003\004\371\143\371\221"},
+    {0x0294, "\001\004\371\076\012\371\102"},
+    {0x0295, "\001\004\371\076\012\371\102\336"},
+    {0x0296, "\001\004\371\076\012\371\102\371\016"},
+    {0x0297, "\001\004\241\377\335"},
+    {0x0298, "\001\004\371\343\374\364"},
+    {0x0299, "\001\004\371\033\005\275"},
     {0x029A, "\001\003\004\247\372\252"},
-    {0x029B, "\001\004\371\032\005\227\254"},
-    {0x029C, "\001\004\371\032\005\230"},
-    {0x029D, "\001\003\004\344\372\142\375\075"},
+    {0x029B, "\001\004\371\033\005\227\254"},
+    {0x029C, "\001\004\371\033\005\230"},
+    {0x029D, "\001\003\004\344\372\142\375\076"},
     {0x029E, "\001\003\004\301\260"},
-    {0x029F, "\001\004\371\032\005\167"},
-    {0x02A0, "\001\003\004\371\065\254"},
-    {0x02A1, "\001\004\371\075\012\371\101\175"},
-    {0x02A2, "\001\004\371\075\012\371\101\175\336"},
-    {0x02A3, "\001\003\004\371\054\371\271"},
-    {0x02A4, "\001\003\004\371\054\375\124"},
-    {0x02A5, "\001\003\004\371\054\371\271\371\220"},
-    {0x02A6, "\001\003\004\371\054\377\227"},
-    {0x02A7, "\001\003\004\371\054\377\231"},
-    {0x02A8, "\001\003\004\371\054\377\146\371\220"},
+    {0x029F, "\001\004\371\033\005\167"},
+    {0x02A0, "\001\003\004\371\066\254"},
+    {0x02A1, "\001\004\371\076\012\371\102\175"},
+    {0x02A2, "\001\004\371\076\012\371\102\175\336"},
+    {0x02A3, "\001\003\004\371\055\371\272"},
+    {0x02A4, "\001\003\004\371\055\375\125"},
+    {0x02A5, "\001\003\004\371\055\371\272\371\221"},
+    {0x02A6, "\001\003\004\371\055\377\230"},
+    {0x02A7, "\001\003\004\371\055\377\232"},
+    {0x02A8, "\001\003\004\371\055\377\147\371\221"},
     {0x02B0, "\001\157\003\230"},
     {0x02B1, "\001\157\003\230\254"},
     {0x02B2, "\001\157\003\344"},
     {0x02B3, "\001\157\003\150"},
     {0x02B4, "\001\157\003\150\260"},
     {0x02B5, "\001\157\003\150\254\260"},
-    {0x02B6, "\001\157\371\032\005\150\371\016"},
+    {0x02B6, "\001\157\371\033\005\150\371\016"},
     {0x02B7, "\001\157\003\273"},
     {0x02B8, "\001\157\003\240"},
-    {0x02B9, "\001\157\371\064"},
-    {0x02BA, "\001\157\377\057"},
-    {0x02BB, "\001\157\331\371\343"},
-    {0x02BC, "\001\157\371\215"},
-    {0x02BD, "\001\157\331\374\032"},
-    {0x02BE, "\001\157\373\123\040\037"},
-    {0x02BF, "\001\157\373\123\040\042"},
-    {0x02C0, "\001\157\371\075\012\371\101"},
-    {0x02C1, "\001\157\371\075\012\371\101\336"},
+    {0x02B9, "\001\157\371\065"},
+    {0x02BA, "\001\157\377\060"},
+    {0x02BB, "\001\157\331\371\344"},
+    {0x02BC, "\001\157\371\216"},
+    {0x02BD, "\001\157\331\374\033"},
+    {0x02BE, "\001\157\373\124\040\037"},
+    {0x02BF, "\001\157\373\124\040\042"},
+    {0x02C0, "\001\157\371\076\012\371\102"},
+    {0x02C1, "\001\157\371\076\012\371\102\336"},
     {0x02C2, "\001\157\302\012\043\013\022\042"},
     {0x02C3, "\001\157\302\012\043\013\022\037"},
     {0x02C4, "\001\157\302\012\043\013\035\065"},
@@ -2689,31 +2690,31 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x02CD, "\001\157\161\061"},
     {0x02CE, "\001\157\026\151\061"},
     {0x02CF, "\001\157\026\102\061"},
-    {0x02D0, "\001\157\154\220\377\224"},
-    {0x02D1, "\001\157\027\371\325"},
-    {0x02D2, "\001\157\371\270\040\037\373\062"},
-    {0x02D3, "\001\157\371\270\040\042\373\062"},
+    {0x02D0, "\001\157\154\220\377\225"},
+    {0x02D1, "\001\157\027\371\326"},
+    {0x02D2, "\001\157\371\271\040\037\373\063"},
+    {0x02D3, "\001\157\371\271\040\042\373\063"},
     {0x02D4, "\001\157\307\065"},
     {0x02D5, "\001\157\307\061"},
     {0x02D6, "\001\157\134\162"},
-    {0x02D7, "\001\157\134\371\036"},
+    {0x02D7, "\001\157\134\371\037"},
     {0x02D8, "\160"},
     {0x02D9, "\027\007\025"},
     {0x02DA, "\231\007\025"},
     {0x02DB, "\371\003"},
     {0x02DC, "\144\143"},
     {0x02DD, "\051\026\102"},
-    {0x02DE, "\001\157\100\012\377\005"},
-    {0x02E0, "\001\157\371\273\003"},
+    {0x02DE, "\001\157\100\012\377\006"},
+    {0x02E0, "\001\157\371\274\003"},
     {0x02E1, "\001\157\167\003"},
     {0x02E2, "\001\157\207\003"},
     {0x02E3, "\001\157\310\003"},
-    {0x02E4, "\001\157\371\075\012\371\101\336\003"},
-    {0x02E5, "\001\157\210\012\272\374\107\065"},
+    {0x02E4, "\001\157\371\076\012\371\102\336\003"},
+    {0x02E5, "\001\157\210\012\272\374\110\065"},
     {0x02E6, "\001\157\210\012\272\065"},
-    {0x02E7, "\001\157\210\012\272\376\154"},
+    {0x02E7, "\001\157\210\012\272\376\155"},
     {0x02E8, "\001\157\210\012\272\061"},
-    {0x02E9, "\001\157\210\012\272\374\107\061"},
+    {0x02E9, "\001\157\210\012\272\374\110\061"},
     {0x0300, "\023\026\151"},
     {0x0301, "\023\026\102"},
     {0x0302, "\023\026\117"},
@@ -2730,25 +2731,25 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x030D, "\023\212\224\007\025"},
     {0x030E, "\023\051\212\224\007\025"},
     {0x030F, "\023\051\026\151"},
-    {0x0310, "\023\371\263"},
+    {0x0310, "\023\371\264"},
     {0x0311, "\023\160\352"},
-    {0x0312, "\023\331\371\343\007\025"},
+    {0x0312, "\023\331\371\344\007\025"},
     {0x0313, "\023\331\007\025"},
-    {0x0314, "\023\331\374\032\007\025"},
+    {0x0314, "\023\331\374\033\007\025"},
     {0x0315, "\023\331\007\025\040\037"},
     {0x0316, "\023\026\151\032"},
     {0x0317, "\023\026\102\032"},
     {0x0318, "\023\307\042\032"},
     {0x0319, "\023\307\173\032"},
-    {0x031A, "\023\371\262\042\007\025"},
+    {0x031A, "\023\371\263\042\007\025"},
     {0x031B, "\023\253"},
-    {0x031C, "\023\371\270\042\032"},
+    {0x031C, "\023\371\271\042\032"},
     {0x031D, "\023\307\065\032"},
     {0x031E, "\023\307\061\032"},
     {0x031F, "\023\134\162\032"},
-    {0x0320, "\023\134\371\036\032"},
+    {0x0320, "\023\134\371\037\032"},
     {0x0321, "\023\342\372\322\032"},
-    {0x0322, "\023\342\371\066\032"},
+    {0x0322, "\023\342\371\067\032"},
     {0x0323, "\023\027\032"},
     {0x0324, "\023\141\032"},
     {0x0325, "\023\231\032"},
@@ -2756,7 +2757,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0327, "\023\246"},
     {0x0328, "\023\371\003"},
     {0x0329, "\023\212\224\271"},
-    {0x032A, "\023\373\374\032"},
+    {0x032A, "\023\373\375\032"},
     {0x032B, "\023\147\032"},
     {0x032C, "\023\172\032"},
     {0x032D, "\023\026\117\032"},
@@ -2767,33 +2768,33 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0332, "\023\264\032"},
     {0x0333, "\023\051\264\032"},
     {0x0334, "\023\143\372\050"},
-    {0x0335, "\023\210\372\225\371\266"},
-    {0x0336, "\023\210\372\103\371\266"},
-    {0x0337, "\023\210\361\372\225\371\266"},
-    {0x0338, "\023\210\361\372\103\371\266"},
-    {0x0339, "\023\371\270\040\037\032"},
-    {0x033A, "\023\373\374\371\016\032"},
+    {0x0335, "\023\210\372\225\371\267"},
+    {0x0336, "\023\210\372\103\371\267"},
+    {0x0337, "\023\210\361\372\225\371\267"},
+    {0x0338, "\023\210\361\372\103\371\267"},
+    {0x0339, "\023\371\271\040\037\032"},
+    {0x033A, "\023\373\375\371\016\032"},
     {0x033B, "\023\021\032"},
-    {0x033C, "\023\376\153\271"},
+    {0x033C, "\023\376\154\271"},
     {0x033D, "\023\310\007\025"},
     {0x033E, "\023\143\145"},
     {0x033F, "\023\051\264\007\025"},
     {0x0340, "\023\153\012\272\151"},
     {0x0341, "\023\153\012\272\102"},
     {0x0342, "\023\277\165"},
-    {0x0343, "\023\277\373\100"},
+    {0x0343, "\023\277\373\101"},
     {0x0344, "\023\277\341\330"},
     {0x0345, "\023\277\055\032"},
     {0x0360, "\023\051\143"},
     {0x0361, "\023\051\160\352"},
-    {0x0374, "\134\373\326\277"},
-    {0x0375, "\134\373\326\032\277"},
+    {0x0374, "\134\373\327\277"},
+    {0x0375, "\134\373\327\032\277"},
     {0x037A, "\074\277\055\032"},
-    {0x037E, "\027\371\224\277"},
+    {0x037E, "\027\371\225\277"},
     {0x0384, "\074\277\330"},
     {0x0385, "\074\277\341\330"},
     {0x0386, "\001\005\014\152\330"},
-    {0x0387, "\074\277\374\311\377\173"},
+    {0x0387, "\074\277\374\312\377\174"},
     {0x0388, "\001\005\014\247\330"},
     {0x0389, "\001\005\014\166\330"},
     {0x038A, "\001\005\014\055\330"},
@@ -2803,23 +2804,23 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0390, "\001\003\014\055\341\011\330"},
     {0x0391, "\001\005\014\152"},
     {0x0392, "\001\005\014\372\211"},
-    {0x0393, "\001\005\014\371\273"},
-    {0x0394, "\001\005\014\371\267"},
+    {0x0393, "\001\005\014\371\274"},
+    {0x0394, "\001\005\014\371\270"},
     {0x0395, "\001\005\014\247"},
-    {0x0396, "\001\005\014\373\141"},
+    {0x0396, "\001\005\014\373\142"},
     {0x0397, "\001\005\014\166"},
     {0x0398, "\001\005\014\372\371"},
     {0x0399, "\001\005\014\055"},
     {0x039A, "\001\005\014\372\274"},
     {0x039B, "\001\005\014\372\077"},
     {0x039C, "\001\005\014\371\001"},
-    {0x039D, "\001\005\014\371\304"},
-    {0x039E, "\001\005\014\374\131"},
+    {0x039D, "\001\005\014\371\305"},
+    {0x039E, "\001\005\014\374\132"},
     {0x039F, "\001\005\014\321"},
-    {0x03A0, "\001\005\014\371\307"},
-    {0x03A1, "\001\005\014\371\170"},
+    {0x03A0, "\001\005\014\371\310"},
+    {0x03A1, "\001\005\014\371\171"},
     {0x03A3, "\001\005\014\372\153"},
-    {0x03A4, "\001\005\014\374\072"},
+    {0x03A4, "\001\005\014\374\073"},
     {0x03A5, "\001\005\014\214"},
     {0x03A6, "\001\005\014\372\123"},
     {0x03A7, "\001\005\014\372\301"},
@@ -2834,24 +2835,24 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x03B0, "\001\003\014\214\341\011\330"},
     {0x03B1, "\001\003\014\152"},
     {0x03B2, "\001\003\014\372\211"},
-    {0x03B3, "\001\003\014\371\273"},
-    {0x03B4, "\001\003\014\371\267"},
+    {0x03B3, "\001\003\014\371\274"},
+    {0x03B4, "\001\003\014\371\270"},
     {0x03B5, "\001\003\014\247"},
-    {0x03B6, "\001\003\014\373\141"},
+    {0x03B6, "\001\003\014\373\142"},
     {0x03B7, "\001\003\014\166"},
     {0x03B8, "\001\003\014\372\371"},
     {0x03B9, "\001\003\014\055"},
     {0x03BA, "\001\003\014\372\274"},
     {0x03BB, "\001\003\014\372\077"},
     {0x03BC, "\001\003\014\371\001"},
-    {0x03BD, "\001\003\014\371\304"},
-    {0x03BE, "\001\003\014\374\131"},
+    {0x03BD, "\001\003\014\371\305"},
+    {0x03BE, "\001\003\014\374\132"},
     {0x03BF, "\001\003\014\321"},
-    {0x03C0, "\001\003\014\371\307"},
-    {0x03C1, "\001\003\014\371\170"},
+    {0x03C0, "\001\003\014\371\310"},
+    {0x03C1, "\001\003\014\371\171"},
     {0x03C2, "\001\003\014\372\153\016"},
     {0x03C3, "\001\003\014\372\153"},
-    {0x03C4, "\001\003\014\374\072"},
+    {0x03C4, "\001\003\014\374\073"},
     {0x03C5, "\001\003\014\214"},
     {0x03C6, "\001\003\014\372\123"},
     {0x03C7, "\001\003\014\372\301"},
@@ -2868,235 +2869,235 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x03D3, "\015\277\214\026\102\011\100"},
     {0x03D4, "\015\277\214\141\011\100"},
     {0x03D5, "\015\277\372\123"},
-    {0x03D6, "\015\277\371\307"},
-    {0x03DA, "\001\014\377\124"},
-    {0x03DC, "\001\014\375\143"},
+    {0x03D6, "\015\277\371\310"},
+    {0x03DA, "\001\014\377\125"},
+    {0x03DC, "\001\014\375\144"},
     {0x03DE, "\001\014\372\303"},
-    {0x03E0, "\001\014\377\047"},
-    {0x03E2, "\001\005\366\374\036\372\203"},
-    {0x03E3, "\001\003\366\374\036"},
-    {0x03E4, "\001\005\366\373\160"},
-    {0x03E5, "\001\003\366\373\160"},
-    {0x03E6, "\001\005\366\373\252"},
-    {0x03E7, "\001\003\366\373\252"},
-    {0x03E8, "\001\005\366\373\226"},
-    {0x03E9, "\001\003\366\373\226"},
-    {0x03EA, "\001\005\366\373\211\372\203"},
-    {0x03EB, "\001\003\366\373\211"},
-    {0x03EC, "\001\005\366\374\037\372\203"},
-    {0x03ED, "\001\003\366\374\037"},
-    {0x03EE, "\001\005\366\373\121"},
-    {0x03EF, "\001\003\366\373\121"},
+    {0x03E0, "\001\014\377\050"},
+    {0x03E2, "\001\005\366\374\037\372\203"},
+    {0x03E3, "\001\003\366\374\037"},
+    {0x03E4, "\001\005\366\373\161"},
+    {0x03E5, "\001\003\366\373\161"},
+    {0x03E6, "\001\005\366\373\253"},
+    {0x03E7, "\001\003\366\373\253"},
+    {0x03E8, "\001\005\366\373\227"},
+    {0x03E9, "\001\003\366\373\227"},
+    {0x03EA, "\001\005\366\373\212\372\203"},
+    {0x03EB, "\001\003\366\373\212"},
+    {0x03EC, "\001\005\366\374\040\372\203"},
+    {0x03ED, "\001\003\366\374\040"},
+    {0x03EE, "\001\005\366\373\122"},
+    {0x03EF, "\001\003\366\373\122"},
     {0x03F0, "\015\277\372\274"},
-    {0x03F1, "\015\277\371\170"},
-    {0x03F2, "\015\277\376\067\372\153"},
-    {0x03F3, "\001\014\377\310"},
-    {0x0401, "\001\005\024\373\240"},
+    {0x03F1, "\015\277\371\171"},
+    {0x03F2, "\015\277\376\070\372\153"},
+    {0x03F3, "\001\014\377\311"},
+    {0x0401, "\001\005\024\373\241"},
     {0x0402, "\001\005\024\372\056\372\151"},
-    {0x0403, "\001\005\024\373\213"},
-    {0x0404, "\001\005\024\375\336\374\110"},
+    {0x0403, "\001\005\024\373\214"},
+    {0x0404, "\001\005\024\375\337\374\111"},
     {0x0405, "\001\005\024\372\057"},
-    {0x0406, "\001\005\024\072\373\052"},
+    {0x0406, "\001\005\024\072\373\053"},
     {0x0407, "\001\005\024\372\174"},
     {0x0408, "\001\005\024\372\056"},
-    {0x0409, "\001\005\024\376\051"},
-    {0x040A, "\001\005\024\376\175"},
+    {0x0409, "\001\005\024\376\052"},
+    {0x040A, "\001\005\024\376\176"},
     {0x040B, "\001\005\024\353\372\151"},
-    {0x040C, "\001\005\024\373\255"},
-    {0x040E, "\001\005\024\114\371\127\373\051"},
-    {0x040F, "\001\005\024\373\120"},
+    {0x040C, "\001\005\024\373\256"},
+    {0x040E, "\001\005\024\114\371\130\373\052"},
+    {0x040F, "\001\005\024\373\121"},
     {0x0410, "\001\005\024\046"},
-    {0x0411, "\001\005\024\373\055"},
-    {0x0412, "\001\005\024\374\125"},
-    {0x0413, "\001\005\024\371\057"},
-    {0x0414, "\001\005\024\373\142"},
-    {0x0415, "\001\005\024\371\234"},
-    {0x0416, "\001\005\024\371\152"},
-    {0x0417, "\001\005\024\371\332"},
+    {0x0411, "\001\005\024\373\056"},
+    {0x0412, "\001\005\024\374\126"},
+    {0x0413, "\001\005\024\371\060"},
+    {0x0414, "\001\005\024\373\143"},
+    {0x0415, "\001\005\024\371\235"},
+    {0x0416, "\001\005\024\371\153"},
+    {0x0417, "\001\005\024\371\333"},
     {0x0418, "\001\005\024\072"},
-    {0x0419, "\001\005\024\072\371\127"},
+    {0x0419, "\001\005\024\072\371\130"},
     {0x041A, "\001\005\024\244"},
-    {0x041B, "\001\005\024\373\147"},
-    {0x041C, "\001\005\024\373\150"},
-    {0x041D, "\001\005\024\371\143"},
+    {0x041B, "\001\005\024\373\150"},
+    {0x041C, "\001\005\024\373\151"},
+    {0x041D, "\001\005\024\371\144"},
     {0x041E, "\001\005\024\050"},
     {0x041F, "\001\005\024\372\137"},
-    {0x0420, "\001\005\024\373\154"},
-    {0x0421, "\001\005\024\371\357"},
-    {0x0422, "\001\005\024\371\326"},
+    {0x0420, "\001\005\024\373\155"},
+    {0x0421, "\001\005\024\371\360"},
+    {0x0422, "\001\005\024\371\327"},
     {0x0423, "\001\005\024\114"},
-    {0x0424, "\001\005\024\373\145"},
-    {0x0425, "\001\005\024\371\061"},
+    {0x0424, "\001\005\024\373\146"},
+    {0x0425, "\001\005\024\371\062"},
     {0x0426, "\001\005\024\372\167"},
     {0x0427, "\001\005\024\353"},
     {0x0428, "\001\005\024\371\020"},
-    {0x0429, "\001\005\024\373\070"},
+    {0x0429, "\001\005\024\373\071"},
     {0x042A, "\134\005\024\372\246"},
     {0x042B, "\001\005\024\372\176"},
-    {0x042C, "\134\005\024\012\373\305\012\373\075"},
-    {0x042D, "\001\005\024\371\257"},
-    {0x042E, "\001\005\024\373\241"},
-    {0x042F, "\001\005\024\373\231"},
+    {0x042C, "\134\005\024\012\373\306\012\373\076"},
+    {0x042D, "\001\005\024\371\260"},
+    {0x042E, "\001\005\024\373\242"},
+    {0x042F, "\001\005\024\373\232"},
     {0x0430, "\001\003\024\046"},
-    {0x0431, "\001\003\024\373\055"},
-    {0x0432, "\001\003\024\374\125"},
-    {0x0433, "\001\003\024\371\057"},
-    {0x0434, "\001\003\024\373\142"},
-    {0x0435, "\001\003\024\371\234"},
-    {0x0436, "\001\003\024\371\152"},
-    {0x0437, "\001\003\024\371\332"},
+    {0x0431, "\001\003\024\373\056"},
+    {0x0432, "\001\003\024\374\126"},
+    {0x0433, "\001\003\024\371\060"},
+    {0x0434, "\001\003\024\373\143"},
+    {0x0435, "\001\003\024\371\235"},
+    {0x0436, "\001\003\024\371\153"},
+    {0x0437, "\001\003\024\371\333"},
     {0x0438, "\001\003\024\072"},
-    {0x0439, "\001\003\024\072\371\127"},
+    {0x0439, "\001\003\024\072\371\130"},
     {0x043A, "\001\003\024\244"},
-    {0x043B, "\001\003\024\373\147"},
-    {0x043C, "\001\003\024\373\150"},
-    {0x043D, "\001\003\024\371\143"},
+    {0x043B, "\001\003\024\373\150"},
+    {0x043C, "\001\003\024\373\151"},
+    {0x043D, "\001\003\024\371\144"},
     {0x043E, "\001\003\024\050"},
     {0x043F, "\001\003\024\372\137"},
-    {0x0440, "\001\003\024\373\154"},
-    {0x0441, "\001\003\024\371\357"},
-    {0x0442, "\001\003\024\371\326"},
+    {0x0440, "\001\003\024\373\155"},
+    {0x0441, "\001\003\024\371\360"},
+    {0x0442, "\001\003\024\371\327"},
     {0x0443, "\001\003\024\114"},
-    {0x0444, "\001\003\024\373\145"},
-    {0x0445, "\001\003\024\371\061"},
+    {0x0444, "\001\003\024\373\146"},
+    {0x0445, "\001\003\024\371\062"},
     {0x0446, "\001\003\024\372\167"},
     {0x0447, "\001\003\024\353"},
     {0x0448, "\001\003\024\371\020"},
-    {0x0449, "\001\003\024\373\070"},
+    {0x0449, "\001\003\024\373\071"},
     {0x044A, "\134\003\024\372\246"},
     {0x044B, "\001\003\024\372\176"},
-    {0x044C, "\134\003\024\012\373\305\012\373\075"},
-    {0x044D, "\001\003\024\371\257"},
-    {0x044E, "\001\003\024\373\241"},
-    {0x044F, "\001\003\024\373\231"},
-    {0x0451, "\001\003\024\373\240"},
+    {0x044C, "\134\003\024\012\373\306\012\373\076"},
+    {0x044D, "\001\003\024\371\260"},
+    {0x044E, "\001\003\024\373\242"},
+    {0x044F, "\001\003\024\373\232"},
+    {0x0451, "\001\003\024\373\241"},
     {0x0452, "\001\003\024\372\056\372\151"},
-    {0x0453, "\001\003\024\373\213"},
-    {0x0454, "\001\003\024\371\234\374\110"},
+    {0x0453, "\001\003\024\373\214"},
+    {0x0454, "\001\003\024\371\235\374\111"},
     {0x0455, "\001\003\024\372\057"},
-    {0x0456, "\001\003\024\072\373\052"},
+    {0x0456, "\001\003\024\072\373\053"},
     {0x0457, "\001\003\024\372\174"},
     {0x0458, "\001\003\024\372\056"},
-    {0x0459, "\001\003\024\376\060"},
-    {0x045A, "\001\003\024\376\206"},
+    {0x0459, "\001\003\024\376\061"},
+    {0x045A, "\001\003\024\376\207"},
     {0x045B, "\001\003\024\353\372\151"},
-    {0x045C, "\001\003\024\373\255"},
-    {0x045E, "\001\003\024\114\371\127\373\051"},
-    {0x045F, "\001\003\024\373\120"},
+    {0x045C, "\001\003\024\373\256"},
+    {0x045E, "\001\003\024\114\371\130\373\052"},
+    {0x045F, "\001\003\024\373\121"},
     {0x0460, "\001\005\024\147"},
     {0x0461, "\001\003\024\147"},
-    {0x0462, "\001\005\024\374\132"},
-    {0x0463, "\001\003\024\374\132"},
-    {0x0464, "\001\005\024\371\257\371\275"},
-    {0x0465, "\001\003\024\371\257\371\275"},
-    {0x0466, "\001\005\024\144\371\210"},
-    {0x0467, "\001\003\024\144\371\210"},
-    {0x0468, "\001\005\024\144\371\210\371\275"},
-    {0x0469, "\001\003\024\144\371\210\371\275"},
-    {0x046A, "\001\005\024\262\371\210"},
-    {0x046B, "\001\003\024\262\371\210"},
-    {0x046C, "\001\005\024\262\371\210\371\275"},
-    {0x046D, "\001\003\024\262\371\210\371\275"},
-    {0x046E, "\001\005\024\373\256"},
-    {0x046F, "\001\003\024\373\256"},
+    {0x0462, "\001\005\024\374\133"},
+    {0x0463, "\001\003\024\374\133"},
+    {0x0464, "\001\005\024\371\260\371\276"},
+    {0x0465, "\001\003\024\371\260\371\276"},
+    {0x0466, "\001\005\024\144\371\211"},
+    {0x0467, "\001\003\024\144\371\211"},
+    {0x0468, "\001\005\024\144\371\211\371\276"},
+    {0x0469, "\001\003\024\144\371\211\371\276"},
+    {0x046A, "\001\005\024\262\371\211"},
+    {0x046B, "\001\003\024\262\371\211"},
+    {0x046C, "\001\005\024\262\371\211\371\276"},
+    {0x046D, "\001\003\024\262\371\211\371\276"},
+    {0x046E, "\001\005\024\373\257"},
+    {0x046F, "\001\003\024\373\257"},
     {0x0470, "\001\005\024\372\135"},
     {0x0471, "\001\003\024\372\135"},
-    {0x0472, "\001\005\024\373\166"},
-    {0x0473, "\001\003\024\373\166"},
+    {0x0472, "\001\005\024\373\167"},
+    {0x0473, "\001\003\024\373\167"},
     {0x0474, "\001\005\024\372\071"},
     {0x0475, "\001\003\024\372\071"},
     {0x0476, "\001\005\024\372\071\051\026\151"},
     {0x0477, "\001\003\024\372\071\051\026\151"},
-    {0x0478, "\001\005\024\373\342"},
-    {0x0479, "\001\003\024\373\342"},
+    {0x0478, "\001\005\024\373\343"},
+    {0x0479, "\001\003\024\373\343"},
     {0x047A, "\001\005\024\147\231"},
     {0x047B, "\001\003\024\147\231"},
     {0x047C, "\001\005\024\147\372\373"},
     {0x047D, "\001\003\024\147\372\373"},
-    {0x047E, "\001\005\024\373\341"},
-    {0x047F, "\001\003\024\373\341"},
+    {0x047E, "\001\005\024\373\342"},
+    {0x047F, "\001\003\024\373\342"},
     {0x0480, "\001\005\024\372\303"},
     {0x0481, "\001\003\024\372\303"},
-    {0x0482, "\134\024\373\276"},
+    {0x0482, "\134\024\373\277"},
     {0x0483, "\023\024\372\373"},
-    {0x0484, "\023\024\012\376\265"},
-    {0x0485, "\023\024\101\373\372"},
-    {0x0486, "\023\024\115\373\372"},
-    {0x0490, "\001\005\024\371\057\372\260"},
-    {0x0491, "\001\003\024\371\057\372\260"},
-    {0x0492, "\001\005\024\371\057\175"},
-    {0x0493, "\001\003\024\371\057\175"},
-    {0x0494, "\001\005\024\371\057\100\371\037"},
-    {0x0495, "\001\003\024\371\057\100\371\037"},
-    {0x0496, "\001\005\024\371\152\320"},
-    {0x0497, "\001\003\024\371\152\320"},
-    {0x0498, "\001\005\024\371\332\320"},
-    {0x0499, "\001\003\024\371\332\320"},
+    {0x0484, "\023\024\012\376\266"},
+    {0x0485, "\023\024\101\373\373"},
+    {0x0486, "\023\024\115\373\373"},
+    {0x0490, "\001\005\024\371\060\372\260"},
+    {0x0491, "\001\003\024\371\060\372\260"},
+    {0x0492, "\001\005\024\371\060\175"},
+    {0x0493, "\001\003\024\371\060\175"},
+    {0x0494, "\001\005\024\371\060\100\371\040"},
+    {0x0495, "\001\003\024\371\060\100\371\040"},
+    {0x0496, "\001\005\024\371\153\320"},
+    {0x0497, "\001\003\024\371\153\320"},
+    {0x0498, "\001\005\024\371\333\320"},
+    {0x0499, "\001\003\024\371\333\320"},
     {0x049A, "\001\005\024\244\320"},
     {0x049B, "\001\003\024\244\320"},
     {0x049C, "\001\005\024\244\210\224"},
     {0x049D, "\001\003\024\244\210\224"},
     {0x049E, "\001\005\024\244\175"},
     {0x049F, "\001\003\024\244\175"},
-    {0x04A0, "\001\005\024\244\373\043"},
-    {0x04A1, "\001\003\024\244\373\043"},
-    {0x04A2, "\001\005\024\371\143\320"},
-    {0x04A3, "\001\003\024\371\143\320"},
-    {0x04A4, "\006\024\005\371\143\371\057"},
-    {0x04A5, "\006\024\003\371\143\371\057"},
-    {0x04A6, "\001\005\024\372\137\100\371\037"},
-    {0x04A7, "\001\003\024\372\137\100\371\037"},
-    {0x04A8, "\001\005\024\333\371\125"},
-    {0x04A9, "\001\003\024\333\371\125"},
-    {0x04AA, "\001\005\024\371\357\320"},
-    {0x04AB, "\001\003\024\371\357\320"},
-    {0x04AC, "\001\005\024\371\326\320"},
-    {0x04AD, "\001\003\024\371\326\320"},
+    {0x04A0, "\001\005\024\244\373\044"},
+    {0x04A1, "\001\003\024\244\373\044"},
+    {0x04A2, "\001\005\024\371\144\320"},
+    {0x04A3, "\001\003\024\371\144\320"},
+    {0x04A4, "\006\024\005\371\144\371\060"},
+    {0x04A5, "\006\024\003\371\144\371\060"},
+    {0x04A6, "\001\005\024\372\137\100\371\040"},
+    {0x04A7, "\001\003\024\372\137\100\371\040"},
+    {0x04A8, "\001\005\024\333\371\126"},
+    {0x04A9, "\001\003\024\333\371\126"},
+    {0x04AA, "\001\005\024\371\360\320"},
+    {0x04AB, "\001\003\024\371\360\320"},
+    {0x04AC, "\001\005\024\371\327\320"},
+    {0x04AD, "\001\003\024\371\327\320"},
     {0x04AE, "\001\005\024\114\173"},
     {0x04AF, "\001\003\024\114\173"},
     {0x04B0, "\001\005\024\114\173\175"},
     {0x04B1, "\001\003\024\114\173\175"},
     {0x04B2, "\001\005\024\333\320"},
     {0x04B3, "\001\003\024\333\320"},
-    {0x04B4, "\006\005\024\371\326\372\167"},
-    {0x04B5, "\006\003\024\371\326\372\167"},
+    {0x04B4, "\006\005\024\371\327\372\167"},
+    {0x04B5, "\006\003\024\371\327\372\167"},
     {0x04B6, "\001\005\024\353\320"},
     {0x04B7, "\001\003\024\353\320"},
     {0x04B8, "\001\005\024\353\210\224"},
     {0x04B9, "\001\003\024\353\210\224"},
-    {0x04BA, "\001\005\024\374\044"},
-    {0x04BB, "\001\003\024\374\044"},
-    {0x04BC, "\001\005\024\353\371\125"},
-    {0x04BD, "\001\003\024\353\371\125"},
-    {0x04BE, "\001\005\024\353\371\125\320"},
-    {0x04BF, "\001\003\024\353\371\125\320"},
-    {0x04C0, "\001\024\376\266"},
-    {0x04C1, "\001\005\024\371\152\160"},
-    {0x04C2, "\001\003\024\371\152\160"},
+    {0x04BA, "\001\005\024\374\045"},
+    {0x04BB, "\001\003\024\374\045"},
+    {0x04BC, "\001\005\024\353\371\126"},
+    {0x04BD, "\001\003\024\353\371\126"},
+    {0x04BE, "\001\005\024\353\371\126\320"},
+    {0x04BF, "\001\003\024\353\371\126\320"},
+    {0x04C0, "\001\024\376\267"},
+    {0x04C1, "\001\005\024\371\153\160"},
+    {0x04C2, "\001\003\024\371\153\160"},
     {0x04C3, "\001\005\024\244\100"},
     {0x04C4, "\001\003\024\244\100"},
-    {0x04C7, "\001\005\024\371\143\100"},
-    {0x04C8, "\001\003\024\371\143\100"},
-    {0x04CB, "\001\005\024\353\373\251"},
-    {0x04CC, "\001\003\024\353\373\251"},
+    {0x04C7, "\001\005\024\371\144\100"},
+    {0x04C8, "\001\003\024\371\144\100"},
+    {0x04CB, "\001\005\024\353\373\252"},
+    {0x04CC, "\001\003\024\353\373\252"},
     {0x04D0, "\001\005\024\046\160"},
     {0x04D1, "\001\003\024\046\160"},
     {0x04D2, "\001\005\024\046\141"},
     {0x04D3, "\001\003\024\046\141"},
-    {0x04D4, "\006\005\024\046\371\234"},
-    {0x04D5, "\006\003\024\046\371\234"},
-    {0x04D6, "\001\005\024\371\234\160"},
-    {0x04D7, "\001\003\024\371\234\160"},
-    {0x04D8, "\001\005\024\371\246"},
-    {0x04D9, "\001\003\024\371\246"},
-    {0x04DA, "\001\005\024\371\246\141"},
-    {0x04DB, "\001\003\024\371\246\141"},
-    {0x04DC, "\001\005\024\371\152\141"},
-    {0x04DD, "\001\003\024\371\152\141"},
-    {0x04DE, "\001\005\024\371\332\141"},
-    {0x04DF, "\001\003\024\371\332\141"},
-    {0x04E0, "\001\005\024\372\057\371\125"},
-    {0x04E1, "\001\003\024\372\057\371\125"},
+    {0x04D4, "\006\005\024\046\371\235"},
+    {0x04D5, "\006\003\024\046\371\235"},
+    {0x04D6, "\001\005\024\371\235\160"},
+    {0x04D7, "\001\003\024\371\235\160"},
+    {0x04D8, "\001\005\024\371\247"},
+    {0x04D9, "\001\003\024\371\247"},
+    {0x04DA, "\001\005\024\371\247\141"},
+    {0x04DB, "\001\003\024\371\247\141"},
+    {0x04DC, "\001\005\024\371\153\141"},
+    {0x04DD, "\001\003\024\371\153\141"},
+    {0x04DE, "\001\005\024\371\333\141"},
+    {0x04DF, "\001\003\024\371\333\141"},
+    {0x04E0, "\001\005\024\372\057\371\126"},
+    {0x04E1, "\001\003\024\372\057\371\126"},
     {0x04E2, "\001\005\024\072\161"},
     {0x04E3, "\001\003\024\072\161"},
     {0x04E4, "\001\005\024\072\141"},
@@ -3117,120 +3118,120 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x04F5, "\001\003\024\353\141"},
     {0x04F8, "\001\005\024\372\176\141"},
     {0x04F9, "\001\003\024\372\176\141"},
-    {0x0531, "\001\005\076\373\025"},
-    {0x0532, "\001\005\076\373\050"},
-    {0x0533, "\001\005\076\373\212"},
+    {0x0531, "\001\005\076\373\026"},
+    {0x0532, "\001\005\076\373\051"},
+    {0x0533, "\001\005\076\373\213"},
     {0x0534, "\001\005\076\371\013"},
     {0x0535, "\001\005\076\372\072"},
     {0x0536, "\001\005\076\364"},
     {0x0537, "\001\005\076\060"},
-    {0x0538, "\001\005\076\373\245"},
-    {0x0539, "\001\005\076\374\076"},
-    {0x053A, "\001\005\076\373\244"},
+    {0x0538, "\001\005\076\373\246"},
+    {0x0539, "\001\005\076\374\077"},
+    {0x053A, "\001\005\076\373\245"},
     {0x053B, "\001\005\076\072"},
-    {0x053C, "\001\005\076\373\265"},
+    {0x053C, "\001\005\076\373\266"},
     {0x053D, "\001\005\076\372\215"},
-    {0x053E, "\001\005\076\373\140"},
-    {0x053F, "\001\005\076\373\254"},
-    {0x0540, "\001\005\076\373\230"},
-    {0x0541, "\001\005\076\373\137"},
-    {0x0542, "\001\005\076\373\204"},
-    {0x0543, "\001\005\076\374\073"},
-    {0x0544, "\001\005\076\371\302"},
+    {0x053E, "\001\005\076\373\141"},
+    {0x053F, "\001\005\076\373\255"},
+    {0x0540, "\001\005\076\373\231"},
+    {0x0541, "\001\005\076\373\140"},
+    {0x0542, "\001\005\076\373\205"},
+    {0x0543, "\001\005\076\374\074"},
+    {0x0544, "\001\005\076\371\303"},
     {0x0545, "\001\005\076\372\174"},
     {0x0546, "\001\005\076\372\115"},
-    {0x0547, "\001\005\076\371\053"},
+    {0x0547, "\001\005\076\371\054"},
     {0x0548, "\001\005\076\373\002"},
     {0x0549, "\001\005\076\371\020"},
-    {0x054A, "\001\005\076\371\115"},
-    {0x054B, "\001\005\076\373\135"},
+    {0x054A, "\001\005\076\371\116"},
+    {0x054B, "\001\005\076\373\136"},
     {0x054C, "\001\005\076\345"},
-    {0x054D, "\001\005\076\371\317"},
+    {0x054D, "\001\005\076\371\320"},
     {0x054E, "\001\005\076\372\377"},
-    {0x054F, "\001\005\076\374\102"},
-    {0x0550, "\001\005\076\371\314"},
+    {0x054F, "\001\005\076\374\103"},
+    {0x0550, "\001\005\076\371\315"},
     {0x0551, "\001\005\076\372\222"},
     {0x0552, "\001\005\076\373\007"},
-    {0x0553, "\001\005\076\373\355"},
-    {0x0554, "\001\005\076\371\235"},
-    {0x0555, "\001\005\076\373\333"},
-    {0x0556, "\001\005\076\373\157"},
-    {0x0559, "\001\157\076\371\270\042"},
-    {0x055A, "\371\215\076"},
-    {0x055B, "\134\372\230\371\335"},
-    {0x055C, "\027\371\131\371\335"},
+    {0x0553, "\001\005\076\373\356"},
+    {0x0554, "\001\005\076\371\236"},
+    {0x0555, "\001\005\076\373\334"},
+    {0x0556, "\001\005\076\373\160"},
+    {0x0559, "\001\157\076\371\271\042"},
+    {0x055A, "\371\216\076"},
+    {0x055B, "\134\372\230\371\336"},
+    {0x055C, "\027\371\132\371\336"},
     {0x055D, "\331\076"},
-    {0x055E, "\027\371\224\371\335"},
-    {0x055F, "\015\375\103\371\335"},
-    {0x0561, "\001\003\076\373\025"},
-    {0x0562, "\001\003\076\373\050"},
-    {0x0563, "\001\003\076\373\212"},
+    {0x055E, "\027\371\225\371\336"},
+    {0x055F, "\015\375\104\371\336"},
+    {0x0561, "\001\003\076\373\026"},
+    {0x0562, "\001\003\076\373\051"},
+    {0x0563, "\001\003\076\373\213"},
     {0x0564, "\001\003\076\371\013"},
     {0x0565, "\001\003\076\372\072"},
     {0x0566, "\001\003\076\364"},
     {0x0567, "\001\003\076\060"},
-    {0x0568, "\001\003\076\373\245"},
-    {0x0569, "\001\003\076\374\076"},
-    {0x056A, "\001\003\076\373\244"},
+    {0x0568, "\001\003\076\373\246"},
+    {0x0569, "\001\003\076\374\077"},
+    {0x056A, "\001\003\076\373\245"},
     {0x056B, "\001\003\076\072"},
-    {0x056C, "\001\003\076\373\265"},
+    {0x056C, "\001\003\076\373\266"},
     {0x056D, "\001\003\076\372\215"},
-    {0x056E, "\001\003\076\373\140"},
-    {0x056F, "\001\003\076\373\254"},
-    {0x0570, "\001\003\076\373\230"},
-    {0x0571, "\001\003\076\373\137"},
-    {0x0572, "\001\003\076\373\204"},
-    {0x0573, "\001\003\076\374\073"},
-    {0x0574, "\001\003\076\371\302"},
+    {0x056E, "\001\003\076\373\141"},
+    {0x056F, "\001\003\076\373\255"},
+    {0x0570, "\001\003\076\373\231"},
+    {0x0571, "\001\003\076\373\140"},
+    {0x0572, "\001\003\076\373\205"},
+    {0x0573, "\001\003\076\374\074"},
+    {0x0574, "\001\003\076\371\303"},
     {0x0575, "\001\003\076\372\174"},
     {0x0576, "\001\003\076\372\115"},
-    {0x0577, "\001\003\076\371\053"},
+    {0x0577, "\001\003\076\371\054"},
     {0x0578, "\001\003\076\373\002"},
     {0x0579, "\001\003\076\371\020"},
-    {0x057A, "\001\003\076\371\115"},
-    {0x057B, "\001\003\076\373\135"},
+    {0x057A, "\001\003\076\371\116"},
+    {0x057B, "\001\003\076\373\136"},
     {0x057C, "\001\003\076\345"},
-    {0x057D, "\001\003\076\371\317"},
+    {0x057D, "\001\003\076\371\320"},
     {0x057E, "\001\003\076\372\377"},
-    {0x057F, "\001\003\076\374\102"},
-    {0x0580, "\001\003\076\371\314"},
+    {0x057F, "\001\003\076\374\103"},
+    {0x0580, "\001\003\076\371\315"},
     {0x0581, "\001\003\076\372\222"},
     {0x0582, "\001\003\076\373\007"},
-    {0x0583, "\001\003\076\373\355"},
-    {0x0584, "\001\003\076\371\235"},
-    {0x0585, "\001\003\076\373\333"},
-    {0x0586, "\001\003\076\373\157"},
+    {0x0583, "\001\003\076\373\356"},
+    {0x0584, "\001\003\076\371\236"},
+    {0x0585, "\001\003\076\373\334"},
+    {0x0586, "\001\003\076\373\160"},
     {0x0587, "\006\003\076\372\072\373\007"},
-    {0x0589, "\027\371\335"},
-    {0x05B0, "\027\343\375\030"},
-    {0x05B1, "\027\343\372\261\374\041"},
+    {0x0589, "\027\371\336"},
+    {0x05B0, "\027\343\375\031"},
+    {0x05B1, "\027\343\372\261\374\042"},
     {0x05B2, "\027\343\372\261\372\122"},
     {0x05B3, "\027\343\372\261\372\333"},
-    {0x05B4, "\027\343\375\303"},
-    {0x05B5, "\027\343\377\230"},
-    {0x05B6, "\027\343\374\041"},
+    {0x05B4, "\027\343\375\304"},
+    {0x05B5, "\027\343\377\231"},
+    {0x05B6, "\027\343\374\042"},
     {0x05B7, "\027\343\372\122"},
     {0x05B8, "\027\343\372\333"},
-    {0x05B9, "\027\343\373\225"},
-    {0x05BB, "\027\343\376\032"},
+    {0x05B9, "\027\343\373\226"},
+    {0x05BB, "\027\343\376\033"},
     {0x05BC, "\027\343\276\114\372\307"},
-    {0x05BD, "\027\343\376\117"},
-    {0x05BE, "\371\310\110\376\103"},
+    {0x05BD, "\027\343\376\120"},
+    {0x05BE, "\371\311\110\376\104"},
     {0x05BF, "\027\343\372\143"},
-    {0x05C0, "\371\310\110\376\274"},
-    {0x05C1, "\027\343\371\073"},
+    {0x05C0, "\371\311\110\376\275"},
+    {0x05C1, "\027\343\371\074"},
     {0x05C2, "\027\343\372\353"},
-    {0x05C3, "\371\310\110\377\107\376\276"},
-    {0x05D0, "\001\110\371\261"},
+    {0x05C3, "\371\311\110\377\110\376\277"},
+    {0x05D0, "\001\110\371\262"},
     {0x05D1, "\001\110\372\044"},
-    {0x05D2, "\001\110\373\217"},
+    {0x05D2, "\001\110\373\220"},
     {0x05D3, "\001\110\372\052"},
-    {0x05D4, "\001\110\371\103"},
-    {0x05D5, "\001\110\372\027"},
-    {0x05D6, "\001\110\374\144"},
-    {0x05D7, "\001\110\375\301"},
-    {0x05D8, "\001\110\374\074"},
-    {0x05D9, "\001\110\371\331"},
+    {0x05D4, "\001\110\371\104"},
+    {0x05D5, "\001\110\372\030"},
+    {0x05D6, "\001\110\374\145"},
+    {0x05D7, "\001\110\375\302"},
+    {0x05D8, "\001\110\374\075"},
+    {0x05D9, "\001\110\371\332"},
     {0x05DA, "\001\110\205\016"},
     {0x05DB, "\001\110\205"},
     {0x05DC, "\001\110\372\100"},
@@ -3238,28 +3239,28 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x05DE, "\001\110\372\107"},
     {0x05DF, "\001\110\372\320\016"},
     {0x05E0, "\001\110\372\320"},
-    {0x05E1, "\001\110\377\045"},
-    {0x05E2, "\001\110\373\041"},
-    {0x05E3, "\001\110\371\115\016"},
-    {0x05E4, "\001\110\371\115"},
+    {0x05E1, "\001\110\377\046"},
+    {0x05E2, "\001\110\373\042"},
+    {0x05E3, "\001\110\371\116\016"},
+    {0x05E4, "\001\110\371\116"},
     {0x05E5, "\001\110\372\375\016"},
     {0x05E6, "\001\110\372\375"},
-    {0x05E7, "\001\110\374\004"},
+    {0x05E7, "\001\110\374\005"},
     {0x05E8, "\001\110\372\337"},
-    {0x05E9, "\001\110\371\073"},
+    {0x05E9, "\001\110\371\074"},
     {0x05EA, "\001\110\372\367"},
-    {0x05F0, "\006\110\372\175\051\372\027"},
-    {0x05F1, "\006\110\372\175\372\027\371\331"},
-    {0x05F2, "\006\110\372\175\051\371\331"},
-    {0x05F3, "\371\310\110\375\250"},
-    {0x05F4, "\371\310\110\375\247"},
+    {0x05F0, "\006\110\372\175\051\372\030"},
+    {0x05F1, "\006\110\372\175\372\030\371\332"},
+    {0x05F2, "\006\110\372\175\051\371\332"},
+    {0x05F3, "\371\311\110\375\251"},
+    {0x05F4, "\371\311\110\375\250"},
     {0x060C, "\331\002"},
-    {0x061B, "\372\007\002"},
-    {0x061F, "\027\371\224\002"},
+    {0x061B, "\372\010\002"},
+    {0x061F, "\027\371\225\002"},
     {0x0621, "\001\002\126"},
-    {0x0622, "\001\002\054\371\301\007\025"},
+    {0x0622, "\001\002\054\371\302\007\025"},
     {0x0623, "\001\002\054\126\007\025"},
-    {0x0624, "\001\002\371\034\126\007\025"},
+    {0x0624, "\001\002\371\035\126\007\025"},
     {0x0625, "\001\002\054\126\032"},
     {0x0626, "\001\002\041\126\007\025"},
     {0x0627, "\001\002\054"},
@@ -3270,19 +3271,19 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x062C, "\001\002\066"},
     {0x062D, "\001\002\064"},
     {0x062E, "\001\002\137"},
-    {0x062F, "\001\002\371\133"},
+    {0x062F, "\001\002\371\134"},
     {0x0630, "\001\002\372\054"},
     {0x0631, "\001\002\257"},
-    {0x0632, "\001\002\371\123"},
+    {0x0632, "\001\002\371\124"},
     {0x0633, "\001\002\201"},
     {0x0634, "\001\002\206"},
     {0x0635, "\001\002\263"},
     {0x0636, "\001\002\266"},
     {0x0637, "\001\002\327"},
-    {0x0638, "\001\002\371\211"},
+    {0x0638, "\001\002\371\212"},
     {0x0639, "\001\002\312"},
     {0x063A, "\001\002\350"},
-    {0x0640, "\374\071\002"},
+    {0x0640, "\374\072\002"},
     {0x0641, "\001\002\261"},
     {0x0642, "\001\002\323"},
     {0x0643, "\001\002\205"},
@@ -3290,16 +3291,16 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0645, "\001\002\033"},
     {0x0646, "\001\002\164"},
     {0x0647, "\001\002\171"},
-    {0x0648, "\001\002\371\034"},
+    {0x0648, "\001\002\371\035"},
     {0x0649, "\001\002\054\124"},
     {0x064A, "\001\002\041"},
-    {0x064B, "\371\362\002"},
+    {0x064B, "\371\363\002"},
     {0x064C, "\372\233\002"},
     {0x064D, "\372\300\002"},
-    {0x064E, "\371\361\002"},
-    {0x064F, "\371\346\002"},
-    {0x0650, "\371\371\002"},
-    {0x0651, "\375\024\002"},
+    {0x064E, "\371\362\002"},
+    {0x064F, "\371\347\002"},
+    {0x0650, "\371\372\002"},
+    {0x0651, "\375\025\002"},
     {0x0652, "\372\360\002"},
     {0x0660, "\017\314\311"},
     {0x0661, "\017\314\132"},
@@ -3311,43 +3312,43 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0667, "\017\314\221"},
     {0x0668, "\017\314\204"},
     {0x0669, "\017\314\235"},
-    {0x066A, "\015\335\371\222\002"},
-    {0x066B, "\371\007\375\160\002"},
-    {0x066C, "\371\007\373\276\002"},
+    {0x066A, "\015\335\371\223\002"},
+    {0x066B, "\371\007\375\161\002"},
+    {0x066C, "\371\007\373\277\002"},
     {0x066D, "\303\040\203\365\002"},
     {0x0670, "\001\002\054\007\025"},
     {0x0671, "\001\002\054\373\003"},
-    {0x0672, "\001\002\054\126\373\336\007\025"},
-    {0x0673, "\001\002\054\126\373\336\032"},
-    {0x0674, "\001\002\126\372\034"},
-    {0x0675, "\001\002\054\126\372\034"},
-    {0x0676, "\001\002\371\034\126\372\034"},
-    {0x0677, "\001\002\114\126\372\034"},
-    {0x0678, "\001\002\041\126\372\034"},
-    {0x0679, "\001\002\372\024"},
-    {0x067A, "\001\002\372\025"},
-    {0x067B, "\001\002\371\336"},
+    {0x0672, "\001\002\054\126\373\337\007\025"},
+    {0x0673, "\001\002\054\126\373\337\032"},
+    {0x0674, "\001\002\126\372\035"},
+    {0x0675, "\001\002\054\126\372\035"},
+    {0x0676, "\001\002\371\035\126\372\035"},
+    {0x0677, "\001\002\114\126\372\035"},
+    {0x0678, "\001\002\041\126\372\035"},
+    {0x0679, "\001\002\372\025"},
+    {0x067A, "\001\002\372\026"},
+    {0x067B, "\001\002\371\337"},
     {0x067C, "\001\002\174\231"},
     {0x067D, "\001\002\174\131\220\007\025\245\013\035\061"},
-    {0x067E, "\001\002\372\004"},
-    {0x067F, "\001\002\372\020"},
-    {0x0680, "\001\002\371\337"},
+    {0x067E, "\001\002\372\005"},
+    {0x067F, "\001\002\372\021"},
+    {0x0680, "\001\002\371\340"},
     {0x0681, "\001\002\064\126\007\025"},
-    {0x0682, "\001\002\064\154\220\374\277\373\001\371\216\373\126"},
-    {0x0683, "\001\002\371\377"},
-    {0x0684, "\001\002\371\355"},
+    {0x0682, "\001\002\064\154\220\374\300\373\001\371\217\373\127"},
+    {0x0683, "\001\002\372\001"},
+    {0x0684, "\001\002\371\356"},
     {0x0685, "\001\002\064\131\220\007\025"},
-    {0x0686, "\001\002\372\017"},
-    {0x0687, "\001\002\372\016"},
+    {0x0686, "\001\002\372\020"},
+    {0x0687, "\001\002\372\017"},
     {0x0688, "\001\002\372\235"},
-    {0x0689, "\001\002\371\133\231"},
-    {0x068A, "\001\002\371\133\027\032"},
-    {0x068B, "\001\002\371\133\027\032\011\144\377\142"},
+    {0x0689, "\001\002\371\134\231"},
+    {0x068A, "\001\002\371\134\027\032"},
+    {0x068B, "\001\002\371\134\027\032\011\144\377\143"},
     {0x068C, "\001\002\372\232"},
     {0x068D, "\001\002\372\234"},
     {0x068E, "\001\002\372\245"},
-    {0x068F, "\001\002\371\133\131\220\007\025\245\013\035\061"},
-    {0x0690, "\001\002\371\133\200\220\007\025"},
+    {0x068F, "\001\002\371\134\131\220\007\025\245\013\035\061"},
+    {0x0690, "\001\002\371\134\200\220\007\025"},
     {0x0691, "\001\002\372\351"},
     {0x0692, "\001\002\257\144\324"},
     {0x0693, "\001\002\257\231"},
@@ -3358,57 +3359,57 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0698, "\001\002\372\272"},
     {0x0699, "\001\002\257\200\220\007\025"},
     {0x069A, "\001\002\201\027\032\011\027\007\025"},
-    {0x069B, "\001\002\201\131\220\371\250"},
-    {0x069C, "\001\002\201\131\220\371\250\011\131\220\007\025"},
-    {0x069D, "\001\002\263\154\220\371\250"},
+    {0x069B, "\001\002\201\131\220\371\251"},
+    {0x069C, "\001\002\201\131\220\371\251\011\131\220\007\025"},
+    {0x069D, "\001\002\263\154\220\371\251"},
     {0x069E, "\001\002\263\131\220\007\025"},
     {0x069F, "\001\002\327\131\220\007\025"},
     {0x06A0, "\001\002\312\131\220\007\025"},
     {0x06A1, "\001\002\261\232\027"},
-    {0x06A2, "\001\002\261\027\375\135"},
+    {0x06A2, "\001\002\261\027\375\136"},
     {0x06A3, "\001\002\261\027\032"},
-    {0x06A4, "\001\002\372\026"},
-    {0x06A5, "\001\002\261\131\220\371\250"},
-    {0x06A6, "\001\002\372\005"},
+    {0x06A4, "\001\002\372\027"},
+    {0x06A5, "\001\002\261\131\220\371\251"},
+    {0x06A6, "\001\002\372\006"},
     {0x06A7, "\001\002\323\027\007\025"},
     {0x06A8, "\001\002\323\131\220\007\025"},
-    {0x06A9, "\001\002\371\372"},
-    {0x06AA, "\001\002\205\377\325"},
+    {0x06A9, "\001\002\371\373"},
+    {0x06AA, "\001\002\205\377\326"},
     {0x06AB, "\001\002\205\231"},
     {0x06AC, "\001\002\205\027\007\025"},
-    {0x06AD, "\001\002\371\303"},
-    {0x06AE, "\001\002\205\131\220\371\250"},
-    {0x06AF, "\001\002\371\144"},
-    {0x06B0, "\001\002\371\144\231"},
-    {0x06B1, "\001\002\371\374"},
-    {0x06B2, "\001\002\371\144\154\220\371\250"},
-    {0x06B3, "\001\002\371\364"},
-    {0x06B4, "\001\002\371\144\131\220\007\025"},
+    {0x06AD, "\001\002\371\304"},
+    {0x06AE, "\001\002\205\131\220\371\251"},
+    {0x06AF, "\001\002\371\145"},
+    {0x06B0, "\001\002\371\145\231"},
+    {0x06B1, "\001\002\371\375"},
+    {0x06B2, "\001\002\371\145\154\220\371\251"},
+    {0x06B3, "\001\002\371\365"},
+    {0x06B4, "\001\002\371\145\131\220\007\025"},
     {0x06B5, "\001\002\155\144\324"},
     {0x06B6, "\001\002\155\027\007\025"},
     {0x06B7, "\001\002\155\131\220\007\025"},
     {0x06BA, "\001\002\164\372\256"},
-    {0x06BB, "\001\002\372\013"},
+    {0x06BB, "\001\002\372\014"},
     {0x06BC, "\001\002\164\231"},
     {0x06BD, "\001\002\164\131\220\007\025"},
-    {0x06BE, "\001\002\171\371\354"},
+    {0x06BE, "\001\002\171\371\355"},
     {0x06C0, "\001\002\171\041\007\025"},
-    {0x06C1, "\001\002\171\371\231"},
-    {0x06C2, "\001\002\171\371\231\126\007\025"},
-    {0x06C3, "\372\105\371\231"},
-    {0x06C4, "\001\002\371\034\231"},
-    {0x06C5, "\001\002\371\035\371\040"},
-    {0x06C6, "\001\002\371\040"},
+    {0x06C1, "\001\002\171\371\232"},
+    {0x06C2, "\001\002\171\371\232\126\007\025"},
+    {0x06C3, "\372\105\371\232"},
+    {0x06C4, "\001\002\371\035\231"},
+    {0x06C5, "\001\002\371\036\371\041"},
+    {0x06C6, "\001\002\371\041"},
     {0x06C7, "\001\002\107"},
-    {0x06C8, "\001\002\371\050"},
-    {0x06C9, "\001\002\371\035\371\050"},
-    {0x06CA, "\001\002\371\034\154\220\007\025"},
+    {0x06C8, "\001\002\371\051"},
+    {0x06C9, "\001\002\371\036\371\051"},
+    {0x06CA, "\001\002\371\035\154\220\007\025"},
     {0x06CB, "\001\002\372\172"},
-    {0x06CC, "\001\002\371\272\041"},
+    {0x06CC, "\001\002\371\273\041"},
     {0x06CD, "\001\002\041\372\142"},
     {0x06CE, "\001\002\041\144\324"},
     {0x06D0, "\001\002\060"},
-    {0x06D1, "\001\002\041\131\220\371\250"},
+    {0x06D1, "\001\002\041\131\220\371\251"},
     {0x06D2, "\001\002\041\175"},
     {0x06D3, "\001\002\041\175\126\007\025"},
     {0x06D4, "\027\002"},
@@ -3420,36 +3421,36 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x06DA, "\001\002\003\066\007\025"},
     {0x06DB, "\131\220\007\025\002"},
     {0x06DC, "\001\002\003\201\007\025"},
-    {0x06DD, "\070\012\374\346\002"},
-    {0x06DE, "\371\141\012\377\023\375\174\375\304\002"},
-    {0x06DF, "\311\374\321\007\025\002"},
-    {0x06E0, "\311\376\377\007\025\002"},
-    {0x06E1, "\376\271\375\274\012\137\232\027\007\025\002"},
+    {0x06DD, "\070\012\374\347\002"},
+    {0x06DE, "\371\142\012\377\024\375\175\375\305\002"},
+    {0x06DF, "\311\374\322\007\025\002"},
+    {0x06E0, "\311\377\001\007\025\002"},
+    {0x06E1, "\376\272\375\275\012\137\232\027\007\025\002"},
     {0x06E2, "\001\002\003\033\007\025\020"},
     {0x06E3, "\001\002\003\201\032"},
-    {0x06E4, "\001\002\003\371\301\007\025"},
-    {0x06E5, "\001\002\003\371\034"},
+    {0x06E4, "\001\002\003\371\302\007\025"},
+    {0x06E5, "\001\002\003\371\035"},
     {0x06E6, "\001\002\003\041"},
     {0x06E7, "\001\002\003\041\007\025"},
     {0x06E8, "\001\002\003\164\007\025"},
-    {0x06E9, "\376\333\012\377\040\002"},
+    {0x06E9, "\376\334\012\377\041\002"},
     {0x06EA, "\027\371\012\032\002"},
     {0x06EB, "\027\371\012\007\025\002"},
-    {0x06EC, "\027\373\370\032\002"},
+    {0x06EC, "\027\373\371\032\002"},
     {0x06ED, "\001\002\003\033\032"},
-    {0x06F0, "\017\314\371\072\311"},
-    {0x06F1, "\017\314\371\072\132"},
-    {0x06F2, "\017\314\371\072\154"},
-    {0x06F3, "\017\314\371\072\131"},
-    {0x06F4, "\017\314\371\072\200"},
-    {0x06F5, "\017\314\371\072\203"},
-    {0x06F6, "\017\314\371\072\233"},
-    {0x06F7, "\017\314\371\072\221"},
-    {0x06F8, "\017\314\371\072\204"},
-    {0x06F9, "\017\314\371\072\235"},
-    {0x0901, "\015\057\371\263"},
-    {0x0902, "\015\057\374\312"},
-    {0x0903, "\015\057\371\207"},
+    {0x06F0, "\017\314\371\073\311"},
+    {0x06F1, "\017\314\371\073\132"},
+    {0x06F2, "\017\314\371\073\154"},
+    {0x06F3, "\017\314\371\073\131"},
+    {0x06F4, "\017\314\371\073\200"},
+    {0x06F5, "\017\314\371\073\203"},
+    {0x06F6, "\017\314\371\073\233"},
+    {0x06F7, "\017\314\371\073\221"},
+    {0x06F8, "\017\314\371\073\204"},
+    {0x06F9, "\017\314\371\073\235"},
+    {0x0901, "\015\057\371\264"},
+    {0x0902, "\015\057\374\313"},
+    {0x0903, "\015\057\371\210"},
     {0x0905, "\001\057\046"},
     {0x0906, "\001\057\313"},
     {0x0907, "\001\057\072"},
@@ -3458,52 +3459,52 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x090A, "\001\057\322"},
     {0x090B, "\001\057\150\176"},
     {0x090C, "\001\057\167\176"},
-    {0x090D, "\001\057\060\371\130"},
-    {0x090E, "\001\057\060\371\127"},
+    {0x090D, "\001\057\060\371\131"},
+    {0x090E, "\001\057\060\371\130"},
     {0x090F, "\001\057\060"},
     {0x0910, "\001\057\250"},
-    {0x0911, "\001\057\050\371\130"},
-    {0x0912, "\001\057\050\371\127"},
+    {0x0911, "\001\057\050\371\131"},
+    {0x0912, "\001\057\050\371\130"},
     {0x0913, "\001\057\050"},
     {0x0914, "\001\057\274"},
     {0x0915, "\001\057\244"},
-    {0x0916, "\001\057\371\061"},
-    {0x0917, "\001\057\371\056"},
-    {0x0918, "\001\057\371\145"},
-    {0x0919, "\001\057\371\113"},
+    {0x0916, "\001\057\371\062"},
+    {0x0917, "\001\057\371\057"},
+    {0x0918, "\001\057\371\146"},
+    {0x0919, "\001\057\371\114"},
     {0x091A, "\001\057\371\020"},
-    {0x091B, "\001\057\371\201"},
-    {0x091C, "\001\057\371\077"},
-    {0x091D, "\001\057\371\226"},
-    {0x091E, "\001\057\371\124"},
-    {0x091F, "\001\057\371\117"},
-    {0x0920, "\001\057\371\205"},
-    {0x0921, "\001\057\371\134"},
-    {0x0922, "\001\057\371\135"},
-    {0x0923, "\001\057\371\114"},
+    {0x091B, "\001\057\371\202"},
+    {0x091C, "\001\057\371\100"},
+    {0x091D, "\001\057\371\227"},
+    {0x091E, "\001\057\371\125"},
+    {0x091F, "\001\057\371\120"},
+    {0x0920, "\001\057\371\206"},
+    {0x0921, "\001\057\371\135"},
+    {0x0922, "\001\057\371\136"},
+    {0x0923, "\001\057\371\115"},
     {0x0924, "\001\057\371\017"},
-    {0x0925, "\001\057\371\202"},
+    {0x0925, "\001\057\371\203"},
     {0x0926, "\001\057\371\013"},
-    {0x0927, "\001\057\371\137"},
+    {0x0927, "\001\057\371\140"},
     {0x0928, "\001\057\371\002"},
-    {0x0929, "\001\057\373\321"},
+    {0x0929, "\001\057\373\322"},
     {0x092A, "\001\057\371\015"},
-    {0x092B, "\001\057\371\166"},
-    {0x092C, "\001\057\371\052"},
-    {0x092D, "\001\057\371\126"},
+    {0x092B, "\001\057\371\167"},
+    {0x092C, "\001\057\371\053"},
+    {0x092D, "\001\057\371\127"},
     {0x092E, "\001\057\360"},
     {0x092F, "\001\057\332"},
     {0x0930, "\001\057\345"},
-    {0x0931, "\001\057\371\172"},
+    {0x0931, "\001\057\371\173"},
     {0x0932, "\001\057\022"},
-    {0x0933, "\001\057\371\156"},
+    {0x0933, "\001\057\371\157"},
     {0x0934, "\001\057\372\305"},
-    {0x0935, "\001\057\371\206"},
-    {0x0936, "\001\057\371\053"},
-    {0x0937, "\001\057\371\175"},
+    {0x0935, "\001\057\371\207"},
+    {0x0936, "\001\057\371\054"},
+    {0x0937, "\001\057\371\176"},
     {0x0938, "\001\057\364"},
     {0x0939, "\001\057\333"},
-    {0x093C, "\015\057\371\376"},
+    {0x093C, "\015\057\371\377"},
     {0x093D, "\015\057\372\207"},
     {0x093E, "\044\023\057\313"},
     {0x093F, "\044\023\057\072"},
@@ -3511,35 +3512,35 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0941, "\044\023\057\114"},
     {0x0942, "\044\023\057\322"},
     {0x0943, "\044\023\057\150\176"},
-    {0x0944, "\044\023\057\371\033\176"},
-    {0x0945, "\044\023\057\060\371\130"},
-    {0x0946, "\044\023\057\060\371\127"},
+    {0x0944, "\044\023\057\371\034\176"},
+    {0x0945, "\044\023\057\060\371\131"},
+    {0x0946, "\044\023\057\060\371\130"},
     {0x0947, "\044\023\057\060"},
     {0x0948, "\044\023\057\250"},
-    {0x0949, "\044\023\057\050\371\130"},
-    {0x094A, "\044\023\057\050\371\127"},
+    {0x0949, "\044\023\057\050\371\131"},
+    {0x094A, "\044\023\057\050\371\130"},
     {0x094B, "\044\023\057\050"},
     {0x094C, "\044\023\057\274"},
-    {0x094D, "\015\057\371\120"},
-    {0x0950, "\373\334\057"},
-    {0x0951, "\134\372\230\057\377\234"},
-    {0x0952, "\134\372\230\057\374\315"},
+    {0x094D, "\015\057\371\121"},
+    {0x0950, "\373\335\057"},
+    {0x0951, "\134\372\230\057\377\235"},
+    {0x0952, "\134\372\230\057\374\316"},
     {0x0953, "\026\151\057"},
     {0x0954, "\026\102\057"},
-    {0x0958, "\001\057\376\363"},
-    {0x0959, "\001\057\373\253"},
-    {0x095A, "\001\057\373\205"},
+    {0x0958, "\001\057\376\364"},
+    {0x0959, "\001\057\373\254"},
+    {0x095A, "\001\057\373\206"},
     {0x095B, "\001\057\372\177"},
-    {0x095C, "\001\057\375\123"},
+    {0x095C, "\001\057\375\124"},
     {0x095D, "\001\057\372\341"},
     {0x095E, "\001\057\372\062"},
     {0x095F, "\001\057\373\011"},
-    {0x0960, "\001\057\371\033\176"},
-    {0x0961, "\001\057\371\155\176"},
+    {0x0960, "\001\057\371\034\176"},
+    {0x0961, "\001\057\371\156\176"},
     {0x0962, "\044\023\057\167\176"},
-    {0x0963, "\044\023\057\371\155\176"},
-    {0x0964, "\373\116\057"},
-    {0x0965, "\051\373\116\057"},
+    {0x0963, "\044\023\057\371\156\176"},
+    {0x0964, "\373\117\057"},
+    {0x0965, "\051\373\117\057"},
     {0x0966, "\017\057\311"},
     {0x0967, "\017\057\132"},
     {0x0968, "\017\057\154"},
@@ -3550,10 +3551,10 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x096D, "\017\057\221"},
     {0x096E, "\017\057\204"},
     {0x096F, "\017\057\235"},
-    {0x0970, "\015\057\375\102"},
-    {0x0981, "\015\071\371\263"},
-    {0x0982, "\015\071\371\214"},
-    {0x0983, "\015\071\371\207"},
+    {0x0970, "\015\057\375\103"},
+    {0x0981, "\015\071\371\264"},
+    {0x0982, "\015\071\371\215"},
+    {0x0983, "\015\071\371\210"},
     {0x0985, "\001\071\046"},
     {0x0986, "\001\071\313"},
     {0x0987, "\001\071\072"},
@@ -3567,58 +3568,58 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0993, "\001\071\050"},
     {0x0994, "\001\071\274"},
     {0x0995, "\001\071\244"},
-    {0x0996, "\001\071\371\061"},
-    {0x0997, "\001\071\371\056"},
-    {0x0998, "\001\071\371\145"},
-    {0x0999, "\001\071\371\113"},
+    {0x0996, "\001\071\371\062"},
+    {0x0997, "\001\071\371\057"},
+    {0x0998, "\001\071\371\146"},
+    {0x0999, "\001\071\371\114"},
     {0x099A, "\001\071\371\020"},
-    {0x099B, "\001\071\371\201"},
-    {0x099C, "\001\071\371\077"},
-    {0x099D, "\001\071\371\226"},
-    {0x099E, "\001\071\371\124"},
-    {0x099F, "\001\071\371\117"},
-    {0x09A0, "\001\071\371\205"},
-    {0x09A1, "\001\071\371\134"},
-    {0x09A2, "\001\071\371\135"},
-    {0x09A3, "\001\071\371\114"},
+    {0x099B, "\001\071\371\202"},
+    {0x099C, "\001\071\371\100"},
+    {0x099D, "\001\071\371\227"},
+    {0x099E, "\001\071\371\125"},
+    {0x099F, "\001\071\371\120"},
+    {0x09A0, "\001\071\371\206"},
+    {0x09A1, "\001\071\371\135"},
+    {0x09A2, "\001\071\371\136"},
+    {0x09A3, "\001\071\371\115"},
     {0x09A4, "\001\071\371\017"},
-    {0x09A5, "\001\071\371\202"},
+    {0x09A5, "\001\071\371\203"},
     {0x09A6, "\001\071\371\013"},
-    {0x09A7, "\001\071\371\137"},
+    {0x09A7, "\001\071\371\140"},
     {0x09A8, "\001\071\371\002"},
     {0x09AA, "\001\071\371\015"},
-    {0x09AB, "\001\071\371\166"},
-    {0x09AC, "\001\071\371\052"},
-    {0x09AD, "\001\071\371\126"},
+    {0x09AB, "\001\071\371\167"},
+    {0x09AC, "\001\071\371\053"},
+    {0x09AD, "\001\071\371\127"},
     {0x09AE, "\001\071\360"},
     {0x09AF, "\001\071\332"},
     {0x09B0, "\001\071\345"},
     {0x09B2, "\001\071\022"},
-    {0x09B6, "\001\071\371\053"},
-    {0x09B7, "\001\071\371\175"},
+    {0x09B6, "\001\071\371\054"},
+    {0x09B7, "\001\071\371\176"},
     {0x09B8, "\001\071\364"},
     {0x09B9, "\001\071\333"},
-    {0x09BC, "\015\071\371\376"},
+    {0x09BC, "\015\071\371\377"},
     {0x09BE, "\044\023\071\313"},
     {0x09BF, "\044\023\071\072"},
     {0x09C0, "\044\023\071\317"},
     {0x09C1, "\044\023\071\114"},
     {0x09C2, "\044\023\071\322"},
     {0x09C3, "\044\023\071\150\176"},
-    {0x09C4, "\044\023\071\371\033\176"},
+    {0x09C4, "\044\023\071\371\034\176"},
     {0x09C7, "\044\023\071\060"},
     {0x09C8, "\044\023\071\250"},
     {0x09CB, "\044\023\071\050"},
     {0x09CC, "\044\023\071\274"},
-    {0x09CD, "\015\071\371\120"},
-    {0x09D7, "\134\012\371\107\071\274"},
-    {0x09DC, "\001\071\371\172"},
+    {0x09CD, "\015\071\371\121"},
+    {0x09D7, "\134\012\371\110\071\274"},
+    {0x09DC, "\001\071\371\173"},
     {0x09DD, "\001\071\372\341"},
     {0x09DF, "\001\071\373\011"},
-    {0x09E0, "\001\071\371\033\176"},
-    {0x09E1, "\001\071\371\155\176"},
+    {0x09E0, "\001\071\371\034\176"},
+    {0x09E1, "\001\071\371\156\176"},
     {0x09E2, "\044\023\071\167\176"},
-    {0x09E3, "\044\023\071\371\155\176"},
+    {0x09E3, "\044\023\071\371\156\176"},
     {0x09E6, "\017\071\311"},
     {0x09E7, "\017\071\132"},
     {0x09E8, "\017\071\154"},
@@ -3629,76 +3630,76 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x09ED, "\017\071\221"},
     {0x09EE, "\017\071\204"},
     {0x09EF, "\017\071\235"},
-    {0x09F0, "\001\071\345\130\210\361\376\161"},
+    {0x09F0, "\001\071\345\130\210\361\376\162"},
     {0x09F1, "\001\071\345\130\210\361\271"},
     {0x09F2, "\134\071\372\350"},
     {0x09F3, "\015\071\372\350"},
-    {0x09F4, "\371\305\371\161\071\132"},
-    {0x09F5, "\371\305\371\161\071\154"},
-    {0x09F6, "\371\305\371\161\071\131"},
-    {0x09F7, "\371\305\371\161\071\200"},
-    {0x09F8, "\371\305\371\161\071\373\143\371\036\132"},
-    {0x09F9, "\373\143\371\161\071\371\247"},
-    {0x09FA, "\373\242\071"},
-    {0x0A02, "\015\120\374\364"},
+    {0x09F4, "\371\306\371\162\071\132"},
+    {0x09F5, "\371\306\371\162\071\154"},
+    {0x09F6, "\371\306\371\162\071\131"},
+    {0x09F7, "\371\306\371\162\071\200"},
+    {0x09F8, "\371\306\371\162\071\373\144\371\037\132"},
+    {0x09F9, "\373\144\371\162\071\371\250"},
+    {0x09FA, "\373\243\071"},
+    {0x0A02, "\015\120\374\365"},
     {0x0A05, "\001\120\046"},
     {0x0A06, "\001\120\313"},
     {0x0A07, "\001\120\072"},
     {0x0A08, "\001\120\317"},
     {0x0A09, "\001\120\114"},
     {0x0A0A, "\001\120\322"},
-    {0x0A0F, "\001\120\371\055"},
+    {0x0A0F, "\001\120\371\056"},
     {0x0A10, "\001\120\250"},
-    {0x0A13, "\001\120\371\063"},
+    {0x0A13, "\001\120\371\064"},
     {0x0A14, "\001\120\274"},
     {0x0A15, "\001\120\244"},
-    {0x0A16, "\001\120\371\061"},
-    {0x0A17, "\001\120\371\056"},
-    {0x0A18, "\001\120\371\145"},
-    {0x0A19, "\001\120\371\113"},
+    {0x0A16, "\001\120\371\062"},
+    {0x0A17, "\001\120\371\057"},
+    {0x0A18, "\001\120\371\146"},
+    {0x0A19, "\001\120\371\114"},
     {0x0A1A, "\001\120\371\020"},
-    {0x0A1B, "\001\120\371\201"},
-    {0x0A1C, "\001\120\371\077"},
-    {0x0A1D, "\001\120\377\204"},
-    {0x0A1E, "\001\120\371\124"},
-    {0x0A1F, "\001\120\371\117"},
-    {0x0A20, "\001\120\371\205"},
-    {0x0A21, "\001\120\371\134"},
-    {0x0A22, "\001\120\371\135"},
-    {0x0A23, "\001\120\371\114"},
+    {0x0A1B, "\001\120\371\202"},
+    {0x0A1C, "\001\120\371\100"},
+    {0x0A1D, "\001\120\377\205"},
+    {0x0A1E, "\001\120\371\125"},
+    {0x0A1F, "\001\120\371\120"},
+    {0x0A20, "\001\120\371\206"},
+    {0x0A21, "\001\120\371\135"},
+    {0x0A22, "\001\120\371\136"},
+    {0x0A23, "\001\120\371\115"},
     {0x0A24, "\001\120\371\017"},
-    {0x0A25, "\001\120\371\202"},
+    {0x0A25, "\001\120\371\203"},
     {0x0A26, "\001\120\371\013"},
-    {0x0A27, "\001\120\371\137"},
+    {0x0A27, "\001\120\371\140"},
     {0x0A28, "\001\120\371\002"},
     {0x0A2A, "\001\120\371\015"},
-    {0x0A2B, "\001\120\371\166"},
-    {0x0A2C, "\001\120\371\052"},
-    {0x0A2D, "\001\120\371\126"},
+    {0x0A2B, "\001\120\371\167"},
+    {0x0A2C, "\001\120\371\053"},
+    {0x0A2D, "\001\120\371\127"},
     {0x0A2E, "\001\120\360"},
     {0x0A2F, "\001\120\332"},
     {0x0A30, "\001\120\345"},
     {0x0A32, "\001\120\022"},
-    {0x0A33, "\001\120\371\156"},
-    {0x0A35, "\001\120\371\206"},
-    {0x0A36, "\001\120\371\053"},
+    {0x0A33, "\001\120\371\157"},
+    {0x0A35, "\001\120\371\207"},
+    {0x0A36, "\001\120\371\054"},
     {0x0A38, "\001\120\364"},
     {0x0A39, "\001\120\333"},
-    {0x0A3C, "\015\120\371\376"},
+    {0x0A3C, "\015\120\371\377"},
     {0x0A3E, "\044\023\120\313"},
     {0x0A3F, "\044\023\120\072"},
     {0x0A40, "\044\023\120\317"},
     {0x0A41, "\044\023\120\114"},
     {0x0A42, "\044\023\120\322"},
-    {0x0A47, "\044\023\120\371\055"},
+    {0x0A47, "\044\023\120\371\056"},
     {0x0A48, "\044\023\120\250"},
-    {0x0A4B, "\044\023\120\371\063"},
+    {0x0A4B, "\044\023\120\371\064"},
     {0x0A4C, "\044\023\120\274"},
-    {0x0A4D, "\015\120\371\120"},
-    {0x0A59, "\001\120\373\253"},
-    {0x0A5A, "\001\120\373\205"},
+    {0x0A4D, "\015\120\371\121"},
+    {0x0A59, "\001\120\373\254"},
+    {0x0A5A, "\001\120\373\206"},
     {0x0A5B, "\001\120\372\177"},
-    {0x0A5C, "\001\120\371\172"},
+    {0x0A5C, "\001\120\371\173"},
     {0x0A5E, "\001\120\372\062"},
     {0x0A66, "\017\120\311"},
     {0x0A67, "\017\120\132"},
@@ -3710,14 +3711,14 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0A6D, "\017\120\221"},
     {0x0A6E, "\017\120\204"},
     {0x0A6F, "\017\120\235"},
-    {0x0A70, "\377\203\120"},
-    {0x0A71, "\374\271\120"},
-    {0x0A72, "\375\352\120"},
-    {0x0A73, "\377\241\120"},
-    {0x0A74, "\372\250\376\237\120"},
-    {0x0A81, "\015\112\371\263"},
-    {0x0A82, "\015\112\371\214"},
-    {0x0A83, "\015\112\371\207"},
+    {0x0A70, "\377\204\120"},
+    {0x0A71, "\374\272\120"},
+    {0x0A72, "\375\353\120"},
+    {0x0A73, "\377\242\120"},
+    {0x0A74, "\372\250\376\240\120"},
+    {0x0A81, "\015\112\371\264"},
+    {0x0A82, "\015\112\371\215"},
+    {0x0A83, "\015\112\371\210"},
     {0x0A85, "\001\112\046"},
     {0x0A86, "\001\112\313"},
     {0x0A87, "\001\112\072"},
@@ -3725,47 +3726,47 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0A89, "\001\112\114"},
     {0x0A8A, "\001\112\322"},
     {0x0A8B, "\001\112\150\176"},
-    {0x0A8D, "\044\112\060\371\130"},
+    {0x0A8D, "\044\112\060\371\131"},
     {0x0A8F, "\001\112\060"},
     {0x0A90, "\001\112\250"},
-    {0x0A91, "\044\112\050\371\130"},
+    {0x0A91, "\044\112\050\371\131"},
     {0x0A93, "\001\112\050"},
     {0x0A94, "\001\112\274"},
     {0x0A95, "\001\112\244"},
-    {0x0A96, "\001\112\371\061"},
-    {0x0A97, "\001\112\371\056"},
-    {0x0A98, "\001\112\371\145"},
-    {0x0A99, "\001\112\371\113"},
+    {0x0A96, "\001\112\371\062"},
+    {0x0A97, "\001\112\371\057"},
+    {0x0A98, "\001\112\371\146"},
+    {0x0A99, "\001\112\371\114"},
     {0x0A9A, "\001\112\371\020"},
-    {0x0A9B, "\001\112\371\201"},
-    {0x0A9C, "\001\112\371\077"},
-    {0x0A9D, "\001\112\371\226"},
-    {0x0A9E, "\001\112\371\124"},
-    {0x0A9F, "\001\112\371\117"},
-    {0x0AA0, "\001\112\371\205"},
-    {0x0AA1, "\001\112\371\134"},
-    {0x0AA2, "\001\112\371\135"},
-    {0x0AA3, "\001\112\371\114"},
+    {0x0A9B, "\001\112\371\202"},
+    {0x0A9C, "\001\112\371\100"},
+    {0x0A9D, "\001\112\371\227"},
+    {0x0A9E, "\001\112\371\125"},
+    {0x0A9F, "\001\112\371\120"},
+    {0x0AA0, "\001\112\371\206"},
+    {0x0AA1, "\001\112\371\135"},
+    {0x0AA2, "\001\112\371\136"},
+    {0x0AA3, "\001\112\371\115"},
     {0x0AA4, "\001\112\371\017"},
-    {0x0AA5, "\001\112\371\202"},
+    {0x0AA5, "\001\112\371\203"},
     {0x0AA6, "\001\112\371\013"},
-    {0x0AA7, "\001\112\371\137"},
+    {0x0AA7, "\001\112\371\140"},
     {0x0AA8, "\001\112\371\002"},
     {0x0AAA, "\001\112\371\015"},
-    {0x0AAB, "\001\112\371\166"},
-    {0x0AAC, "\001\112\371\052"},
-    {0x0AAD, "\001\112\371\126"},
+    {0x0AAB, "\001\112\371\167"},
+    {0x0AAC, "\001\112\371\053"},
+    {0x0AAD, "\001\112\371\127"},
     {0x0AAE, "\001\112\360"},
     {0x0AAF, "\001\112\332"},
     {0x0AB0, "\001\112\345"},
     {0x0AB2, "\001\112\022"},
-    {0x0AB3, "\001\112\371\156"},
-    {0x0AB5, "\001\112\371\206"},
-    {0x0AB6, "\001\112\371\053"},
-    {0x0AB7, "\001\112\371\175"},
+    {0x0AB3, "\001\112\371\157"},
+    {0x0AB5, "\001\112\371\207"},
+    {0x0AB6, "\001\112\371\054"},
+    {0x0AB7, "\001\112\371\176"},
     {0x0AB8, "\001\112\364"},
     {0x0AB9, "\001\112\333"},
-    {0x0ABC, "\015\112\371\376"},
+    {0x0ABC, "\015\112\371\377"},
     {0x0ABD, "\015\112\372\207"},
     {0x0ABE, "\044\023\112\313"},
     {0x0ABF, "\044\023\112\072"},
@@ -3773,17 +3774,17 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0AC1, "\044\023\112\114"},
     {0x0AC2, "\044\023\112\322"},
     {0x0AC3, "\044\023\112\150\176"},
-    {0x0AC4, "\044\023\112\371\033\176"},
-    {0x0AC5, "\044\023\112\060\371\130"},
+    {0x0AC4, "\044\023\112\371\034\176"},
+    {0x0AC5, "\044\023\112\060\371\131"},
     {0x0AC7, "\044\023\112\060"},
     {0x0AC8, "\044\023\112\250"},
-    {0x0AC9, "\044\023\112\050\371\130"},
+    {0x0AC9, "\044\023\112\050\371\131"},
     {0x0ACB, "\044\023\112\050"},
     {0x0ACC, "\044\023\112\274"},
-    {0x0ACD, "\015\112\371\120"},
-    {0x0AD0, "\373\334\112"},
-    {0x0AE0, "\001\112\371\033\176"},
-    {0x0AE6, "\375\033\112\311"},
+    {0x0ACD, "\015\112\371\121"},
+    {0x0AD0, "\373\335\112"},
+    {0x0AE0, "\001\112\371\034\176"},
+    {0x0AE6, "\375\034\112\311"},
     {0x0AE7, "\017\112\132"},
     {0x0AE8, "\017\112\154"},
     {0x0AE9, "\017\112\131"},
@@ -3793,9 +3794,9 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0AED, "\017\112\221"},
     {0x0AEE, "\017\112\204"},
     {0x0AEF, "\017\112\235"},
-    {0x0B01, "\015\111\371\263"},
-    {0x0B02, "\015\111\371\214"},
-    {0x0B03, "\015\111\371\207"},
+    {0x0B01, "\015\111\371\264"},
+    {0x0B02, "\015\111\371\215"},
+    {0x0B03, "\015\111\371\210"},
     {0x0B05, "\001\111\046"},
     {0x0B06, "\001\111\313"},
     {0x0B07, "\001\111\072"},
@@ -3809,39 +3810,39 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0B13, "\001\111\050"},
     {0x0B14, "\001\111\274"},
     {0x0B15, "\001\111\244"},
-    {0x0B16, "\001\111\371\061"},
-    {0x0B17, "\001\111\371\056"},
-    {0x0B18, "\001\111\371\145"},
-    {0x0B19, "\001\111\371\113"},
+    {0x0B16, "\001\111\371\062"},
+    {0x0B17, "\001\111\371\057"},
+    {0x0B18, "\001\111\371\146"},
+    {0x0B19, "\001\111\371\114"},
     {0x0B1A, "\001\111\371\020"},
-    {0x0B1B, "\001\111\371\201"},
-    {0x0B1C, "\001\111\371\077"},
-    {0x0B1D, "\001\111\371\226"},
-    {0x0B1E, "\001\111\371\124"},
-    {0x0B1F, "\001\111\371\117"},
-    {0x0B20, "\001\111\371\205"},
-    {0x0B21, "\001\111\371\134"},
-    {0x0B22, "\001\111\371\135"},
-    {0x0B23, "\001\111\371\114"},
+    {0x0B1B, "\001\111\371\202"},
+    {0x0B1C, "\001\111\371\100"},
+    {0x0B1D, "\001\111\371\227"},
+    {0x0B1E, "\001\111\371\125"},
+    {0x0B1F, "\001\111\371\120"},
+    {0x0B20, "\001\111\371\206"},
+    {0x0B21, "\001\111\371\135"},
+    {0x0B22, "\001\111\371\136"},
+    {0x0B23, "\001\111\371\115"},
     {0x0B24, "\001\111\371\017"},
-    {0x0B25, "\001\111\371\202"},
+    {0x0B25, "\001\111\371\203"},
     {0x0B26, "\001\111\371\013"},
-    {0x0B27, "\001\111\371\137"},
+    {0x0B27, "\001\111\371\140"},
     {0x0B28, "\001\111\371\002"},
     {0x0B2A, "\001\111\371\015"},
-    {0x0B2B, "\001\111\371\166"},
-    {0x0B2C, "\001\111\371\052"},
-    {0x0B2D, "\001\111\371\126"},
+    {0x0B2B, "\001\111\371\167"},
+    {0x0B2C, "\001\111\371\053"},
+    {0x0B2D, "\001\111\371\127"},
     {0x0B2E, "\001\111\360"},
     {0x0B2F, "\001\111\332"},
     {0x0B30, "\001\111\345"},
     {0x0B32, "\001\111\022"},
-    {0x0B33, "\001\111\371\156"},
-    {0x0B36, "\001\111\371\053"},
-    {0x0B37, "\001\111\371\175"},
+    {0x0B33, "\001\111\371\157"},
+    {0x0B36, "\001\111\371\054"},
+    {0x0B37, "\001\111\371\176"},
     {0x0B38, "\001\111\364"},
     {0x0B39, "\001\111\333"},
-    {0x0B3C, "\015\111\371\376"},
+    {0x0B3C, "\015\111\371\377"},
     {0x0B3D, "\015\111\372\207"},
     {0x0B3E, "\044\023\111\313"},
     {0x0B3F, "\044\023\111\072"},
@@ -3853,14 +3854,14 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0B48, "\044\023\111\250"},
     {0x0B4B, "\044\023\111\050"},
     {0x0B4C, "\044\023\111\274"},
-    {0x0B4D, "\015\111\371\120"},
-    {0x0B56, "\134\012\371\107\111\250"},
-    {0x0B57, "\134\012\371\107\111\274"},
-    {0x0B5C, "\001\111\371\172"},
+    {0x0B4D, "\015\111\371\121"},
+    {0x0B56, "\134\012\371\110\111\250"},
+    {0x0B57, "\134\012\371\110\111\274"},
+    {0x0B5C, "\001\111\371\173"},
     {0x0B5D, "\001\111\372\341"},
     {0x0B5F, "\001\111\373\011"},
-    {0x0B60, "\001\111\371\033\176"},
-    {0x0B61, "\001\111\371\155\176"},
+    {0x0B60, "\001\111\371\034\176"},
+    {0x0B61, "\001\111\371\156\176"},
     {0x0B66, "\017\111\311"},
     {0x0B67, "\017\111\132"},
     {0x0B68, "\017\111\154"},
@@ -3871,9 +3872,9 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0B6D, "\017\111\221"},
     {0x0B6E, "\017\111\204"},
     {0x0B6F, "\017\111\235"},
-    {0x0B70, "\373\242\111"},
-    {0x0B82, "\015\140\371\214"},
-    {0x0B83, "\015\140\371\207"},
+    {0x0B70, "\373\243\111"},
+    {0x0B82, "\015\140\371\215"},
+    {0x0B83, "\015\140\371\210"},
     {0x0B85, "\001\140\046"},
     {0x0B86, "\001\140\313"},
     {0x0B87, "\001\140\072"},
@@ -3881,31 +3882,31 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0B89, "\001\140\114"},
     {0x0B8A, "\001\140\322"},
     {0x0B8E, "\001\140\060"},
-    {0x0B8F, "\001\140\371\055"},
+    {0x0B8F, "\001\140\371\056"},
     {0x0B90, "\001\140\250"},
     {0x0B92, "\001\140\050"},
-    {0x0B93, "\001\140\371\063"},
+    {0x0B93, "\001\140\371\064"},
     {0x0B94, "\001\140\274"},
     {0x0B95, "\001\140\244"},
-    {0x0B99, "\001\140\371\113"},
+    {0x0B99, "\001\140\371\114"},
     {0x0B9A, "\001\140\371\020"},
-    {0x0B9C, "\001\140\371\077"},
-    {0x0B9E, "\001\140\371\124"},
-    {0x0B9F, "\001\140\371\117"},
-    {0x0BA3, "\001\140\371\114"},
+    {0x0B9C, "\001\140\371\100"},
+    {0x0B9E, "\001\140\371\125"},
+    {0x0B9F, "\001\140\371\120"},
+    {0x0BA3, "\001\140\371\115"},
     {0x0BA4, "\001\140\371\017"},
     {0x0BA8, "\001\140\371\002"},
-    {0x0BA9, "\001\140\373\321"},
+    {0x0BA9, "\001\140\373\322"},
     {0x0BAA, "\001\140\371\015"},
     {0x0BAE, "\001\140\360"},
     {0x0BAF, "\001\140\332"},
     {0x0BB0, "\001\140\345"},
-    {0x0BB1, "\001\140\371\172"},
+    {0x0BB1, "\001\140\371\173"},
     {0x0BB2, "\001\140\022"},
-    {0x0BB3, "\001\140\371\156"},
+    {0x0BB3, "\001\140\371\157"},
     {0x0BB4, "\001\140\372\305"},
-    {0x0BB5, "\001\140\371\206"},
-    {0x0BB7, "\001\140\371\175"},
+    {0x0BB5, "\001\140\371\207"},
+    {0x0BB7, "\001\140\371\176"},
     {0x0BB8, "\001\140\364"},
     {0x0BB9, "\001\140\333"},
     {0x0BBE, "\044\023\140\313"},
@@ -3914,13 +3915,13 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0BC1, "\044\023\140\114"},
     {0x0BC2, "\044\023\140\322"},
     {0x0BC6, "\044\023\140\060"},
-    {0x0BC7, "\044\023\140\371\055"},
+    {0x0BC7, "\044\023\140\371\056"},
     {0x0BC8, "\044\023\140\250"},
     {0x0BCA, "\044\023\140\050"},
-    {0x0BCB, "\044\023\140\371\063"},
+    {0x0BCB, "\044\023\140\371\064"},
     {0x0BCC, "\044\023\140\274"},
-    {0x0BCD, "\015\140\371\120"},
-    {0x0BD7, "\134\012\371\107\140\274"},
+    {0x0BCD, "\015\140\371\121"},
+    {0x0BD7, "\134\012\371\110\140\274"},
     {0x0BE7, "\017\140\132"},
     {0x0BE8, "\017\140\154"},
     {0x0BE9, "\017\140\131"},
@@ -3931,11 +3932,11 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0BEE, "\017\140\204"},
     {0x0BEF, "\017\140\235"},
     {0x0BF0, "\163\140\354"},
-    {0x0BF1, "\163\140\371\222"},
-    {0x0BF2, "\163\140\371\157"},
-    {0x0C01, "\015\106\371\263"},
-    {0x0C02, "\015\106\371\214"},
-    {0x0C03, "\015\106\371\207"},
+    {0x0BF1, "\163\140\371\223"},
+    {0x0BF2, "\163\140\371\160"},
+    {0x0C01, "\015\106\371\264"},
+    {0x0C02, "\015\106\371\215"},
+    {0x0C03, "\015\106\371\210"},
     {0x0C05, "\001\106\046"},
     {0x0C06, "\001\106\313"},
     {0x0C07, "\001\106\072"},
@@ -3945,44 +3946,44 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0C0B, "\001\106\150\176"},
     {0x0C0C, "\001\106\167\176"},
     {0x0C0E, "\001\106\060"},
-    {0x0C0F, "\001\106\371\055"},
+    {0x0C0F, "\001\106\371\056"},
     {0x0C10, "\001\106\250"},
     {0x0C12, "\001\106\050"},
-    {0x0C13, "\001\106\371\063"},
+    {0x0C13, "\001\106\371\064"},
     {0x0C14, "\001\106\274"},
     {0x0C15, "\001\106\244"},
-    {0x0C16, "\001\106\371\061"},
-    {0x0C17, "\001\106\371\056"},
-    {0x0C18, "\001\106\371\145"},
-    {0x0C19, "\001\106\371\113"},
+    {0x0C16, "\001\106\371\062"},
+    {0x0C17, "\001\106\371\057"},
+    {0x0C18, "\001\106\371\146"},
+    {0x0C19, "\001\106\371\114"},
     {0x0C1A, "\001\106\371\020"},
-    {0x0C1B, "\001\106\371\201"},
-    {0x0C1C, "\001\106\371\077"},
-    {0x0C1D, "\001\106\371\226"},
-    {0x0C1E, "\001\106\371\124"},
-    {0x0C1F, "\001\106\371\117"},
-    {0x0C20, "\001\106\371\205"},
-    {0x0C21, "\001\106\371\134"},
-    {0x0C22, "\001\106\371\135"},
-    {0x0C23, "\001\106\371\114"},
+    {0x0C1B, "\001\106\371\202"},
+    {0x0C1C, "\001\106\371\100"},
+    {0x0C1D, "\001\106\371\227"},
+    {0x0C1E, "\001\106\371\125"},
+    {0x0C1F, "\001\106\371\120"},
+    {0x0C20, "\001\106\371\206"},
+    {0x0C21, "\001\106\371\135"},
+    {0x0C22, "\001\106\371\136"},
+    {0x0C23, "\001\106\371\115"},
     {0x0C24, "\001\106\371\017"},
-    {0x0C25, "\001\106\371\202"},
+    {0x0C25, "\001\106\371\203"},
     {0x0C26, "\001\106\371\013"},
-    {0x0C27, "\001\106\371\137"},
+    {0x0C27, "\001\106\371\140"},
     {0x0C28, "\001\106\371\002"},
     {0x0C2A, "\001\106\371\015"},
-    {0x0C2B, "\001\106\371\166"},
-    {0x0C2C, "\001\106\371\052"},
-    {0x0C2D, "\001\106\371\126"},
+    {0x0C2B, "\001\106\371\167"},
+    {0x0C2C, "\001\106\371\053"},
+    {0x0C2D, "\001\106\371\127"},
     {0x0C2E, "\001\106\360"},
     {0x0C2F, "\001\106\332"},
     {0x0C30, "\001\106\345"},
-    {0x0C31, "\001\106\371\172"},
+    {0x0C31, "\001\106\371\173"},
     {0x0C32, "\001\106\022"},
-    {0x0C33, "\001\106\371\156"},
-    {0x0C35, "\001\106\371\206"},
-    {0x0C36, "\001\106\371\053"},
-    {0x0C37, "\001\106\371\175"},
+    {0x0C33, "\001\106\371\157"},
+    {0x0C35, "\001\106\371\207"},
+    {0x0C36, "\001\106\371\054"},
+    {0x0C37, "\001\106\371\176"},
     {0x0C38, "\001\106\364"},
     {0x0C39, "\001\106\333"},
     {0x0C3E, "\044\023\106\313"},
@@ -3991,18 +3992,18 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0C41, "\044\023\106\114"},
     {0x0C42, "\044\023\106\322"},
     {0x0C43, "\044\023\106\150\176"},
-    {0x0C44, "\044\023\106\371\033\176"},
+    {0x0C44, "\044\023\106\371\034\176"},
     {0x0C46, "\044\023\106\060"},
-    {0x0C47, "\044\023\106\371\055"},
+    {0x0C47, "\044\023\106\371\056"},
     {0x0C48, "\044\023\106\250"},
     {0x0C4A, "\044\023\106\050"},
-    {0x0C4B, "\044\023\106\371\063"},
+    {0x0C4B, "\044\023\106\371\064"},
     {0x0C4C, "\044\023\106\274"},
-    {0x0C4D, "\015\106\371\120"},
-    {0x0C55, "\134\012\371\107\106"},
-    {0x0C56, "\134\012\371\107\106\250"},
-    {0x0C60, "\001\106\371\033\176"},
-    {0x0C61, "\001\106\371\155\176"},
+    {0x0C4D, "\015\106\371\121"},
+    {0x0C55, "\134\012\371\110\106"},
+    {0x0C56, "\134\012\371\110\106\250"},
+    {0x0C60, "\001\106\371\034\176"},
+    {0x0C61, "\001\106\371\156\176"},
     {0x0C66, "\017\106\311"},
     {0x0C67, "\017\106\132"},
     {0x0C68, "\017\106\154"},
@@ -4013,8 +4014,8 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0C6D, "\017\106\221"},
     {0x0C6E, "\017\106\204"},
     {0x0C6F, "\017\106\235"},
-    {0x0C82, "\015\104\371\214"},
-    {0x0C83, "\015\104\371\207"},
+    {0x0C82, "\015\104\371\215"},
+    {0x0C83, "\015\104\371\210"},
     {0x0C85, "\001\104\046"},
     {0x0C86, "\001\104\313"},
     {0x0C87, "\001\104\072"},
@@ -4024,44 +4025,44 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0C8B, "\001\104\150\176"},
     {0x0C8C, "\001\104\167\176"},
     {0x0C8E, "\001\104\060"},
-    {0x0C8F, "\001\104\371\055"},
+    {0x0C8F, "\001\104\371\056"},
     {0x0C90, "\001\104\250"},
     {0x0C92, "\001\104\050"},
-    {0x0C93, "\001\104\371\063"},
+    {0x0C93, "\001\104\371\064"},
     {0x0C94, "\001\104\274"},
     {0x0C95, "\001\104\244"},
-    {0x0C96, "\001\104\371\061"},
-    {0x0C97, "\001\104\371\056"},
-    {0x0C98, "\001\104\371\145"},
-    {0x0C99, "\001\104\371\113"},
+    {0x0C96, "\001\104\371\062"},
+    {0x0C97, "\001\104\371\057"},
+    {0x0C98, "\001\104\371\146"},
+    {0x0C99, "\001\104\371\114"},
     {0x0C9A, "\001\104\371\020"},
-    {0x0C9B, "\001\104\371\201"},
-    {0x0C9C, "\001\104\371\077"},
-    {0x0C9D, "\001\104\371\226"},
-    {0x0C9E, "\001\104\371\124"},
-    {0x0C9F, "\001\104\371\117"},
-    {0x0CA0, "\001\104\371\205"},
-    {0x0CA1, "\001\104\371\134"},
-    {0x0CA2, "\001\104\371\135"},
-    {0x0CA3, "\001\104\371\114"},
+    {0x0C9B, "\001\104\371\202"},
+    {0x0C9C, "\001\104\371\100"},
+    {0x0C9D, "\001\104\371\227"},
+    {0x0C9E, "\001\104\371\125"},
+    {0x0C9F, "\001\104\371\120"},
+    {0x0CA0, "\001\104\371\206"},
+    {0x0CA1, "\001\104\371\135"},
+    {0x0CA2, "\001\104\371\136"},
+    {0x0CA3, "\001\104\371\115"},
     {0x0CA4, "\001\104\371\017"},
-    {0x0CA5, "\001\104\371\202"},
+    {0x0CA5, "\001\104\371\203"},
     {0x0CA6, "\001\104\371\013"},
-    {0x0CA7, "\001\104\371\137"},
+    {0x0CA7, "\001\104\371\140"},
     {0x0CA8, "\001\104\371\002"},
     {0x0CAA, "\001\104\371\015"},
-    {0x0CAB, "\001\104\371\166"},
-    {0x0CAC, "\001\104\371\052"},
-    {0x0CAD, "\001\104\371\126"},
+    {0x0CAB, "\001\104\371\167"},
+    {0x0CAC, "\001\104\371\053"},
+    {0x0CAD, "\001\104\371\127"},
     {0x0CAE, "\001\104\360"},
     {0x0CAF, "\001\104\332"},
     {0x0CB0, "\001\104\345"},
-    {0x0CB1, "\001\104\371\172"},
+    {0x0CB1, "\001\104\371\173"},
     {0x0CB2, "\001\104\022"},
-    {0x0CB3, "\001\104\371\156"},
-    {0x0CB5, "\001\104\371\206"},
-    {0x0CB6, "\001\104\371\053"},
-    {0x0CB7, "\001\104\371\175"},
+    {0x0CB3, "\001\104\371\157"},
+    {0x0CB5, "\001\104\371\207"},
+    {0x0CB6, "\001\104\371\054"},
+    {0x0CB7, "\001\104\371\176"},
     {0x0CB8, "\001\104\364"},
     {0x0CB9, "\001\104\333"},
     {0x0CBE, "\044\023\104\313"},
@@ -4070,19 +4071,19 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0CC1, "\044\023\104\114"},
     {0x0CC2, "\044\023\104\322"},
     {0x0CC3, "\044\023\104\150\176"},
-    {0x0CC4, "\044\023\104\371\033\176"},
+    {0x0CC4, "\044\023\104\371\034\176"},
     {0x0CC6, "\044\023\104\060"},
-    {0x0CC7, "\044\023\104\371\055"},
+    {0x0CC7, "\044\023\104\371\056"},
     {0x0CC8, "\044\023\104\250"},
     {0x0CCA, "\044\023\104\050"},
-    {0x0CCB, "\044\023\104\371\063"},
+    {0x0CCB, "\044\023\104\371\064"},
     {0x0CCC, "\044\023\104\274"},
-    {0x0CCD, "\015\104\371\120"},
-    {0x0CD5, "\134\012\371\107\104"},
-    {0x0CD6, "\134\012\371\107\104\250"},
+    {0x0CCD, "\015\104\371\121"},
+    {0x0CD5, "\134\012\371\110\104"},
+    {0x0CD6, "\134\012\371\110\104\250"},
     {0x0CDE, "\001\104\372\062"},
-    {0x0CE0, "\001\104\371\033\176"},
-    {0x0CE1, "\001\104\371\155\176"},
+    {0x0CE0, "\001\104\371\034\176"},
+    {0x0CE1, "\001\104\371\156\176"},
     {0x0CE6, "\017\104\311"},
     {0x0CE7, "\017\104\132"},
     {0x0CE8, "\017\104\154"},
@@ -4093,8 +4094,8 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0CED, "\017\104\221"},
     {0x0CEE, "\017\104\204"},
     {0x0CEF, "\017\104\235"},
-    {0x0D02, "\015\113\371\214"},
-    {0x0D03, "\015\113\371\207"},
+    {0x0D02, "\015\113\371\215"},
+    {0x0D03, "\015\113\371\210"},
     {0x0D05, "\001\113\046"},
     {0x0D06, "\001\113\313"},
     {0x0D07, "\001\113\072"},
@@ -4104,45 +4105,45 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0D0B, "\001\113\150\176"},
     {0x0D0C, "\001\113\167\176"},
     {0x0D0E, "\001\113\060"},
-    {0x0D0F, "\001\113\371\055"},
+    {0x0D0F, "\001\113\371\056"},
     {0x0D10, "\001\113\250"},
     {0x0D12, "\001\113\050"},
-    {0x0D13, "\001\113\371\063"},
+    {0x0D13, "\001\113\371\064"},
     {0x0D14, "\001\113\274"},
     {0x0D15, "\001\113\244"},
-    {0x0D16, "\001\113\371\061"},
-    {0x0D17, "\001\113\371\056"},
-    {0x0D18, "\001\113\371\145"},
-    {0x0D19, "\001\113\371\113"},
+    {0x0D16, "\001\113\371\062"},
+    {0x0D17, "\001\113\371\057"},
+    {0x0D18, "\001\113\371\146"},
+    {0x0D19, "\001\113\371\114"},
     {0x0D1A, "\001\113\371\020"},
-    {0x0D1B, "\001\113\371\201"},
-    {0x0D1C, "\001\113\371\077"},
-    {0x0D1D, "\001\113\371\226"},
-    {0x0D1E, "\001\113\371\124"},
-    {0x0D1F, "\001\113\371\117"},
-    {0x0D20, "\001\113\371\205"},
-    {0x0D21, "\001\113\371\134"},
-    {0x0D22, "\001\113\371\135"},
-    {0x0D23, "\001\113\371\114"},
+    {0x0D1B, "\001\113\371\202"},
+    {0x0D1C, "\001\113\371\100"},
+    {0x0D1D, "\001\113\371\227"},
+    {0x0D1E, "\001\113\371\125"},
+    {0x0D1F, "\001\113\371\120"},
+    {0x0D20, "\001\113\371\206"},
+    {0x0D21, "\001\113\371\135"},
+    {0x0D22, "\001\113\371\136"},
+    {0x0D23, "\001\113\371\115"},
     {0x0D24, "\001\113\371\017"},
-    {0x0D25, "\001\113\371\202"},
+    {0x0D25, "\001\113\371\203"},
     {0x0D26, "\001\113\371\013"},
-    {0x0D27, "\001\113\371\137"},
+    {0x0D27, "\001\113\371\140"},
     {0x0D28, "\001\113\371\002"},
     {0x0D2A, "\001\113\371\015"},
-    {0x0D2B, "\001\113\371\166"},
-    {0x0D2C, "\001\113\371\052"},
-    {0x0D2D, "\001\113\371\126"},
+    {0x0D2B, "\001\113\371\167"},
+    {0x0D2C, "\001\113\371\053"},
+    {0x0D2D, "\001\113\371\127"},
     {0x0D2E, "\001\113\360"},
     {0x0D2F, "\001\113\332"},
     {0x0D30, "\001\113\345"},
-    {0x0D31, "\001\113\371\172"},
+    {0x0D31, "\001\113\371\173"},
     {0x0D32, "\001\113\022"},
-    {0x0D33, "\001\113\371\156"},
+    {0x0D33, "\001\113\371\157"},
     {0x0D34, "\001\113\372\305"},
-    {0x0D35, "\001\113\371\206"},
-    {0x0D36, "\001\113\371\053"},
-    {0x0D37, "\001\113\371\175"},
+    {0x0D35, "\001\113\371\207"},
+    {0x0D36, "\001\113\371\054"},
+    {0x0D37, "\001\113\371\176"},
     {0x0D38, "\001\113\364"},
     {0x0D39, "\001\113\333"},
     {0x0D3E, "\044\023\113\313"},
@@ -4152,15 +4153,15 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0D42, "\044\023\113\322"},
     {0x0D43, "\044\023\113\150\176"},
     {0x0D46, "\044\023\113\060"},
-    {0x0D47, "\044\023\113\371\055"},
+    {0x0D47, "\044\023\113\371\056"},
     {0x0D48, "\044\023\113\250"},
     {0x0D4A, "\044\023\113\050"},
-    {0x0D4B, "\044\023\113\371\063"},
+    {0x0D4B, "\044\023\113\371\064"},
     {0x0D4C, "\044\023\113\274"},
-    {0x0D4D, "\015\113\371\120"},
-    {0x0D57, "\134\012\371\107\113\274"},
-    {0x0D60, "\001\113\371\033\176"},
-    {0x0D61, "\001\113\371\155\176"},
+    {0x0D4D, "\015\113\371\121"},
+    {0x0D57, "\134\012\371\110\113\274"},
+    {0x0D60, "\001\113\371\034\176"},
+    {0x0D61, "\001\113\371\156\176"},
     {0x0D66, "\017\113\311"},
     {0x0D67, "\017\113\132"},
     {0x0D68, "\017\113\154"},
@@ -4171,81 +4172,81 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0D6D, "\017\113\221"},
     {0x0D6E, "\017\113\204"},
     {0x0D6F, "\017\113\235"},
-    {0x0E01, "\074\073\371\237\375\377"},
-    {0x0E02, "\074\073\371\236\376\011"},
-    {0x0E03, "\074\073\371\236\376\014"},
-    {0x0E04, "\074\073\371\236\376\015"},
-    {0x0E05, "\074\073\371\236\376\013"},
-    {0x0E06, "\074\073\371\236\376\372"},
-    {0x0E07, "\074\073\373\314\376\201"},
-    {0x0E08, "\074\073\377\205\377\157"},
-    {0x0E09, "\074\073\372\164\377\162"},
-    {0x0E0A, "\074\073\372\164\377\160"},
-    {0x0E0B, "\074\073\371\045\371\045"},
-    {0x0E0C, "\074\073\372\164\377\164"},
-    {0x0E0D, "\074\073\371\021\377\305"},
-    {0x0E0E, "\074\073\371\353\377\156"},
-    {0x0E0F, "\074\073\371\253\376\277"},
-    {0x0E10, "\074\073\371\070\372\370"},
-    {0x0E11, "\074\073\371\070\376\172"},
-    {0x0E12, "\074\073\371\070\376\317"},
-    {0x0E13, "\074\073\371\163\376\176"},
-    {0x0E14, "\074\073\371\353\375\125"},
-    {0x0E15, "\074\073\371\253\377\144"},
-    {0x0E16, "\074\073\371\070\377\200"},
-    {0x0E17, "\074\073\371\070\377\175"},
-    {0x0E18, "\074\073\371\070\377\177"},
-    {0x0E19, "\074\073\371\163\376\217"},
-    {0x0E1A, "\074\073\372\045\374\351"},
-    {0x0E1B, "\074\073\372\126\376\332"},
-    {0x0E1C, "\074\073\372\006\376\316"},
+    {0x0E01, "\074\073\371\240\376\001"},
+    {0x0E02, "\074\073\371\237\376\012"},
+    {0x0E03, "\074\073\371\237\376\015"},
+    {0x0E04, "\074\073\371\237\376\016"},
+    {0x0E05, "\074\073\371\237\376\014"},
+    {0x0E06, "\074\073\371\237\376\373"},
+    {0x0E07, "\074\073\373\315\376\202"},
+    {0x0E08, "\074\073\377\206\377\160"},
+    {0x0E09, "\074\073\372\164\377\163"},
+    {0x0E0A, "\074\073\372\164\377\161"},
+    {0x0E0B, "\074\073\371\046\371\046"},
+    {0x0E0C, "\074\073\372\164\377\165"},
+    {0x0E0D, "\074\073\371\021\377\306"},
+    {0x0E0E, "\074\073\371\354\377\157"},
+    {0x0E0F, "\074\073\371\254\376\300"},
+    {0x0E10, "\074\073\371\071\372\370"},
+    {0x0E11, "\074\073\371\071\376\173"},
+    {0x0E12, "\074\073\371\071\376\320"},
+    {0x0E13, "\074\073\371\164\376\177"},
+    {0x0E14, "\074\073\371\354\375\126"},
+    {0x0E15, "\074\073\371\254\377\145"},
+    {0x0E16, "\074\073\371\071\377\201"},
+    {0x0E17, "\074\073\371\071\377\176"},
+    {0x0E18, "\074\073\371\071\377\200"},
+    {0x0E19, "\074\073\371\164\376\220"},
+    {0x0E1A, "\074\073\372\045\374\352"},
+    {0x0E1B, "\074\073\372\126\376\333"},
+    {0x0E1C, "\074\073\372\007\376\317"},
     {0x0E1D, "\074\073\372\064\372\062"},
-    {0x0E1E, "\074\073\372\006\376\313"},
-    {0x0E1F, "\074\073\372\064\375\221"},
-    {0x0E20, "\074\073\372\006\377\046"},
-    {0x0E21, "\074\073\371\240\360"},
-    {0x0E22, "\074\073\371\021\377\301"},
-    {0x0E23, "\074\073\372\014\377\022"},
-    {0x0E24, "\074\073\377\021"},
-    {0x0E25, "\074\073\371\373\373\264"},
-    {0x0E26, "\074\073\376\065"},
-    {0x0E27, "\074\073\371\122\377\271"},
-    {0x0E28, "\074\073\371\045\377\041"},
-    {0x0E29, "\074\073\371\045\377\025"},
-    {0x0E2A, "\074\073\371\045\377\114"},
-    {0x0E2B, "\074\073\371\060\375\302"},
-    {0x0E2C, "\074\073\371\373\377\172"},
-    {0x0E2D, "\074\073\050\373\030"},
-    {0x0E2E, "\074\073\371\060\376\211"},
-    {0x0E2F, "\074\073\376\264"},
+    {0x0E1E, "\074\073\372\007\376\314"},
+    {0x0E1F, "\074\073\372\064\375\222"},
+    {0x0E20, "\074\073\372\007\377\047"},
+    {0x0E21, "\074\073\371\241\360"},
+    {0x0E22, "\074\073\371\021\377\302"},
+    {0x0E23, "\074\073\372\015\377\023"},
+    {0x0E24, "\074\073\377\022"},
+    {0x0E25, "\074\073\371\374\373\265"},
+    {0x0E26, "\074\073\376\066"},
+    {0x0E27, "\074\073\371\123\377\272"},
+    {0x0E28, "\074\073\371\046\377\042"},
+    {0x0E29, "\074\073\371\046\377\026"},
+    {0x0E2A, "\074\073\371\046\377\115"},
+    {0x0E2B, "\074\073\371\061\375\303"},
+    {0x0E2C, "\074\073\371\374\377\173"},
+    {0x0E2D, "\074\073\050\373\031"},
+    {0x0E2E, "\074\073\371\061\376\212"},
+    {0x0E2F, "\074\073\376\265"},
     {0x0E30, "\074\073\371\006\046"},
-    {0x0E31, "\074\073\371\030\375\273\374\274"},
+    {0x0E31, "\074\073\371\031\375\274\374\275"},
     {0x0E32, "\074\073\371\006\313"},
     {0x0E33, "\074\073\371\006\372\204"},
     {0x0E34, "\074\073\371\006\072"},
     {0x0E35, "\074\073\371\006\317"},
-    {0x0E36, "\074\073\371\006\376\255"},
-    {0x0E37, "\074\073\371\006\376\256"},
+    {0x0E36, "\074\073\371\006\376\256"},
+    {0x0E37, "\074\073\371\006\376\257"},
     {0x0E38, "\074\073\371\006\114"},
     {0x0E39, "\074\073\371\006\322"},
-    {0x0E3A, "\074\073\376\314"},
-    {0x0E3F, "\015\371\161\073\374\350"},
+    {0x0E3A, "\074\073\376\315"},
+    {0x0E3F, "\015\371\162\073\374\351"},
     {0x0E40, "\074\073\371\006\060"},
     {0x0E41, "\074\073\371\006\372\036"},
     {0x0E42, "\074\073\371\006\050"},
-    {0x0E43, "\074\073\371\006\250\376\074"},
-    {0x0E44, "\074\073\371\006\250\376\073"},
-    {0x0E45, "\074\073\376\046"},
-    {0x0E46, "\074\073\376\077"},
-    {0x0E47, "\074\073\376\076"},
-    {0x0E48, "\074\073\371\030\372\250"},
-    {0x0E49, "\074\073\371\030\371\070"},
-    {0x0E4A, "\074\073\371\030\377\223"},
-    {0x0E4B, "\074\073\371\030\377\161"},
-    {0x0E4C, "\074\073\377\176"},
-    {0x0E4D, "\074\073\376\203"},
-    {0x0E4E, "\074\073\377\302"},
-    {0x0E4F, "\074\073\375\235"},
+    {0x0E43, "\074\073\371\006\250\376\075"},
+    {0x0E44, "\074\073\371\006\250\376\074"},
+    {0x0E45, "\074\073\376\047"},
+    {0x0E46, "\074\073\376\100"},
+    {0x0E47, "\074\073\376\077"},
+    {0x0E48, "\074\073\371\031\372\250"},
+    {0x0E49, "\074\073\371\031\371\071"},
+    {0x0E4A, "\074\073\371\031\377\224"},
+    {0x0E4B, "\074\073\371\031\377\162"},
+    {0x0E4C, "\074\073\377\177"},
+    {0x0E4D, "\074\073\376\204"},
+    {0x0E4E, "\074\073\377\303"},
+    {0x0E4F, "\074\073\375\236"},
     {0x0E50, "\017\073\311"},
     {0x0E51, "\017\073\132"},
     {0x0E52, "\017\073\154"},
@@ -4256,61 +4257,61 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0E57, "\017\073\221"},
     {0x0E58, "\017\073\204"},
     {0x0E59, "\017\073\235"},
-    {0x0E5A, "\074\073\374\306"},
-    {0x0E5B, "\074\073\376\012"},
-    {0x0E81, "\001\170\371\237"},
-    {0x0E82, "\001\170\371\236\371\320"},
-    {0x0E84, "\001\170\371\236\371\324"},
-    {0x0E87, "\001\170\373\314"},
+    {0x0E5A, "\074\073\374\307"},
+    {0x0E5B, "\074\073\376\013"},
+    {0x0E81, "\001\170\371\240"},
+    {0x0E82, "\001\170\371\237\371\321"},
+    {0x0E84, "\001\170\371\237\371\325"},
+    {0x0E87, "\001\170\373\315"},
     {0x0E88, "\001\170\372\164"},
-    {0x0E8A, "\001\170\371\045\371\324"},
-    {0x0E8D, "\001\170\374\157"},
-    {0x0E94, "\001\170\371\353"},
-    {0x0E95, "\001\170\371\253"},
-    {0x0E96, "\001\170\371\070\371\320"},
-    {0x0E97, "\001\170\371\070\371\324"},
-    {0x0E99, "\001\170\371\163"},
+    {0x0E8A, "\001\170\371\046\371\325"},
+    {0x0E8D, "\001\170\374\160"},
+    {0x0E94, "\001\170\371\354"},
+    {0x0E95, "\001\170\371\254"},
+    {0x0E96, "\001\170\371\071\371\321"},
+    {0x0E97, "\001\170\371\071\371\325"},
+    {0x0E99, "\001\170\371\164"},
     {0x0E9A, "\001\170\372\045"},
     {0x0E9B, "\001\170\372\126"},
-    {0x0E9C, "\001\170\372\006\371\320"},
-    {0x0E9D, "\001\170\372\064\371\324"},
-    {0x0E9E, "\001\170\372\006\371\324"},
-    {0x0E9F, "\001\170\372\064\371\320"},
-    {0x0EA1, "\001\170\371\240"},
+    {0x0E9C, "\001\170\372\007\371\321"},
+    {0x0E9D, "\001\170\372\064\371\325"},
+    {0x0E9E, "\001\170\372\007\371\325"},
+    {0x0E9F, "\001\170\372\064\371\321"},
+    {0x0EA1, "\001\170\371\241"},
     {0x0EA2, "\001\170\371\021"},
-    {0x0EA3, "\001\170\371\373\373\264"},
-    {0x0EA5, "\001\170\371\373\376\066"},
-    {0x0EA7, "\001\170\371\122"},
-    {0x0EAA, "\001\170\371\045\371\320"},
-    {0x0EAB, "\001\170\371\060\371\320"},
+    {0x0EA3, "\001\170\371\374\373\265"},
+    {0x0EA5, "\001\170\371\374\376\067"},
+    {0x0EA7, "\001\170\371\123"},
+    {0x0EAA, "\001\170\371\046\371\321"},
+    {0x0EAB, "\001\170\371\061\371\321"},
     {0x0EAD, "\001\170\050"},
-    {0x0EAE, "\001\170\371\060\371\324"},
-    {0x0EAF, "\220\012\374\062\376\047"},
+    {0x0EAE, "\001\170\371\061\371\325"},
+    {0x0EAF, "\220\012\374\063\376\050"},
     {0x0EB0, "\044\023\170\046"},
-    {0x0EB1, "\044\023\170\371\030\372\273"},
+    {0x0EB1, "\044\023\170\371\031\372\273"},
     {0x0EB2, "\044\023\170\313"},
     {0x0EB3, "\044\023\170\372\204"},
     {0x0EB4, "\044\023\170\072"},
     {0x0EB5, "\044\023\170\317"},
     {0x0EB6, "\044\023\170\107"},
-    {0x0EB7, "\044\023\170\377\243"},
+    {0x0EB7, "\044\023\170\377\244"},
     {0x0EB8, "\044\023\170\114"},
     {0x0EB9, "\044\023\170\322"},
-    {0x0EBB, "\044\023\170\371\030\376\027"},
-    {0x0EBC, "\373\125\023\170\371\373"},
-    {0x0EBD, "\373\125\023\170\374\157"},
+    {0x0EBB, "\044\023\170\371\031\376\030"},
+    {0x0EBC, "\373\126\023\170\371\374"},
+    {0x0EBD, "\373\126\023\170\374\160"},
     {0x0EC0, "\044\023\170\060"},
-    {0x0EC1, "\044\023\170\373\146"},
+    {0x0EC1, "\044\023\170\373\147"},
     {0x0EC2, "\044\023\170\050"},
-    {0x0EC3, "\044\023\170\374\345"},
+    {0x0EC3, "\044\023\170\374\346"},
     {0x0EC4, "\044\023\170\250"},
-    {0x0EC6, "\371\237\022\325"},
-    {0x0EC8, "\153\012\272\325\371\030\372\250"},
-    {0x0EC9, "\153\012\272\325\371\030\371\070"},
-    {0x0ECA, "\153\012\272\325\371\030\372\022"},
-    {0x0ECB, "\153\012\272\325\371\030\375\015"},
-    {0x0ECC, "\134\373\106\325"},
-    {0x0ECD, "\376\202\325"},
+    {0x0EC6, "\371\240\022\325"},
+    {0x0EC8, "\153\012\272\325\371\031\372\250"},
+    {0x0EC9, "\153\012\272\325\371\031\371\071"},
+    {0x0ECA, "\153\012\272\325\371\031\372\023"},
+    {0x0ECB, "\153\012\272\325\371\031\375\016"},
+    {0x0ECC, "\134\373\107\325"},
+    {0x0ECD, "\376\203\325"},
     {0x0ED0, "\017\325\311"},
     {0x0ED1, "\017\325\132"},
     {0x0ED2, "\017\325\154"},
@@ -4321,252 +4322,252 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x0ED7, "\017\325\221"},
     {0x0ED8, "\017\325\204"},
     {0x0ED9, "\017\325\235"},
-    {0x0EDC, "\371\060\371\163\325"},
-    {0x0EDD, "\371\060\371\240\325"},
+    {0x0EDC, "\371\061\371\164\325"},
+    {0x0EDD, "\371\061\371\241\325"},
     {0x10A0, "\001\202\116\372\205"},
-    {0x10A1, "\001\202\116\373\042"},
-    {0x10A2, "\001\202\116\373\203"},
-    {0x10A3, "\001\202\116\373\136"},
+    {0x10A1, "\001\202\116\373\043"},
+    {0x10A2, "\001\202\116\373\204"},
+    {0x10A3, "\001\202\116\373\137"},
     {0x10A4, "\001\202\116\007"},
-    {0x10A5, "\001\202\116\374\114"},
-    {0x10A6, "\001\202\116\374\065"},
+    {0x10A5, "\001\202\116\374\115"},
+    {0x10A6, "\001\202\116\374\066"},
     {0x10A7, "\001\202\116\372\370"},
     {0x10A8, "\001\202\116\372\264"},
-    {0x10A9, "\001\202\116\373\064"},
-    {0x10AA, "\001\202\116\373\262"},
-    {0x10AB, "\001\202\116\373\271"},
-    {0x10AC, "\001\202\116\373\313"},
-    {0x10AD, "\001\202\116\373\335"},
-    {0x10AE, "\001\202\116\371\041"},
-    {0x10AF, "\001\202\116\374\043"},
-    {0x10B0, "\001\202\116\374\011"},
-    {0x10B1, "\001\202\116\374\034"},
-    {0x10B2, "\001\202\116\374\070"},
+    {0x10A9, "\001\202\116\373\065"},
+    {0x10AA, "\001\202\116\373\263"},
+    {0x10AB, "\001\202\116\373\272"},
+    {0x10AC, "\001\202\116\373\314"},
+    {0x10AD, "\001\202\116\373\336"},
+    {0x10AE, "\001\202\116\371\042"},
+    {0x10AF, "\001\202\116\374\044"},
+    {0x10B0, "\001\202\116\374\012"},
+    {0x10B1, "\001\202\116\374\035"},
+    {0x10B2, "\001\202\116\374\071"},
     {0x10B3, "\001\202\116\132"},
-    {0x10B4, "\001\202\116\373\156"},
+    {0x10B4, "\001\202\116\373\157"},
     {0x10B5, "\001\202\116\372\273"},
-    {0x10B6, "\001\202\116\373\206"},
-    {0x10B7, "\001\202\116\373\102"},
-    {0x10B8, "\001\202\116\374\040"},
-    {0x10B9, "\001\202\116\373\071"},
-    {0x10BA, "\001\202\116\374\152"},
-    {0x10BB, "\001\202\116\374\147"},
-    {0x10BC, "\001\202\116\374\153"},
-    {0x10BD, "\001\202\116\373\060"},
-    {0x10BE, "\001\202\116\373\067"},
-    {0x10BF, "\001\202\116\373\210"},
-    {0x10C0, "\001\202\116\373\221"},
-    {0x10C1, "\001\202\116\371\103"},
-    {0x10C2, "\001\202\116\373\224"},
-    {0x10C3, "\001\202\116\372\033"},
-    {0x10C4, "\001\202\116\373\222"},
-    {0x10C5, "\001\202\116\373\223"},
+    {0x10B6, "\001\202\116\373\207"},
+    {0x10B7, "\001\202\116\373\103"},
+    {0x10B8, "\001\202\116\374\041"},
+    {0x10B9, "\001\202\116\373\072"},
+    {0x10BA, "\001\202\116\374\153"},
+    {0x10BB, "\001\202\116\374\150"},
+    {0x10BC, "\001\202\116\374\154"},
+    {0x10BD, "\001\202\116\373\061"},
+    {0x10BE, "\001\202\116\373\070"},
+    {0x10BF, "\001\202\116\373\211"},
+    {0x10C0, "\001\202\116\373\222"},
+    {0x10C1, "\001\202\116\371\104"},
+    {0x10C2, "\001\202\116\373\225"},
+    {0x10C3, "\001\202\116\372\034"},
+    {0x10C4, "\001\202\116\373\223"},
+    {0x10C5, "\001\202\116\373\224"},
     {0x10D0, "\001\116\372\205"},
-    {0x10D1, "\001\116\373\042"},
-    {0x10D2, "\001\116\373\203"},
-    {0x10D3, "\001\116\373\136"},
+    {0x10D1, "\001\116\373\043"},
+    {0x10D2, "\001\116\373\204"},
+    {0x10D3, "\001\116\373\137"},
     {0x10D4, "\001\116\007"},
-    {0x10D5, "\001\116\374\114"},
-    {0x10D6, "\001\116\374\065"},
+    {0x10D5, "\001\116\374\115"},
+    {0x10D6, "\001\116\374\066"},
     {0x10D7, "\001\116\372\370"},
     {0x10D8, "\001\116\372\264"},
-    {0x10D9, "\001\116\373\064"},
-    {0x10DA, "\001\116\373\262"},
-    {0x10DB, "\001\116\373\271"},
-    {0x10DC, "\001\116\373\313"},
-    {0x10DD, "\001\116\373\335"},
-    {0x10DE, "\001\116\371\041"},
-    {0x10DF, "\001\116\374\043"},
-    {0x10E0, "\001\116\374\011"},
-    {0x10E1, "\001\116\374\034"},
-    {0x10E2, "\001\116\374\070"},
+    {0x10D9, "\001\116\373\065"},
+    {0x10DA, "\001\116\373\263"},
+    {0x10DB, "\001\116\373\272"},
+    {0x10DC, "\001\116\373\314"},
+    {0x10DD, "\001\116\373\336"},
+    {0x10DE, "\001\116\371\042"},
+    {0x10DF, "\001\116\374\044"},
+    {0x10E0, "\001\116\374\012"},
+    {0x10E1, "\001\116\374\035"},
+    {0x10E2, "\001\116\374\071"},
     {0x10E3, "\001\116\132"},
-    {0x10E4, "\001\116\373\156"},
+    {0x10E4, "\001\116\373\157"},
     {0x10E5, "\001\116\372\273"},
-    {0x10E6, "\001\116\373\206"},
-    {0x10E7, "\001\116\373\102"},
-    {0x10E8, "\001\116\374\040"},
-    {0x10E9, "\001\116\373\071"},
-    {0x10EA, "\001\116\374\152"},
-    {0x10EB, "\001\116\374\147"},
-    {0x10EC, "\001\116\374\153"},
-    {0x10ED, "\001\116\373\060"},
-    {0x10EE, "\001\116\373\067"},
-    {0x10EF, "\001\116\373\210"},
-    {0x10F0, "\001\116\373\221"},
-    {0x10F1, "\001\116\371\103"},
-    {0x10F2, "\001\116\373\224"},
-    {0x10F3, "\001\116\372\033"},
-    {0x10F4, "\001\116\373\222"},
-    {0x10F5, "\001\116\373\223"},
-    {0x10F6, "\001\116\373\162"},
-    {0x10FB, "\371\007\012\372\324\375\270"},
-    {0x1100, "\010\067\371\154"},
+    {0x10E6, "\001\116\373\207"},
+    {0x10E7, "\001\116\373\103"},
+    {0x10E8, "\001\116\374\041"},
+    {0x10E9, "\001\116\373\072"},
+    {0x10EA, "\001\116\374\153"},
+    {0x10EB, "\001\116\374\150"},
+    {0x10EC, "\001\116\374\154"},
+    {0x10ED, "\001\116\373\061"},
+    {0x10EE, "\001\116\373\070"},
+    {0x10EF, "\001\116\373\211"},
+    {0x10F0, "\001\116\373\222"},
+    {0x10F1, "\001\116\371\104"},
+    {0x10F2, "\001\116\373\225"},
+    {0x10F3, "\001\116\372\034"},
+    {0x10F4, "\001\116\373\223"},
+    {0x10F5, "\001\116\373\224"},
+    {0x10F6, "\001\116\373\163"},
+    {0x10FB, "\371\007\012\372\324\375\271"},
+    {0x1100, "\010\067\371\155"},
     {0x1101, "\010\067\372\157"},
-    {0x1102, "\010\067\371\162"},
-    {0x1103, "\010\067\371\203"},
+    {0x1102, "\010\067\371\163"},
+    {0x1103, "\010\067\371\204"},
     {0x1104, "\010\067\372\364"},
-    {0x1105, "\010\067\371\171"},
-    {0x1106, "\010\067\371\160"},
-    {0x1107, "\010\067\371\167"},
+    {0x1105, "\010\067\371\172"},
+    {0x1106, "\010\067\371\161"},
+    {0x1107, "\010\067\371\170"},
     {0x1108, "\010\067\372\362"},
-    {0x1109, "\010\067\371\173"},
+    {0x1109, "\010\067\371\174"},
     {0x110A, "\010\067\372\160"},
-    {0x110B, "\010\067\371\151"},
-    {0x110C, "\010\067\371\116"},
+    {0x110B, "\010\067\371\152"},
+    {0x110C, "\010\067\371\117"},
     {0x110D, "\010\067\372\363"},
-    {0x110E, "\010\067\371\200"},
-    {0x110F, "\010\067\371\153"},
-    {0x1110, "\010\067\371\177"},
-    {0x1111, "\010\067\371\165"},
-    {0x1112, "\010\067\371\147"},
-    {0x1113, "\010\067\373\315"},
-    {0x1114, "\010\067\374\054"},
+    {0x110E, "\010\067\371\201"},
+    {0x110F, "\010\067\371\154"},
+    {0x1110, "\010\067\371\200"},
+    {0x1111, "\010\067\371\166"},
+    {0x1112, "\010\067\371\150"},
+    {0x1113, "\010\067\373\316"},
+    {0x1114, "\010\067\374\055"},
     {0x1115, "\010\067\372\317"},
-    {0x1116, "\010\067\376\204"},
-    {0x1117, "\010\067\374\077"},
-    {0x1118, "\010\067\374\024"},
-    {0x1119, "\010\067\374\055"},
+    {0x1116, "\010\067\376\205"},
+    {0x1117, "\010\067\374\100"},
+    {0x1118, "\010\067\374\025"},
+    {0x1119, "\010\067\374\056"},
     {0x111A, "\010\067\372\145"},
-    {0x111B, "\010\067\376\002"},
+    {0x111B, "\010\067\376\003"},
     {0x111C, "\010\067\372\310"},
     {0x111D, "\010\067\372\275"},
-    {0x111E, "\010\067\373\356"},
-    {0x111F, "\010\067\376\324"},
-    {0x1120, "\010\067\373\364"},
+    {0x111E, "\010\067\373\357"},
+    {0x111F, "\010\067\376\325"},
+    {0x1120, "\010\067\373\365"},
     {0x1121, "\010\067\372\125"},
-    {0x1122, "\010\067\373\360"},
-    {0x1123, "\010\067\373\361"},
-    {0x1124, "\010\067\376\326"},
-    {0x1125, "\010\067\376\330"},
-    {0x1126, "\010\067\376\327"},
-    {0x1127, "\010\067\373\363"},
-    {0x1128, "\010\067\376\331"},
-    {0x1129, "\010\067\373\362"},
-    {0x112A, "\010\067\373\357"},
+    {0x1122, "\010\067\373\361"},
+    {0x1123, "\010\067\373\362"},
+    {0x1124, "\010\067\376\327"},
+    {0x1125, "\010\067\376\331"},
+    {0x1126, "\010\067\376\330"},
+    {0x1127, "\010\067\373\364"},
+    {0x1128, "\010\067\376\332"},
+    {0x1129, "\010\067\373\363"},
+    {0x112A, "\010\067\373\360"},
     {0x112B, "\010\067\372\277"},
-    {0x112C, "\010\067\373\246"},
+    {0x112C, "\010\067\373\247"},
     {0x112D, "\010\067\372\354"},
-    {0x112E, "\010\067\374\045"},
+    {0x112E, "\010\067\374\046"},
     {0x112F, "\010\067\372\356"},
-    {0x1130, "\010\067\374\046"},
-    {0x1131, "\010\067\377\101"},
+    {0x1130, "\010\067\374\047"},
+    {0x1131, "\010\067\377\102"},
     {0x1132, "\010\067\372\355"},
-    {0x1133, "\010\067\377\103"},
-    {0x1134, "\010\067\377\104"},
-    {0x1135, "\010\067\377\077"},
-    {0x1136, "\010\067\374\047"},
-    {0x1137, "\010\067\377\106"},
-    {0x1138, "\010\067\377\100"},
-    {0x1139, "\010\067\377\105"},
-    {0x113A, "\010\067\377\102"},
-    {0x113B, "\010\067\377\076"},
-    {0x113C, "\010\067\377\147"},
-    {0x113D, "\010\067\377\150"},
-    {0x113E, "\010\067\377\165"},
-    {0x113F, "\010\067\377\166"},
+    {0x1133, "\010\067\377\104"},
+    {0x1134, "\010\067\377\105"},
+    {0x1135, "\010\067\377\100"},
+    {0x1136, "\010\067\374\050"},
+    {0x1137, "\010\067\377\107"},
+    {0x1138, "\010\067\377\101"},
+    {0x1139, "\010\067\377\106"},
+    {0x113A, "\010\067\377\103"},
+    {0x113B, "\010\067\377\077"},
+    {0x113C, "\010\067\377\150"},
+    {0x113D, "\010\067\377\151"},
+    {0x113E, "\010\067\377\166"},
+    {0x113F, "\010\067\377\167"},
     {0x1140, "\010\067\372\323"},
-    {0x1141, "\010\067\373\243"},
-    {0x1142, "\010\067\375\366"},
-    {0x1143, "\010\067\375\355"},
-    {0x1144, "\010\067\375\360"},
-    {0x1145, "\010\067\375\361"},
-    {0x1146, "\010\067\375\357"},
+    {0x1141, "\010\067\373\244"},
+    {0x1142, "\010\067\375\367"},
+    {0x1143, "\010\067\375\356"},
+    {0x1144, "\010\067\375\361"},
+    {0x1145, "\010\067\375\362"},
+    {0x1146, "\010\067\375\360"},
     {0x1147, "\010\067\372\361"},
-    {0x1148, "\010\067\375\365"},
-    {0x1149, "\010\067\375\364"},
-    {0x114A, "\010\067\375\363"},
-    {0x114B, "\010\067\375\356"},
+    {0x1148, "\010\067\375\366"},
+    {0x1149, "\010\067\375\365"},
+    {0x114A, "\010\067\375\364"},
+    {0x114B, "\010\067\375\357"},
     {0x114C, "\010\067\373\006"},
-    {0x114D, "\010\067\377\163"},
-    {0x114E, "\010\067\377\153"},
-    {0x114F, "\010\067\377\151"},
-    {0x1150, "\010\067\377\171"},
-    {0x1151, "\010\067\377\167"},
-    {0x1152, "\010\067\377\155"},
-    {0x1153, "\010\067\377\154"},
-    {0x1154, "\010\067\377\152"},
-    {0x1155, "\010\067\377\170"},
-    {0x1156, "\010\067\373\344"},
+    {0x114D, "\010\067\377\164"},
+    {0x114E, "\010\067\377\154"},
+    {0x114F, "\010\067\377\152"},
+    {0x1150, "\010\067\377\172"},
+    {0x1151, "\010\067\377\170"},
+    {0x1152, "\010\067\377\156"},
+    {0x1153, "\010\067\377\155"},
+    {0x1154, "\010\067\377\153"},
+    {0x1155, "\010\067\377\171"},
+    {0x1156, "\010\067\373\345"},
     {0x1157, "\010\067\372\276"},
-    {0x1158, "\010\067\374\053"},
+    {0x1158, "\010\067\374\054"},
     {0x1159, "\010\067\373\010"},
-    {0x115F, "\371\340\010\067"},
-    {0x1160, "\371\340\010\127"},
+    {0x115F, "\371\341\010\067"},
+    {0x1160, "\371\341\010\127"},
     {0x1161, "\010\127\046"},
     {0x1162, "\010\127\373\015"},
     {0x1163, "\010\127\332"},
     {0x1164, "\010\127\373\012"},
     {0x1165, "\010\127\050"},
-    {0x1166, "\010\127\371\257"},
+    {0x1166, "\010\127\371\260"},
     {0x1167, "\010\127\371\021"},
     {0x1168, "\010\127\373\013"},
     {0x1169, "\010\127\373\020"},
-    {0x116A, "\010\127\371\121"},
+    {0x116A, "\010\127\371\122"},
     {0x116B, "\010\127\373\004"},
     {0x116C, "\010\127\372\251"},
     {0x116D, "\010\127\373\014"},
     {0x116E, "\010\127\114"},
-    {0x116F, "\010\127\371\122"},
+    {0x116F, "\010\127\371\123"},
     {0x1170, "\010\127\373\005"},
-    {0x1171, "\010\127\371\330"},
-    {0x1172, "\010\127\371\050"},
+    {0x1171, "\010\127\371\331"},
+    {0x1172, "\010\127\371\051"},
     {0x1173, "\010\127\373\021"},
     {0x1174, "\010\127\373\022"},
     {0x1175, "\010\127\072"},
-    {0x1176, "\010\127\374\262"},
-    {0x1177, "\010\127\374\261"},
-    {0x1178, "\010\127\377\276"},
-    {0x1179, "\010\127\377\275"},
-    {0x117A, "\010\127\376\231"},
-    {0x117B, "\010\127\376\230"},
-    {0x117C, "\010\127\376\232"},
-    {0x117D, "\010\127\377\307"},
-    {0x117E, "\010\127\377\306"},
-    {0x117F, "\010\127\377\335"},
-    {0x1180, "\010\127\377\340"},
-    {0x1181, "\010\127\377\337"},
-    {0x1182, "\010\127\377\341"},
-    {0x1183, "\010\127\377\336"},
-    {0x1184, "\010\127\374\142"},
-    {0x1185, "\010\127\374\143"},
-    {0x1186, "\010\127\377\317"},
-    {0x1187, "\010\127\377\320"},
-    {0x1188, "\010\127\374\141"},
-    {0x1189, "\010\127\376\250"},
-    {0x118A, "\010\127\376\254"},
-    {0x118B, "\010\127\376\251"},
-    {0x118C, "\010\127\376\253"},
-    {0x118D, "\010\127\376\252"},
-    {0x118E, "\010\127\377\311"},
-    {0x118F, "\010\127\377\312"},
-    {0x1190, "\010\127\377\314"},
-    {0x1191, "\010\127\374\137"},
-    {0x1192, "\010\127\374\140"},
-    {0x1193, "\010\127\377\313"},
-    {0x1194, "\010\127\374\136"},
-    {0x1195, "\010\127\377\342"},
-    {0x1196, "\010\127\377\343"},
-    {0x1197, "\010\127\377\344"},
-    {0x1198, "\010\127\375\327"},
-    {0x1199, "\010\127\375\332"},
-    {0x119A, "\010\127\375\333"},
-    {0x119B, "\010\127\375\331"},
-    {0x119C, "\010\127\375\334"},
-    {0x119D, "\010\127\375\330"},
-    {0x119E, "\010\127\373\034"},
-    {0x119F, "\010\127\374\327"},
-    {0x11A0, "\010\127\374\330"},
-    {0x11A1, "\010\127\374\326"},
-    {0x11A2, "\010\127\377\122"},
-    {0x11A8, "\010\103\371\154"},
+    {0x1176, "\010\127\374\263"},
+    {0x1177, "\010\127\374\262"},
+    {0x1178, "\010\127\377\277"},
+    {0x1179, "\010\127\377\276"},
+    {0x117A, "\010\127\376\232"},
+    {0x117B, "\010\127\376\231"},
+    {0x117C, "\010\127\376\233"},
+    {0x117D, "\010\127\377\310"},
+    {0x117E, "\010\127\377\307"},
+    {0x117F, "\010\127\377\336"},
+    {0x1180, "\010\127\377\341"},
+    {0x1181, "\010\127\377\340"},
+    {0x1182, "\010\127\377\342"},
+    {0x1183, "\010\127\377\337"},
+    {0x1184, "\010\127\374\143"},
+    {0x1185, "\010\127\374\144"},
+    {0x1186, "\010\127\377\320"},
+    {0x1187, "\010\127\377\321"},
+    {0x1188, "\010\127\374\142"},
+    {0x1189, "\010\127\376\251"},
+    {0x118A, "\010\127\376\255"},
+    {0x118B, "\010\127\376\252"},
+    {0x118C, "\010\127\376\254"},
+    {0x118D, "\010\127\376\253"},
+    {0x118E, "\010\127\377\312"},
+    {0x118F, "\010\127\377\313"},
+    {0x1190, "\010\127\377\315"},
+    {0x1191, "\010\127\374\140"},
+    {0x1192, "\010\127\374\141"},
+    {0x1193, "\010\127\377\314"},
+    {0x1194, "\010\127\374\137"},
+    {0x1195, "\010\127\377\343"},
+    {0x1196, "\010\127\377\344"},
+    {0x1197, "\010\127\377\345"},
+    {0x1198, "\010\127\375\330"},
+    {0x1199, "\010\127\375\333"},
+    {0x119A, "\010\127\375\334"},
+    {0x119B, "\010\127\375\332"},
+    {0x119C, "\010\127\375\335"},
+    {0x119D, "\010\127\375\331"},
+    {0x119E, "\010\127\373\035"},
+    {0x119F, "\010\127\374\330"},
+    {0x11A0, "\010\127\374\331"},
+    {0x11A1, "\010\127\374\327"},
+    {0x11A2, "\010\127\377\123"},
+    {0x11A8, "\010\103\371\155"},
     {0x11A9, "\010\103\372\157"},
     {0x11AA, "\010\103\372\302"},
-    {0x11AB, "\010\103\371\162"},
+    {0x11AB, "\010\103\371\163"},
     {0x11AC, "\010\103\372\316"},
     {0x11AD, "\010\103\372\315"},
-    {0x11AE, "\010\103\371\203"},
-    {0x11AF, "\010\103\371\171"},
+    {0x11AE, "\010\103\371\204"},
+    {0x11AF, "\010\103\371\172"},
     {0x11B0, "\010\103\372\342"},
     {0x11B1, "\010\103\372\343"},
     {0x11B2, "\010\103\372\345"},
@@ -4574,72 +4575,72 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x11B4, "\010\103\372\347"},
     {0x11B5, "\010\103\372\344"},
     {0x11B6, "\010\103\372\145"},
-    {0x11B7, "\010\103\371\160"},
-    {0x11B8, "\010\103\371\167"},
+    {0x11B7, "\010\103\371\161"},
+    {0x11B8, "\010\103\371\170"},
     {0x11B9, "\010\103\372\125"},
-    {0x11BA, "\010\103\371\173"},
+    {0x11BA, "\010\103\371\174"},
     {0x11BB, "\010\103\372\160"},
-    {0x11BC, "\010\103\371\151"},
-    {0x11BD, "\010\103\371\116"},
-    {0x11BE, "\010\103\371\200"},
-    {0x11BF, "\010\103\371\153"},
-    {0x11C0, "\010\103\371\177"},
-    {0x11C1, "\010\103\371\165"},
-    {0x11C2, "\010\103\371\147"},
-    {0x11C3, "\010\103\376\023"},
-    {0x11C4, "\010\103\376\024"},
-    {0x11C5, "\010\103\373\315"},
+    {0x11BC, "\010\103\371\152"},
+    {0x11BD, "\010\103\371\117"},
+    {0x11BE, "\010\103\371\201"},
+    {0x11BF, "\010\103\371\154"},
+    {0x11C0, "\010\103\371\200"},
+    {0x11C1, "\010\103\371\166"},
+    {0x11C2, "\010\103\371\150"},
+    {0x11C3, "\010\103\376\024"},
+    {0x11C4, "\010\103\376\025"},
+    {0x11C5, "\010\103\373\316"},
     {0x11C6, "\010\103\372\317"},
-    {0x11C7, "\010\103\373\317"},
-    {0x11C8, "\010\103\373\316"},
-    {0x11C9, "\010\103\376\205"},
-    {0x11CA, "\010\103\374\077"},
-    {0x11CB, "\010\103\377\202"},
-    {0x11CC, "\010\103\374\023"},
-    {0x11CD, "\010\103\374\024"},
-    {0x11CE, "\010\103\374\027"},
-    {0x11CF, "\010\103\377\020"},
-    {0x11D0, "\010\103\374\055"},
-    {0x11D1, "\010\103\377\014"},
-    {0x11D2, "\010\103\377\015"},
-    {0x11D3, "\010\103\374\026"},
-    {0x11D4, "\010\103\377\016"},
-    {0x11D5, "\010\103\377\013"},
-    {0x11D6, "\010\103\377\017"},
-    {0x11D7, "\010\103\374\025"},
-    {0x11D8, "\010\103\377\012"},
-    {0x11D9, "\010\103\374\030"},
-    {0x11DA, "\010\103\376\133"},
-    {0x11DB, "\010\103\376\134"},
+    {0x11C7, "\010\103\373\320"},
+    {0x11C8, "\010\103\373\317"},
+    {0x11C9, "\010\103\376\206"},
+    {0x11CA, "\010\103\374\100"},
+    {0x11CB, "\010\103\377\203"},
+    {0x11CC, "\010\103\374\024"},
+    {0x11CD, "\010\103\374\025"},
+    {0x11CE, "\010\103\374\030"},
+    {0x11CF, "\010\103\377\021"},
+    {0x11D0, "\010\103\374\056"},
+    {0x11D1, "\010\103\377\015"},
+    {0x11D2, "\010\103\377\016"},
+    {0x11D3, "\010\103\374\027"},
+    {0x11D4, "\010\103\377\017"},
+    {0x11D5, "\010\103\377\014"},
+    {0x11D6, "\010\103\377\020"},
+    {0x11D7, "\010\103\374\026"},
+    {0x11D8, "\010\103\377\013"},
+    {0x11D9, "\010\103\374\031"},
+    {0x11DA, "\010\103\376\134"},
+    {0x11DB, "\010\103\376\135"},
     {0x11DC, "\010\103\372\310"},
-    {0x11DD, "\010\103\373\301"},
-    {0x11DE, "\010\103\376\135"},
-    {0x11DF, "\010\103\373\300"},
-    {0x11E0, "\010\103\376\136"},
-    {0x11E1, "\010\103\376\132"},
+    {0x11DD, "\010\103\373\302"},
+    {0x11DE, "\010\103\376\136"},
+    {0x11DF, "\010\103\373\301"},
+    {0x11E0, "\010\103\376\137"},
+    {0x11E1, "\010\103\376\133"},
     {0x11E2, "\010\103\372\275"},
-    {0x11E3, "\010\103\376\325"},
-    {0x11E4, "\010\103\373\357"},
-    {0x11E5, "\010\103\376\323"},
+    {0x11E3, "\010\103\376\326"},
+    {0x11E4, "\010\103\373\360"},
+    {0x11E5, "\010\103\376\324"},
     {0x11E6, "\010\103\372\277"},
     {0x11E7, "\010\103\372\354"},
     {0x11E8, "\010\103\372\356"},
-    {0x11E9, "\010\103\374\046"},
+    {0x11E9, "\010\103\374\047"},
     {0x11EA, "\010\103\372\355"},
     {0x11EB, "\010\103\372\323"},
-    {0x11EC, "\010\103\373\243"},
-    {0x11ED, "\010\103\375\362"},
+    {0x11EC, "\010\103\373\244"},
+    {0x11ED, "\010\103\375\363"},
     {0x11EE, "\010\103\372\361"},
-    {0x11EF, "\010\103\375\354"},
+    {0x11EF, "\010\103\375\355"},
     {0x11F0, "\010\103\373\006"},
-    {0x11F1, "\010\103\374\135"},
-    {0x11F2, "\010\103\374\134"},
-    {0x11F3, "\010\103\373\344"},
+    {0x11F1, "\010\103\374\136"},
+    {0x11F2, "\010\103\374\135"},
+    {0x11F3, "\010\103\373\345"},
     {0x11F4, "\010\103\372\276"},
-    {0x11F5, "\010\103\375\306"},
-    {0x11F6, "\010\103\375\310"},
-    {0x11F7, "\010\103\375\305"},
-    {0x11F8, "\010\103\375\307"},
+    {0x11F5, "\010\103\375\307"},
+    {0x11F6, "\010\103\375\311"},
+    {0x11F7, "\010\103\375\306"},
+    {0x11F8, "\010\103\375\310"},
     {0x11F9, "\010\103\373\010"},
     {0x1E00, "\001\005\004\046\231\032"},
     {0x1E01, "\001\003\004\046\231\032"},
@@ -4795,7 +4796,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1E97, "\001\003\004\236\141"},
     {0x1E98, "\001\003\004\273\231\007\025"},
     {0x1E99, "\001\003\004\240\231\007\025"},
-    {0x1E9A, "\001\003\004\046\371\270\040\037"},
+    {0x1E9A, "\001\003\004\046\371\271\040\037"},
     {0x1EA0, "\001\005\004\046\027\032"},
     {0x1EA1, "\001\003\004\046\027\032"},
     {0x1EA2, "\001\005\004\046\100\007\025"},
@@ -5048,19 +5049,19 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1FAD, "\001\005\014\147\101\011\135\011\055\032"},
     {0x1FAE, "\001\005\014\147\115\011\165\011\055\032"},
     {0x1FAF, "\001\005\014\147\101\011\165\011\055\032"},
-    {0x1FB0, "\001\003\014\152\371\327"},
+    {0x1FB0, "\001\003\014\152\371\330"},
     {0x1FB1, "\001\003\014\152\161"},
     {0x1FB2, "\001\003\014\152\136\011\055\032"},
     {0x1FB3, "\001\003\014\152\055\032"},
     {0x1FB4, "\001\003\014\152\135\011\055\032"},
     {0x1FB6, "\001\003\014\152\165"},
     {0x1FB7, "\001\003\014\152\165\011\055\032"},
-    {0x1FB8, "\001\005\014\152\371\327"},
+    {0x1FB8, "\001\005\014\152\371\330"},
     {0x1FB9, "\001\005\014\152\161"},
     {0x1FBA, "\001\005\014\152\136"},
     {0x1FBB, "\001\005\014\152\135"},
     {0x1FBC, "\001\005\014\152\055\032"},
-    {0x1FBD, "\373\100"},
+    {0x1FBD, "\373\101"},
     {0x1FBE, "\055\032"},
     {0x1FBF, "\115"},
     {0x1FC0, "\165"},
@@ -5078,32 +5079,32 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1FCD, "\115\011\136"},
     {0x1FCE, "\115\011\135"},
     {0x1FCF, "\115\011\165"},
-    {0x1FD0, "\001\003\014\055\371\327"},
+    {0x1FD0, "\001\003\014\055\371\330"},
     {0x1FD1, "\001\003\014\055\161"},
     {0x1FD2, "\001\003\014\055\341\011\136"},
     {0x1FD3, "\001\003\014\055\341\011\135"},
     {0x1FD6, "\001\003\014\055\165"},
     {0x1FD7, "\001\003\014\055\341\011\165"},
-    {0x1FD8, "\001\005\014\055\371\327"},
+    {0x1FD8, "\001\005\014\055\371\330"},
     {0x1FD9, "\001\005\014\055\161"},
     {0x1FDA, "\001\005\014\055\136"},
     {0x1FDB, "\001\005\014\055\135"},
     {0x1FDD, "\101\011\136"},
     {0x1FDE, "\101\011\135"},
     {0x1FDF, "\101\011\165\277"},
-    {0x1FE0, "\001\003\014\214\371\327"},
+    {0x1FE0, "\001\003\014\214\371\330"},
     {0x1FE1, "\001\003\014\214\161"},
     {0x1FE2, "\001\003\014\214\341\011\136"},
     {0x1FE3, "\001\003\014\214\341\011\135"},
-    {0x1FE4, "\001\003\014\371\170\115"},
-    {0x1FE5, "\001\003\014\371\170\101"},
+    {0x1FE4, "\001\003\014\371\171\115"},
+    {0x1FE5, "\001\003\014\371\171\101"},
     {0x1FE6, "\001\003\014\214\165"},
     {0x1FE7, "\001\003\014\214\341\011\165"},
-    {0x1FE8, "\001\005\014\214\371\327"},
+    {0x1FE8, "\001\005\014\214\371\330"},
     {0x1FE9, "\001\005\014\214\161"},
     {0x1FEA, "\001\005\014\214\136"},
     {0x1FEB, "\001\005\014\214\135"},
-    {0x1FEC, "\001\005\014\371\170\101"},
+    {0x1FEC, "\001\005\014\371\171\101"},
     {0x1FED, "\341\011\136"},
     {0x1FEE, "\341\011\135"},
     {0x1FEF, "\136"},
@@ -5120,26 +5121,26 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x1FFD, "\135"},
     {0x1FFE, "\101"},
     {0x2000, "\372\237"},
-    {0x2001, "\371\221"},
-    {0x2002, "\375\130"},
-    {0x2003, "\375\006"},
-    {0x2004, "\372\372\012\371\221"},
-    {0x2005, "\372\141\012\371\221"},
-    {0x2006, "\372\154\012\371\221"},
-    {0x2007, "\371\025\373\327"},
-    {0x2008, "\371\025\371\310"},
-    {0x2009, "\371\025\373\165"},
-    {0x200A, "\371\025\377\235"},
-    {0x200B, "\371\025\232\056"},
-    {0x200C, "\374\314\232\056"},
-    {0x200D, "\373\263\232\056"},
+    {0x2001, "\371\222"},
+    {0x2002, "\375\131"},
+    {0x2003, "\375\007"},
+    {0x2004, "\372\372\012\371\222"},
+    {0x2005, "\372\141\012\371\222"},
+    {0x2006, "\372\154\012\371\222"},
+    {0x2007, "\371\026\373\330"},
+    {0x2008, "\371\026\371\311"},
+    {0x2009, "\371\026\373\166"},
+    {0x200A, "\371\026\377\236"},
+    {0x200B, "\371\026\232\056"},
+    {0x200C, "\374\315\232\056"},
+    {0x200D, "\373\264\232\056"},
     {0x200E, "\153\372\255"},
     {0x200F, "\153\372\244"},
-    {0x2010, "\264\371\225"},
-    {0x2011, "\264\371\225\373\263"},
-    {0x2012, "\371\071\373\327"},
-    {0x2013, "\371\071\372\237"},
-    {0x2014, "\371\071\371\221"},
+    {0x2010, "\264\371\226"},
+    {0x2011, "\264\371\226\373\264"},
+    {0x2012, "\371\072\373\330"},
+    {0x2013, "\371\072\372\237"},
+    {0x2014, "\371\072\371\222"},
     {0x2015, "\210\372\263"},
     {0x2016, "\051\212\224"},
     {0x2017, "\051\264\032"},
@@ -5151,50 +5152,50 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x201D, "\372\065\051"},
     {0x201E, "\372\066\051\300"},
     {0x201F, "\372\066\051\326\260"},
-    {0x2020, "\373\332"},
-    {0x2021, "\051\373\332"},
+    {0x2020, "\373\333"},
+    {0x2021, "\051\373\333"},
     {0x2022, "\372\136"},
-    {0x2023, "\372\136\371\325"},
+    {0x2023, "\372\136\371\326"},
     {0x2024, "\027\372\231\270"},
     {0x2025, "\027\372\231\051"},
-    {0x2026, "\220\012\374\062"},
-    {0x2027, "\027\012\375\067\012\376\152"},
+    {0x2026, "\220\012\374\063"},
+    {0x2027, "\027\012\375\070\012\376\153"},
     {0x2028, "\371\007\012\212"},
     {0x2029, "\371\007\012\372\324"},
-    {0x202A, "\373\151\372\255"},
-    {0x202B, "\373\151\372\244"},
-    {0x202C, "\375\163\012\373\171\375\145"},
-    {0x202D, "\373\173\372\255"},
-    {0x202E, "\373\173\372\244"},
-    {0x2030, "\015\335\371\157"},
-    {0x2031, "\015\335\354\371\157"},
-    {0x2032, "\371\064"},
-    {0x2033, "\051\371\064"},
-    {0x2034, "\371\047\371\064"},
-    {0x2035, "\371\064\336"},
-    {0x2036, "\051\371\064\336"},
-    {0x2037, "\371\047\371\064\336"},
-    {0x2038, "\375\031\373\111"},
+    {0x202A, "\373\152\372\255"},
+    {0x202B, "\373\152\372\244"},
+    {0x202C, "\375\164\012\373\172\375\146"},
+    {0x202D, "\373\174\372\255"},
+    {0x202E, "\373\174\372\244"},
+    {0x2030, "\015\335\371\160"},
+    {0x2031, "\015\335\354\371\160"},
+    {0x2032, "\371\065"},
+    {0x2033, "\051\371\065"},
+    {0x2034, "\371\050\371\065"},
+    {0x2035, "\371\065\336"},
+    {0x2036, "\051\371\065\336"},
+    {0x2037, "\371\050\371\065\336"},
+    {0x2038, "\375\032\373\112"},
     {0x2039, "\371\014\270\013\022\042"},
     {0x203A, "\371\014\270\013\022\037"},
-    {0x203B, "\153\012\377\031"},
-    {0x203C, "\051\027\371\131"},
-    {0x203D, "\027\375\212"},
+    {0x203B, "\153\012\377\032"},
+    {0x203C, "\051\027\371\132"},
+    {0x203D, "\027\375\213"},
     {0x203E, "\264\007\025"},
-    {0x203F, "\374\100\032"},
-    {0x2040, "\374\100\007\025"},
-    {0x2041, "\372\077\373\111"},
-    {0x2042, "\374\335"},
-    {0x2043, "\372\136\264\371\225"},
-    {0x2044, "\210\373\177"},
+    {0x203F, "\374\101\032"},
+    {0x2040, "\374\101\007\025"},
+    {0x2041, "\372\077\373\112"},
+    {0x2042, "\374\336"},
+    {0x2043, "\372\136\264\371\226"},
+    {0x2044, "\210\373\200"},
     {0x2045, "\100\042\130\372\124"},
     {0x2046, "\100\173\130\372\124"},
-    {0x206A, "\373\236\373\114\374\063"},
-    {0x206B, "\373\024\373\114\374\063"},
-    {0x206C, "\373\236\012\373\170\002"},
-    {0x206D, "\373\024\012\373\170\002"},
-    {0x206E, "\374\066\012\373\172\012\017\376\174"},
-    {0x206F, "\374\066\012\373\172\012\017\376\212"},
+    {0x206A, "\373\237\373\115\374\064"},
+    {0x206B, "\373\025\373\115\374\064"},
+    {0x206C, "\373\237\012\373\171\002"},
+    {0x206D, "\373\025\012\373\171\002"},
+    {0x206E, "\374\067\012\373\173\012\017\376\175"},
+    {0x206F, "\374\067\012\373\173\012\017\376\213"},
     {0x2070, "\347\311"},
     {0x2074, "\347\200"},
     {0x2075, "\347\203"},
@@ -5203,7 +5204,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2078, "\347\204"},
     {0x2079, "\347\235"},
     {0x207A, "\347\134\162"},
-    {0x207B, "\347\134\371\036"},
+    {0x207B, "\347\134\371\037"},
     {0x207C, "\347\134\142"},
     {0x207D, "\347\371\004\042"},
     {0x207E, "\347\371\004\037"},
@@ -5219,97 +5220,97 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2088, "\357\204"},
     {0x2089, "\357\235"},
     {0x208A, "\357\134\162"},
-    {0x208B, "\357\134\371\036"},
+    {0x208B, "\357\134\371\037"},
     {0x208C, "\357\134\142"},
     {0x208D, "\357\371\004\042"},
     {0x208E, "\357\371\004\037"},
-    {0x20A0, "\015\377\326"},
-    {0x20A1, "\015\373\073"},
-    {0x20A2, "\015\375\076"},
-    {0x20A3, "\015\375\237\375\240"},
-    {0x20A4, "\015\376\057"},
-    {0x20A5, "\015\376\125"},
-    {0x20A6, "\015\376\171"},
-    {0x20A7, "\015\376\307"},
+    {0x20A0, "\015\377\327"},
+    {0x20A1, "\015\373\074"},
+    {0x20A2, "\015\375\077"},
+    {0x20A3, "\015\375\240\375\241"},
+    {0x20A4, "\015\376\060"},
+    {0x20A5, "\015\376\126"},
+    {0x20A6, "\015\376\172"},
+    {0x20A7, "\015\376\310"},
     {0x20A8, "\015\372\350"},
-    {0x20A9, "\015\374\130"},
-    {0x20AA, "\015\376\220\377\071"},
-    {0x20AB, "\015\375\153"},
-    {0x20AC, "\015\375\210"},
-    {0x20D0, "\023\374\113\013\022\042\007\025"},
-    {0x20D1, "\023\374\113\013\022\037\007\025"},
-    {0x20D2, "\023\212\224\372\103\371\266"},
-    {0x20D3, "\023\212\224\372\225\371\266"},
-    {0x20D4, "\023\043\007\371\043\371\311\007\025"},
-    {0x20D5, "\023\043\007\371\043\223\007\025"},
+    {0x20A9, "\015\374\131"},
+    {0x20AA, "\015\376\221\377\072"},
+    {0x20AB, "\015\375\154"},
+    {0x20AC, "\015\375\211"},
+    {0x20D0, "\023\374\114\013\022\042\007\025"},
+    {0x20D1, "\023\374\114\013\022\037\007\025"},
+    {0x20D2, "\023\212\224\372\103\371\267"},
+    {0x20D3, "\023\212\224\372\225\371\267"},
+    {0x20D4, "\023\043\007\371\044\371\312\007\025"},
+    {0x20D5, "\023\043\007\371\044\223\007\025"},
     {0x20D6, "\023\043\013\022\042\007\025"},
     {0x20D7, "\023\043\013\022\037\007\025"},
     {0x20D8, "\023\231\372\050"},
-    {0x20D9, "\023\231\007\371\043\223\372\050"},
-    {0x20DA, "\023\231\007\371\043\371\311\372\050"},
+    {0x20D9, "\023\231\007\371\044\223\372\050"},
+    {0x20DA, "\023\231\007\371\044\371\312\372\050"},
     {0x20DB, "\023\131\220\007\025"},
     {0x20DC, "\023\200\220\007\025"},
     {0x20DD, "\023\252\372\061"},
     {0x20DE, "\023\021\372\061"},
-    {0x20DF, "\023\371\110\372\061"},
-    {0x20E0, "\023\252\372\061\011\210\361\371\274"},
+    {0x20DF, "\023\371\111\372\061"},
+    {0x20E0, "\023\252\372\061\011\210\361\371\275"},
     {0x20E1, "\023\043\042\011\037\007\025"},
-    {0x2100, "\015\371\216\375\044\012"},
-    {0x2101, "\015\374\342\374\372\377\111\012"},
-    {0x2102, "\241\005\371\213"},
-    {0x2103, "\372\236\375\022"},
+    {0x2100, "\015\371\217\375\045\012"},
+    {0x2101, "\015\374\343\374\373\377\112\012"},
+    {0x2102, "\241\005\371\214"},
+    {0x2103, "\372\236\375\023"},
     {0x2104, "\015\212\012\372\213"},
-    {0x2105, "\015\372\037\375\013"},
-    {0x2106, "\015\375\005\377\236"},
-    {0x2107, "\372\223\375\110"},
-    {0x2108, "\377\055"},
-    {0x2109, "\372\236\375\217"},
+    {0x2105, "\015\372\037\375\014"},
+    {0x2106, "\015\375\006\377\237"},
+    {0x2107, "\372\223\375\111"},
+    {0x2108, "\377\056"},
+    {0x2109, "\372\236\375\220"},
     {0x210A, "\003\227\012\371\005"},
     {0x210B, "\005\230\012\371\005"},
-    {0x210C, "\005\230\371\363"},
-    {0x210D, "\230\005\371\213"},
-    {0x210E, "\372\223\012\373\367"},
-    {0x210F, "\372\223\012\373\367\371\252\154\371\307"},
+    {0x210C, "\005\230\371\364"},
+    {0x210D, "\230\005\371\214"},
+    {0x210E, "\372\223\012\373\370"},
+    {0x210F, "\372\223\012\373\370\371\253\154\371\310"},
     {0x2110, "\005\072\012\371\005"},
-    {0x2111, "\005\072\371\363"},
+    {0x2111, "\005\072\371\364"},
     {0x2112, "\005\167\012\371\005"},
     {0x2113, "\003\167\012\371\005"},
     {0x2114, "\015\167\275\175"},
-    {0x2115, "\213\005\371\213"},
-    {0x2116, "\015\373\330"},
-    {0x2117, "\373\076\012\376\315"},
+    {0x2115, "\213\005\371\214"},
+    {0x2116, "\015\373\331"},
+    {0x2117, "\373\077\012\376\316"},
     {0x2118, "\005\351\012\371\005"},
-    {0x2119, "\351\005\371\213"},
-    {0x211A, "\371\065\005\371\213"},
+    {0x2119, "\351\005\371\214"},
+    {0x211A, "\371\066\005\371\214"},
     {0x211B, "\005\150\012\371\005"},
-    {0x211C, "\005\150\371\363"},
-    {0x211D, "\150\005\371\213"},
-    {0x211E, "\376\245\374\270"},
-    {0x211F, "\377\032"},
-    {0x2120, "\015\372\037\153\012\377\066"},
+    {0x211C, "\005\150\371\364"},
+    {0x211D, "\150\005\371\214"},
+    {0x211E, "\376\246\374\271"},
+    {0x211F, "\377\033"},
+    {0x2120, "\015\372\037\153\012\377\067"},
     {0x2121, "\015\372\170"},
-    {0x2122, "\015\372\037\153\012\375\042"},
-    {0x2123, "\377\251"},
-    {0x2124, "\243\005\371\213"},
-    {0x2125, "\015\376\236"},
+    {0x2122, "\015\372\037\153\012\375\043"},
+    {0x2123, "\377\252"},
+    {0x2124, "\243\005\371\214"},
+    {0x2125, "\015\376\237"},
     {0x2126, "\015\372\117"},
     {0x2127, "\015\372\117\371\016"},
-    {0x2128, "\005\243\371\363"},
+    {0x2128, "\005\243\371\364"},
     {0x2129, "\003\014\055\260"},
-    {0x212A, "\015\376\010"},
-    {0x212B, "\015\374\307"},
+    {0x212A, "\015\376\011"},
+    {0x212B, "\015\374\310"},
     {0x212C, "\005\275\012\371\005"},
-    {0x212D, "\005\241\371\363"},
-    {0x212E, "\015\375\206"},
+    {0x212D, "\005\241\371\364"},
+    {0x212E, "\015\375\207"},
     {0x212F, "\003\060\012\371\005"},
     {0x2130, "\005\060\012\371\005"},
     {0x2131, "\005\355\012\371\005"},
     {0x2132, "\005\355\260"},
     {0x2133, "\005\256\012\371\005"},
     {0x2134, "\003\050\012\371\005"},
-    {0x2135, "\015\374\276"},
+    {0x2135, "\015\374\277"},
     {0x2136, "\015\372\044"},
-    {0x2137, "\015\375\253"},
+    {0x2137, "\015\375\254"},
     {0x2138, "\015\372\052"},
     {0x2153, "\356\132\372\372"},
     {0x2154, "\356\154\372\372"},
@@ -5318,12 +5319,12 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2157, "\356\131\372\220"},
     {0x2158, "\356\200\372\220"},
     {0x2159, "\356\132\372\154"},
-    {0x215A, "\356\203\377\074"},
-    {0x215B, "\356\132\371\366"},
-    {0x215C, "\356\131\371\104"},
-    {0x215D, "\356\203\371\104"},
-    {0x215E, "\356\221\371\104"},
-    {0x215F, "\371\305\373\177\132"},
+    {0x215A, "\356\203\377\075"},
+    {0x215B, "\356\132\371\367"},
+    {0x215C, "\356\131\371\105"},
+    {0x215D, "\356\203\371\105"},
+    {0x215E, "\356\221\371\105"},
+    {0x215F, "\371\306\373\200\132"},
     {0x2160, "\017\215\132"},
     {0x2161, "\017\215\154"},
     {0x2162, "\017\215\131"},
@@ -5334,12 +5335,12 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2167, "\017\215\204"},
     {0x2168, "\017\215\235"},
     {0x2169, "\017\215\354"},
-    {0x216A, "\017\215\371\243"},
-    {0x216B, "\017\215\371\140"},
-    {0x216C, "\017\215\373\072"},
-    {0x216D, "\017\215\371\222"},
-    {0x216E, "\017\215\203\373\063"},
-    {0x216F, "\017\215\371\157"},
+    {0x216A, "\017\215\371\244"},
+    {0x216B, "\017\215\371\141"},
+    {0x216C, "\017\215\373\073"},
+    {0x216D, "\017\215\371\223"},
+    {0x216E, "\017\215\203\373\064"},
+    {0x216F, "\017\215\371\160"},
     {0x2170, "\017\215\003\132"},
     {0x2171, "\017\215\003\154"},
     {0x2172, "\017\215\003\131"},
@@ -5350,214 +5351,214 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2177, "\017\215\003\204"},
     {0x2178, "\017\215\003\235"},
     {0x2179, "\017\215\003\354"},
-    {0x217A, "\017\215\003\371\243"},
-    {0x217B, "\017\215\003\371\140"},
-    {0x217C, "\017\215\003\373\072"},
-    {0x217D, "\017\215\003\371\222"},
-    {0x217E, "\017\215\003\203\373\063"},
-    {0x217F, "\017\215\003\371\157"},
-    {0x2180, "\017\215\371\157\241\225"},
-    {0x2181, "\017\215\203\371\157"},
-    {0x2182, "\017\215\354\371\157"},
+    {0x217A, "\017\215\003\371\244"},
+    {0x217B, "\017\215\003\371\141"},
+    {0x217C, "\017\215\003\373\073"},
+    {0x217D, "\017\215\003\371\223"},
+    {0x217E, "\017\215\003\203\373\064"},
+    {0x217F, "\017\215\003\371\160"},
+    {0x2180, "\017\215\371\160\241\225"},
+    {0x2181, "\017\215\203\371\160"},
+    {0x2182, "\017\215\354\371\160"},
     {0x2190, "\043\013\022\042"},
     {0x2191, "\043\013\035\065"},
     {0x2192, "\043\013\022\037"},
     {0x2193, "\043\013\035\061"},
     {0x2194, "\043\042\011\037"},
     {0x2195, "\043\372\262"},
-    {0x2196, "\043\371\375"},
-    {0x2197, "\043\371\241"},
-    {0x2198, "\043\371\251"},
+    {0x2196, "\043\371\376"},
+    {0x2197, "\043\371\242"},
+    {0x2198, "\043\371\252"},
     {0x2199, "\043\372\162"},
-    {0x219A, "\043\013\022\042\371\217"},
-    {0x219B, "\043\013\022\037\371\217"},
+    {0x219A, "\043\013\022\042\371\220"},
+    {0x219B, "\043\013\022\037\371\220"},
     {0x219C, "\043\013\022\042\372\120"},
     {0x219D, "\043\013\022\037\372\120"},
     {0x219E, "\043\013\022\042\040\154\372\127"},
     {0x219F, "\043\013\035\065\040\154\372\127"},
     {0x21A0, "\043\013\022\037\040\154\372\127"},
     {0x21A1, "\043\013\035\061\040\154\372\127"},
-    {0x21A2, "\043\013\022\042\040\371\100"},
-    {0x21A3, "\043\013\022\037\040\371\100"},
-    {0x21A4, "\043\371\132\307\013\022\042"},
-    {0x21A5, "\043\371\132\307\013\035\065"},
-    {0x21A6, "\043\371\132\307\013\022\037"},
-    {0x21A7, "\043\371\132\307\013\035\061"},
-    {0x21A8, "\043\372\262\371\252\374\357"},
+    {0x21A2, "\043\013\022\042\040\371\101"},
+    {0x21A3, "\043\013\022\037\040\371\101"},
+    {0x21A4, "\043\371\133\307\013\022\042"},
+    {0x21A5, "\043\371\133\307\013\035\065"},
+    {0x21A6, "\043\371\133\307\013\022\037"},
+    {0x21A7, "\043\371\133\307\013\035\061"},
+    {0x21A8, "\043\372\262\371\253\374\360"},
     {0x21A9, "\043\013\022\042\130\100"},
     {0x21AA, "\043\013\022\037\130\100"},
     {0x21AB, "\043\013\022\042\130\372\210"},
     {0x21AC, "\043\013\022\037\130\372\210"},
-    {0x21AD, "\043\373\201\372\120"},
-    {0x21AE, "\043\373\201\371\217"},
-    {0x21AF, "\043\013\035\061\007\377\322"},
+    {0x21AD, "\043\373\202\372\120"},
+    {0x21AE, "\043\373\202\371\220"},
+    {0x21AF, "\043\013\035\061\007\377\323"},
     {0x21B0, "\043\013\035\065\130\302\013\022\042"},
     {0x21B1, "\043\013\035\065\130\302\013\022\037"},
     {0x21B2, "\043\013\035\061\130\302\013\022\042"},
     {0x21B3, "\043\013\035\061\130\302\013\022\037"},
     {0x21B4, "\043\013\022\037\130\222\013\035\061"},
     {0x21B5, "\043\013\035\061\130\222\013\022\042"},
-    {0x21B6, "\043\374\042\007\371\043\371\311\007\025"},
-    {0x21B7, "\043\374\042\007\371\043\223\007\025"},
-    {0x21B8, "\043\371\375\371\367\377\237\210\372\103"},
-    {0x21B9, "\043\013\022\042\371\367\132\307\371\244\043\013\022\037\371\367\132\307"},
-    {0x21BA, "\043\007\371\043\371\311\040\252\371\306"},
-    {0x21BB, "\043\007\371\043\223\040\252\371\306"},
-    {0x21BC, "\371\026\013\022\042\130\371\136\013\035\065"},
-    {0x21BD, "\371\026\013\022\042\130\371\136\013\035\061"},
-    {0x21BE, "\371\026\013\035\065\130\371\136\013\022\037"},
-    {0x21BF, "\371\026\013\035\065\130\371\136\013\022\042"},
-    {0x21C0, "\371\026\013\022\037\130\371\136\013\035\065"},
-    {0x21C1, "\371\026\013\022\037\130\371\136\013\035\061"},
-    {0x21C2, "\371\026\013\035\061\130\371\136\013\022\037"},
-    {0x21C3, "\371\026\013\035\061\130\371\136\013\022\042"},
-    {0x21C4, "\043\013\022\037\371\244\043\013\022\042"},
-    {0x21C5, "\043\013\035\065\040\042\373\113\043\013\035\061"},
-    {0x21C6, "\043\013\022\042\371\244\043\013\022\037"},
+    {0x21B6, "\043\374\043\007\371\044\371\312\007\025"},
+    {0x21B7, "\043\374\043\007\371\044\223\007\025"},
+    {0x21B8, "\043\371\376\371\370\377\240\210\372\103"},
+    {0x21B9, "\043\013\022\042\371\370\132\307\371\245\043\013\022\037\371\370\132\307"},
+    {0x21BA, "\043\007\371\044\371\312\040\252\371\307"},
+    {0x21BB, "\043\007\371\044\223\040\252\371\307"},
+    {0x21BC, "\371\027\013\022\042\130\371\137\013\035\065"},
+    {0x21BD, "\371\027\013\022\042\130\371\137\013\035\061"},
+    {0x21BE, "\371\027\013\035\065\130\371\137\013\022\037"},
+    {0x21BF, "\371\027\013\035\065\130\371\137\013\022\042"},
+    {0x21C0, "\371\027\013\022\037\130\371\137\013\035\065"},
+    {0x21C1, "\371\027\013\022\037\130\371\137\013\035\061"},
+    {0x21C2, "\371\027\013\035\061\130\371\137\013\022\037"},
+    {0x21C3, "\371\027\013\035\061\130\371\137\013\022\042"},
+    {0x21C4, "\043\013\022\037\371\245\043\013\022\042"},
+    {0x21C5, "\043\013\035\065\040\042\373\114\043\013\035\061"},
+    {0x21C6, "\043\013\022\042\371\245\043\013\022\037"},
     {0x21C7, "\372\121\012\372\063\013\022\042"},
     {0x21C8, "\372\121\012\372\063\013\035\065"},
     {0x21C9, "\372\121\012\372\063\013\022\037"},
     {0x21CA, "\372\121\012\372\063\013\035\061"},
-    {0x21CB, "\371\026\013\022\042\371\244\371\026\013\022\037"},
-    {0x21CC, "\371\026\013\022\037\371\244\371\026\013\022\042"},
-    {0x21CD, "\051\043\013\022\042\371\217"},
-    {0x21CE, "\051\043\042\011\037\371\217"},
-    {0x21CF, "\051\043\013\022\037\371\217"},
+    {0x21CB, "\371\027\013\022\042\371\245\371\027\013\022\037"},
+    {0x21CC, "\371\027\013\022\037\371\245\371\027\013\022\042"},
+    {0x21CD, "\051\043\013\022\042\371\220"},
+    {0x21CE, "\051\043\042\011\037\371\220"},
+    {0x21CF, "\051\043\013\022\037\371\220"},
     {0x21D0, "\051\043\013\022\042"},
     {0x21D1, "\051\043\013\035\065"},
     {0x21D2, "\051\043\013\022\037"},
     {0x21D3, "\051\043\013\035\061"},
     {0x21D4, "\051\043\042\011\037"},
     {0x21D5, "\051\043\372\262"},
-    {0x21D6, "\051\043\371\375"},
-    {0x21D7, "\051\043\371\241"},
-    {0x21D8, "\051\043\371\251"},
+    {0x21D6, "\051\043\371\376"},
+    {0x21D7, "\051\043\371\242"},
+    {0x21D8, "\051\043\371\252"},
     {0x21D9, "\051\043\372\162"},
-    {0x21DA, "\371\047\043\013\022\042"},
-    {0x21DB, "\371\047\043\013\022\037"},
-    {0x21DC, "\043\013\022\042\007\374\101"},
-    {0x21DD, "\043\013\022\037\007\374\101"},
+    {0x21DA, "\371\050\043\013\022\042"},
+    {0x21DB, "\371\050\043\013\022\037"},
+    {0x21DC, "\043\013\022\042\007\374\102"},
+    {0x21DD, "\043\013\022\037\007\374\102"},
     {0x21DE, "\043\013\035\065\130\051\210"},
     {0x21DF, "\043\013\035\061\130\051\210"},
     {0x21E0, "\043\372\131\013\022\042"},
     {0x21E1, "\043\372\131\013\035\065"},
     {0x21E2, "\043\372\131\013\022\037"},
     {0x21E3, "\043\372\131\013\035\061"},
-    {0x21E4, "\043\013\022\042\371\367\132\307"},
-    {0x21E5, "\043\013\022\037\371\367\132\307"},
-    {0x21E6, "\043\371\333\013\022\042"},
-    {0x21E7, "\043\371\333\013\035\065"},
-    {0x21E8, "\043\371\333\013\022\037"},
-    {0x21E9, "\043\371\333\013\035\061"},
-    {0x21EA, "\043\371\333\013\035\065\040\376\273\371\132\307"},
-    {0x2200, "\335\377\212"},
-    {0x2201, "\375\043"},
-    {0x2202, "\375\165\376\272"},
-    {0x2203, "\373\235\375\215"},
-    {0x2204, "\373\235\376\166\362"},
-    {0x2205, "\375\177\377\255"},
-    {0x2206, "\375\340"},
-    {0x2207, "\376\170"},
-    {0x2208, "\373\032\040"},
-    {0x2209, "\376\164\362\040"},
-    {0x220A, "\144\373\032\040"},
-    {0x220B, "\371\265\371\074\373\017"},
-    {0x220C, "\371\112\371\265\362\371\074\373\017"},
-    {0x220D, "\144\371\265\371\074\373\017"},
-    {0x220E, "\375\020\376\365\375\220\375\162"},
-    {0x220F, "\371\312\012\022\371\227"},
-    {0x2210, "\375\060\012\022\371\227"},
-    {0x2211, "\377\112\012\022\371\227"},
-    {0x2212, "\134\371\036"},
-    {0x2213, "\134\376\144"},
-    {0x2214, "\162\371\245"},
+    {0x21E4, "\043\013\022\042\371\370\132\307"},
+    {0x21E5, "\043\013\022\037\371\370\132\307"},
+    {0x21E6, "\043\371\334\013\022\042"},
+    {0x21E7, "\043\371\334\013\035\065"},
+    {0x21E8, "\043\371\334\013\022\037"},
+    {0x21E9, "\043\371\334\013\035\061"},
+    {0x21EA, "\043\371\334\013\035\065\040\376\274\371\133\307"},
+    {0x2200, "\335\377\213"},
+    {0x2201, "\375\044"},
+    {0x2202, "\375\166\376\273"},
+    {0x2203, "\373\236\375\216"},
+    {0x2204, "\373\236\376\167\362"},
+    {0x2205, "\375\200\377\256"},
+    {0x2206, "\375\341"},
+    {0x2207, "\376\171"},
+    {0x2208, "\373\033\040"},
+    {0x2209, "\376\165\362\040"},
+    {0x220A, "\144\373\033\040"},
+    {0x220B, "\371\266\371\075\373\017"},
+    {0x220C, "\371\113\371\266\362\371\075\373\017"},
+    {0x220D, "\144\371\266\371\075\373\017"},
+    {0x220E, "\375\021\376\366\375\221\375\163"},
+    {0x220F, "\371\313\012\022\371\230"},
+    {0x2210, "\375\061\012\022\371\230"},
+    {0x2211, "\377\113\012\022\371\230"},
+    {0x2212, "\134\371\037"},
+    {0x2213, "\134\376\145"},
+    {0x2214, "\162\371\246"},
     {0x2215, "\210\361\012\372\242"},
-    {0x2216, "\373\132\375\107"},
-    {0x2217, "\371\031\371\011"},
-    {0x2218, "\371\031\231"},
-    {0x2219, "\371\031\372\136"},
-    {0x221A, "\372\335\371\264"},
-    {0x221B, "\372\335\375\077"},
-    {0x221C, "\372\335\374\007"},
-    {0x221D, "\376\353\040"},
-    {0x221E, "\375\342"},
-    {0x221F, "\371\262\173"},
-    {0x2220, "\371\262"},
-    {0x2221, "\371\262\373\275"},
-    {0x2222, "\371\262\377\120"},
-    {0x2223, "\371\360\132\373\134\012"},
-    {0x2224, "\376\165\362\132\373\134\012"},
+    {0x2216, "\373\133\375\110"},
+    {0x2217, "\371\032\371\011"},
+    {0x2218, "\371\032\231"},
+    {0x2219, "\371\032\372\136"},
+    {0x221A, "\372\335\371\265"},
+    {0x221B, "\372\335\375\100"},
+    {0x221C, "\372\335\374\010"},
+    {0x221D, "\376\354\040"},
+    {0x221E, "\375\343"},
+    {0x221F, "\371\263\173"},
+    {0x2220, "\371\263"},
+    {0x2221, "\371\263\373\276"},
+    {0x2222, "\371\263\377\121"},
+    {0x2223, "\371\361\132\373\135\012"},
+    {0x2224, "\376\166\362\132\373\135\012"},
     {0x2225, "\372\325\040"},
     {0x2226, "\334\372\325\040"},
-    {0x2227, "\011\371\300"},
-    {0x2228, "\114\371\300"},
+    {0x2227, "\011\371\301"},
+    {0x2228, "\114\371\301"},
     {0x2229, "\372\270"},
     {0x222A, "\372\376"},
-    {0x222B, "\371\105"},
-    {0x222C, "\371\105\051"},
-    {0x222D, "\371\105\371\047"},
-    {0x222E, "\371\105\012\371\012"},
-    {0x222F, "\371\105\012\377\131"},
-    {0x2230, "\371\105\012\377\270"},
-    {0x2231, "\371\105\007\371\043\223"},
-    {0x2232, "\371\105\012\371\012\007\371\043\223"},
-    {0x2233, "\371\105\012\371\012\007\371\043\371\311"},
-    {0x2234, "\371\041\375\054"},
-    {0x2235, "\376\270\306"},
-    {0x2236, "\376\373"},
-    {0x2237, "\373\377"},
-    {0x2238, "\371\036\371\245"},
-    {0x2239, "\375\214"},
-    {0x223A, "\373\377\375\267"},
-    {0x223B, "\375\311"},
-    {0x223C, "\371\031\143"},
-    {0x223D, "\371\031\143\371\016"},
+    {0x222B, "\371\106"},
+    {0x222C, "\371\106\051"},
+    {0x222D, "\371\106\371\050"},
+    {0x222E, "\371\106\012\371\012"},
+    {0x222F, "\371\106\012\377\132"},
+    {0x2230, "\371\106\012\377\271"},
+    {0x2231, "\371\106\007\371\044\223"},
+    {0x2232, "\371\106\012\371\012\007\371\044\223"},
+    {0x2233, "\371\106\012\371\012\007\371\044\371\312"},
+    {0x2234, "\371\042\375\055"},
+    {0x2235, "\376\271\306"},
+    {0x2236, "\376\374"},
+    {0x2237, "\374\001"},
+    {0x2238, "\371\037\371\246"},
+    {0x2239, "\375\215"},
+    {0x223A, "\374\001\375\270"},
+    {0x223B, "\375\312"},
+    {0x223C, "\371\032\143"},
+    {0x223D, "\371\032\143\371\016"},
     {0x223E, "\207\372\224\371\016"},
-    {0x223F, "\377\072"},
-    {0x2240, "\371\312\375\071"},
+    {0x223F, "\377\073"},
+    {0x2240, "\371\313\375\072"},
     {0x2241, "\334\143"},
-    {0x2242, "\371\036\143"},
-    {0x2243, "\373\037\142\040"},
-    {0x2244, "\334\373\037\142\040"},
-    {0x2245, "\371\334\142\040"},
-    {0x2246, "\371\334\371\111\334\372\365\142\040"},
-    {0x2247, "\216\371\334\216\372\365\142\040"},
+    {0x2242, "\371\037\143"},
+    {0x2243, "\373\040\142\040"},
+    {0x2244, "\334\373\040\142\040"},
+    {0x2245, "\371\335\142\040"},
+    {0x2246, "\371\335\371\112\334\372\365\142\040"},
+    {0x2247, "\216\371\335\216\372\365\142\040"},
     {0x2248, "\372\331\142\040"},
     {0x2249, "\334\372\331\142\040"},
     {0x224A, "\372\331\142\114\142\040"},
-    {0x224B, "\371\047\143"},
-    {0x224C, "\375\200\142\040"},
+    {0x224B, "\371\050\143"},
+    {0x224C, "\375\201\142\040"},
     {0x224D, "\371\010\040"},
-    {0x224E, "\373\220\371\010\040"},
-    {0x224F, "\373\132\052"},
-    {0x2250, "\377\174\013\022\376\055"},
-    {0x2251, "\373\220\142\040"},
-    {0x2252, "\371\334\142\040\114\371\232\012"},
-    {0x2253, "\371\232\012\114\371\334\142\040"},
-    {0x2254, "\371\347\142"},
-    {0x2255, "\142\371\347"},
-    {0x2256, "\231\371\076\142"},
+    {0x224E, "\373\221\371\010\040"},
+    {0x224F, "\373\133\052"},
+    {0x2250, "\377\175\013\022\376\056"},
+    {0x2251, "\373\221\142\040"},
+    {0x2252, "\371\335\142\040\114\371\233\012"},
+    {0x2253, "\371\233\012\114\371\335\142\040"},
+    {0x2254, "\371\350\142"},
+    {0x2255, "\142\371\350"},
+    {0x2256, "\231\371\077\142"},
     {0x2257, "\142\130\231\007\025"},
-    {0x2258, "\375\063\040"},
-    {0x2259, "\375\205"},
-    {0x225A, "\377\332\040"},
+    {0x2258, "\375\064\040"},
+    {0x2259, "\375\206"},
+    {0x225A, "\377\333\040"},
     {0x225B, "\142\130\303\007\025"},
-    {0x225C, "\142\371\267"},
-    {0x225D, "\142\371\041\375\161\040"},
-    {0x225E, "\373\275\371\041"},
-    {0x225F, "\377\327\007\375\156"},
+    {0x225C, "\142\371\270"},
+    {0x225D, "\142\371\042\375\162\040"},
+    {0x225E, "\373\276\371\042"},
+    {0x225F, "\377\330\007\375\157"},
     {0x2260, "\334\142\040"},
-    {0x2261, "\373\233\040"},
-    {0x2262, "\334\373\233\040"},
+    {0x2261, "\373\234\040"},
+    {0x2262, "\334\373\234\040"},
     {0x2263, "\372\365\371\010\040"},
     {0x2264, "\162\144\114\142\040"},
     {0x2265, "\162\262\114\142\040"},
-    {0x2266, "\162\144\306\371\244\142\040"},
-    {0x2267, "\162\262\306\371\244\142\040"},
-    {0x2268, "\162\144\371\111\334\142\040"},
-    {0x2269, "\162\262\371\111\334\142\040"},
-    {0x226A, "\373\045\162\144\306"},
-    {0x226B, "\373\045\162\262\306"},
+    {0x2266, "\162\144\306\371\245\142\040"},
+    {0x2267, "\162\262\306\371\245\142\040"},
+    {0x2268, "\162\144\371\112\334\142\040"},
+    {0x2269, "\162\262\371\112\334\142\040"},
+    {0x226A, "\373\046\162\144\306"},
+    {0x226B, "\373\046\162\262\306"},
     {0x226C, "\052"},
     {0x226D, "\334\371\010\040"},
     {0x226E, "\362\162\144\306"},
@@ -5572,296 +5573,296 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2277, "\162\262\114\162\144\306"},
     {0x2278, "\216\162\144\216\162\262\306"},
     {0x2279, "\216\162\262\216\162\144\306"},
-    {0x227A, "\372\010"},
-    {0x227B, "\371\322"},
-    {0x227C, "\372\010\114\371\360\142\040"},
-    {0x227D, "\371\322\114\371\360\142\040"},
-    {0x227E, "\372\010\114\371\360\371\010\040"},
-    {0x227F, "\371\322\114\371\360\371\010\040"},
-    {0x2280, "\371\112\372\010\362"},
-    {0x2281, "\371\112\371\322\362"},
-    {0x2282, "\371\321\012"},
-    {0x2283, "\371\323\012"},
-    {0x2284, "\362\132\371\321\012"},
-    {0x2285, "\362\132\371\323\012"},
-    {0x2286, "\371\321\114\142\040"},
-    {0x2287, "\371\323\114\142\040"},
-    {0x2288, "\216\132\371\321\216\142\040"},
-    {0x2289, "\216\132\371\323\216\142\040"},
-    {0x228A, "\371\321\371\111\334\142\040"},
-    {0x228B, "\371\323\371\111\334\142\040"},
+    {0x227A, "\372\011"},
+    {0x227B, "\371\323"},
+    {0x227C, "\372\011\114\371\361\142\040"},
+    {0x227D, "\371\323\114\371\361\142\040"},
+    {0x227E, "\372\011\114\371\361\371\010\040"},
+    {0x227F, "\371\323\114\371\361\371\010\040"},
+    {0x2280, "\371\113\372\011\362"},
+    {0x2281, "\371\113\371\323\362"},
+    {0x2282, "\371\322\012"},
+    {0x2283, "\371\324\012"},
+    {0x2284, "\362\132\371\322\012"},
+    {0x2285, "\362\132\371\324\012"},
+    {0x2286, "\371\322\114\142\040"},
+    {0x2287, "\371\324\114\142\040"},
+    {0x2288, "\216\132\371\322\216\142\040"},
+    {0x2289, "\216\132\371\324\216\142\040"},
+    {0x228A, "\371\322\371\112\334\142\040"},
+    {0x228B, "\371\324\371\112\334\142\040"},
     {0x228C, "\372\312"},
     {0x228D, "\372\112\012\372\312"},
     {0x228E, "\372\376\012\372\312"},
-    {0x228F, "\371\232\371\264\012"},
-    {0x2290, "\372\002\021\012"},
-    {0x2291, "\371\232\371\264\114\142\040"},
-    {0x2292, "\372\002\021\114\142\040"},
-    {0x2293, "\375\026\021"},
-    {0x2294, "\375\066\371\264"},
+    {0x228F, "\371\233\371\265\012"},
+    {0x2290, "\372\003\021\012"},
+    {0x2291, "\371\233\371\265\114\142\040"},
+    {0x2292, "\372\003\021\114\142\040"},
+    {0x2293, "\375\027\021"},
+    {0x2294, "\375\067\371\265"},
     {0x2295, "\162\034"},
-    {0x2296, "\371\036\034"},
-    {0x2297, "\372\313\371\041\034"},
+    {0x2296, "\371\037\034"},
+    {0x2297, "\372\313\371\042\034"},
     {0x2298, "\210\361\012\372\242\146"},
-    {0x2299, "\371\031\027\034"},
-    {0x229A, "\371\031\231\034"},
-    {0x229B, "\371\031\371\011\034"},
+    {0x2299, "\371\032\027\034"},
+    {0x229A, "\371\032\231\034"},
+    {0x229B, "\371\032\371\011\034"},
     {0x229C, "\142\034"},
-    {0x229D, "\371\071\034"},
-    {0x229E, "\162\371\356"},
-    {0x229F, "\371\036\371\356"},
-    {0x22A0, "\372\313\371\041\371\356"},
-    {0x22A1, "\371\031\027\371\356"},
+    {0x229D, "\371\072\034"},
+    {0x229E, "\162\371\357"},
+    {0x229F, "\371\037\371\357"},
+    {0x22A0, "\372\313\371\042\371\357"},
+    {0x22A1, "\371\032\027\371\357"},
     {0x22A2, "\307\173"},
     {0x22A3, "\307\042"},
     {0x22A4, "\307\013\035\061"},
     {0x22A5, "\307\013\035\065"},
-    {0x22A6, "\374\333"},
-    {0x22A7, "\376\141"},
-    {0x22A8, "\374\123"},
-    {0x22A9, "\376\233"},
-    {0x22AA, "\210\224\371\047\130\372\374\040\037"},
+    {0x22A6, "\374\334"},
+    {0x22A7, "\376\142"},
+    {0x22A8, "\374\124"},
+    {0x22A9, "\376\234"},
+    {0x22AA, "\210\224\371\050\130\372\374\040\037"},
     {0x22AB, "\210\224\051\130\372\374\040\037\051"},
-    {0x22AC, "\371\112\376\354\362"},
-    {0x22AD, "\362\374\123"},
-    {0x22AE, "\376\167\362"},
-    {0x22AF, "\376\213\224\051\130\372\374\040\037\051"},
-    {0x22B0, "\376\347\372\156\374\017"},
-    {0x22B1, "\371\322\372\156\374\017"},
-    {0x22B2, "\371\174\371\062\012"},
-    {0x22B3, "\371\265\371\074\371\174\371\062"},
-    {0x22B4, "\371\174\371\062\114\142\040"},
-    {0x22B5, "\371\265\371\074\371\174\371\062\114\142\040"},
-    {0x22B6, "\372\002\012"},
-    {0x22B7, "\371\232\012"},
-    {0x22B8, "\376\157"},
-    {0x22B9, "\376\110\375\277\375\052"},
-    {0x22BA, "\375\345"},
-    {0x22BB, "\114\375\213"},
+    {0x22AC, "\371\113\376\355\362"},
+    {0x22AD, "\362\374\124"},
+    {0x22AE, "\376\170\362"},
+    {0x22AF, "\376\214\224\051\130\372\374\040\037\051"},
+    {0x22B0, "\376\350\372\156\374\020"},
+    {0x22B1, "\371\323\372\156\374\020"},
+    {0x22B2, "\371\175\371\063\012"},
+    {0x22B3, "\371\266\371\075\371\175\371\063"},
+    {0x22B4, "\371\175\371\063\114\142\040"},
+    {0x22B5, "\371\266\371\075\371\175\371\063\114\142\040"},
+    {0x22B6, "\372\003\012"},
+    {0x22B7, "\371\233\012"},
+    {0x22B8, "\376\160"},
+    {0x22B9, "\376\111\375\300\375\053"},
+    {0x22BA, "\375\346"},
+    {0x22BB, "\114\375\214"},
     {0x22BC, "\334\011"},
     {0x22BD, "\334\114"},
-    {0x22BE, "\371\262\173\130\371\051"},
-    {0x22BF, "\265\371\315"},
-    {0x22C0, "\011\371\300\012\022\371\227"},
-    {0x22C1, "\114\371\300\012\022\371\227"},
-    {0x22C2, "\372\270\012\022\371\227"},
-    {0x22C3, "\377\034\012\022\371\227"},
-    {0x22C4, "\371\031\371\110"},
-    {0x22C5, "\371\031\027"},
-    {0x22C6, "\371\031\303"},
-    {0x22C7, "\375\146\372\313"},
-    {0x22C8, "\372\114\373\346"},
-    {0x22C9, "\371\312\372\150\040\042\012\373\155\371\062"},
-    {0x22CA, "\371\312\372\150\040\037\012\373\155\371\062"},
-    {0x22CB, "\371\312\372\150\040\042"},
-    {0x22CC, "\371\312\372\150\040\037"},
-    {0x22CD, "\371\036\143\371\016"},
-    {0x22CE, "\114\371\300\374\015"},
-    {0x22CF, "\011\371\300\374\015"},
-    {0x22D0, "\371\321\051"},
-    {0x22D1, "\371\323\051"},
+    {0x22BE, "\371\263\173\130\371\052"},
+    {0x22BF, "\265\371\316"},
+    {0x22C0, "\011\371\301\012\022\371\230"},
+    {0x22C1, "\114\371\301\012\022\371\230"},
+    {0x22C2, "\372\270\012\022\371\230"},
+    {0x22C3, "\377\035\012\022\371\230"},
+    {0x22C4, "\371\032\371\111"},
+    {0x22C5, "\371\032\027"},
+    {0x22C6, "\371\032\303"},
+    {0x22C7, "\375\147\372\313"},
+    {0x22C8, "\372\114\373\347"},
+    {0x22C9, "\371\313\372\150\040\042\012\373\156\371\063"},
+    {0x22CA, "\371\313\372\150\040\037\012\373\156\371\063"},
+    {0x22CB, "\371\313\372\150\040\042"},
+    {0x22CC, "\371\313\372\150\040\037"},
+    {0x22CD, "\371\037\143\371\016"},
+    {0x22CE, "\114\371\301\374\016"},
+    {0x22CF, "\011\371\301\374\016"},
+    {0x22D0, "\371\322\051"},
+    {0x22D1, "\371\324\051"},
     {0x22D2, "\372\270\051"},
     {0x22D3, "\372\376\051"},
-    {0x22D4, "\373\175"},
+    {0x22D4, "\373\176"},
     {0x22D5, "\142\011\372\325\040"},
-    {0x22D6, "\162\144\306\371\245"},
-    {0x22D7, "\162\262\306\371\245"},
-    {0x22D8, "\373\074\162\144\306"},
-    {0x22D9, "\373\074\162\262\306"},
+    {0x22D6, "\162\144\306\371\246"},
+    {0x22D7, "\162\262\306\371\246"},
+    {0x22D8, "\373\075\162\144\306"},
+    {0x22D9, "\373\075\162\262\306"},
     {0x22DA, "\162\144\114\142\114\162\262\306"},
     {0x22DB, "\162\262\114\142\114\162\144\306"},
     {0x22DC, "\142\114\162\144\306"},
     {0x22DD, "\142\114\162\262\306"},
-    {0x22DE, "\142\114\372\010"},
-    {0x22DF, "\375\172\114\371\322"},
-    {0x22E0, "\216\374\002\216\142\040"},
-    {0x22E1, "\216\374\057\216\142\040"},
-    {0x22E2, "\216\371\232\371\264\216\142\040"},
-    {0x22E3, "\216\372\002\021\216\142\040"},
-    {0x22E4, "\371\232\021\114\372\241\012"},
-    {0x22E5, "\372\002\021\114\372\241\012"},
-    {0x22E6, "\162\144\371\111\334\371\010\040"},
-    {0x22E7, "\162\262\371\111\334\371\010\040"},
-    {0x22E8, "\374\002\371\111\334\371\010\040"},
-    {0x22E9, "\374\057\371\111\334\371\010\040"},
-    {0x22EA, "\362\132\371\174\371\062\012"},
-    {0x22EB, "\371\112\371\265\362\371\074\371\174\371\062"},
-    {0x22EC, "\216\371\174\371\062\216\142\040"},
-    {0x22ED, "\216\142\216\375\055\371\074\371\174\371\062"},
-    {0x22EE, "\131\220\377\252"},
-    {0x22EF, "\131\220\376\162"},
-    {0x22F0, "\131\220\373\131\013\035\222\065\040\037"},
-    {0x22F1, "\131\220\373\131\013\035\222\061\040\037"},
-    {0x2300, "\015\375\142"},
-    {0x2302, "\376\075"},
+    {0x22DE, "\142\114\372\011"},
+    {0x22DF, "\375\173\114\371\323"},
+    {0x22E0, "\216\374\003\216\142\040"},
+    {0x22E1, "\216\374\060\216\142\040"},
+    {0x22E2, "\216\371\233\371\265\216\142\040"},
+    {0x22E3, "\216\372\003\021\216\142\040"},
+    {0x22E4, "\371\233\021\114\372\241\012"},
+    {0x22E5, "\372\003\021\114\372\241\012"},
+    {0x22E6, "\162\144\371\112\334\371\010\040"},
+    {0x22E7, "\162\262\371\112\334\371\010\040"},
+    {0x22E8, "\374\003\371\112\334\371\010\040"},
+    {0x22E9, "\374\060\371\112\334\371\010\040"},
+    {0x22EA, "\362\132\371\175\371\063\012"},
+    {0x22EB, "\371\113\371\266\362\371\075\371\175\371\063"},
+    {0x22EC, "\216\371\175\371\063\216\142\040"},
+    {0x22ED, "\216\142\216\375\056\371\075\371\175\371\063"},
+    {0x22EE, "\131\220\377\253"},
+    {0x22EF, "\131\220\376\163"},
+    {0x22F0, "\131\220\373\132\013\035\222\065\040\037"},
+    {0x22F1, "\131\220\373\132\013\035\222\061\040\037"},
+    {0x2300, "\015\375\143"},
+    {0x2302, "\376\076"},
     {0x2303, "\302\012\043\013\035\065"},
     {0x2304, "\302\012\043\013\035\061"},
-    {0x2305, "\376\352"},
-    {0x2306, "\376\306"},
+    {0x2305, "\376\353"},
+    {0x2306, "\376\307"},
     {0x2307, "\212\372\120"},
-    {0x2308, "\373\365\040\042"},
-    {0x2309, "\373\365\040\037"},
-    {0x230A, "\373\366\040\042"},
-    {0x230B, "\373\366\040\037"},
-    {0x230C, "\372\111\371\251"},
+    {0x2308, "\373\366\040\042"},
+    {0x2309, "\373\366\040\037"},
+    {0x230A, "\373\367\040\042"},
+    {0x230B, "\373\367\040\037"},
+    {0x230C, "\372\111\371\252"},
     {0x230D, "\372\111\372\162"},
-    {0x230E, "\372\111\371\241"},
-    {0x230F, "\372\111\371\375"},
+    {0x230E, "\372\111\371\242"},
+    {0x230F, "\372\111\371\376"},
     {0x2310, "\134\372\116\336"},
-    {0x2311, "\376\275\371\264"},
-    {0x2312, "\371\051"},
-    {0x2313, "\377\062"},
-    {0x2314, "\377\061"},
-    {0x2315, "\375\176\377\232"},
-    {0x2316, "\372\265\012\376\344"},
-    {0x2317, "\021\012\377\266"},
-    {0x2318, "\015\012\027\375\112"},
+    {0x2311, "\376\276\371\265"},
+    {0x2312, "\371\052"},
+    {0x2313, "\377\063"},
+    {0x2314, "\377\062"},
+    {0x2315, "\375\177\377\233"},
+    {0x2316, "\372\265\012\376\345"},
+    {0x2317, "\021\012\377\267"},
+    {0x2318, "\015\012\027\375\113"},
     {0x2319, "\134\372\116\260"},
-    {0x231A, "\376\150"},
-    {0x231B, "\377\035"},
-    {0x231C, "\222\371\375"},
-    {0x231D, "\222\371\241"},
+    {0x231A, "\376\151"},
+    {0x231B, "\377\036"},
+    {0x231C, "\222\371\376"},
+    {0x231D, "\222\371\242"},
     {0x231E, "\222\372\162"},
-    {0x231F, "\222\371\251"},
-    {0x2320, "\267\371\176\373\112"},
-    {0x2321, "\267\371\233\373\112"},
-    {0x2322, "\373\304"},
-    {0x2323, "\377\116"},
-    {0x2324, "\302\012\043\013\035\065\052\154\377\214\375\316"},
-    {0x2325, "\377\211\376\243"},
-    {0x2326, "\375\171\040\037"},
-    {0x2327, "\310\371\076\371\315"},
-    {0x2328, "\375\037"},
+    {0x231F, "\222\371\252"},
+    {0x2320, "\267\371\177\373\113"},
+    {0x2321, "\267\371\234\373\113"},
+    {0x2322, "\373\305"},
+    {0x2323, "\377\117"},
+    {0x2324, "\302\012\043\013\035\065\052\154\377\215\375\317"},
+    {0x2325, "\377\212\376\244"},
+    {0x2326, "\375\172\040\037"},
+    {0x2327, "\310\371\077\371\316"},
+    {0x2328, "\375\040"},
     {0x2329, "\100\013\022\042"},
     {0x232A, "\100\013\022\037"},
-    {0x232B, "\375\170\040\042"},
-    {0x232C, "\374\310\012\374\362"},
-    {0x232D, "\375\101"},
-    {0x232E, "\376\350\375\317"},
-    {0x232F, "\377\134"},
-    {0x2330, "\375\072\377\210"},
-    {0x2331, "\376\246\012\376\116"},
-    {0x2332, "\377\033\375\050"},
-    {0x2333, "\376\304"},
-    {0x2334, "\374\304"},
-    {0x2335, "\375\236"},
-    {0x2336, "\015\012\123\122\376\371"},
-    {0x2337, "\015\012\123\122\363\373\277"},
-    {0x2338, "\015\012\123\122\377\333"},
-    {0x2339, "\015\012\123\122\375\152"},
-    {0x233A, "\015\012\123\122\377\007"},
-    {0x233B, "\015\012\123\122\374\332"},
-    {0x233C, "\015\012\123\122\377\006"},
-    {0x233D, "\015\012\123\122\375\241"},
-    {0x233E, "\015\012\123\122\374\361"},
-    {0x233F, "\015\012\123\122\375\065\175"},
-    {0x2340, "\015\012\123\122\375\056\371\217"},
+    {0x232B, "\375\171\040\042"},
+    {0x232C, "\374\311\012\374\363"},
+    {0x232D, "\375\102"},
+    {0x232E, "\376\351\375\320"},
+    {0x232F, "\377\135"},
+    {0x2330, "\375\073\377\211"},
+    {0x2331, "\376\247\012\376\117"},
+    {0x2332, "\377\034\375\051"},
+    {0x2333, "\376\305"},
+    {0x2334, "\374\305"},
+    {0x2335, "\375\237"},
+    {0x2336, "\015\012\123\122\376\372"},
+    {0x2337, "\015\012\123\122\363\373\300"},
+    {0x2338, "\015\012\123\122\377\334"},
+    {0x2339, "\015\012\123\122\375\153"},
+    {0x233A, "\015\012\123\122\377\010"},
+    {0x233B, "\015\012\123\122\374\333"},
+    {0x233C, "\015\012\123\122\377\007"},
+    {0x233D, "\015\012\123\122\375\242"},
+    {0x233E, "\015\012\123\122\374\362"},
+    {0x233F, "\015\012\123\122\375\066\175"},
+    {0x2340, "\015\012\123\122\375\057\371\220"},
     {0x2341, "\015\012\123\122\363\361"},
-    {0x2342, "\015\012\123\122\363\361\371\274"},
+    {0x2342, "\015\012\123\122\363\361\371\275"},
     {0x2343, "\015\012\123\122\363\162\144\306"},
     {0x2344, "\015\012\123\122\363\162\262\306"},
     {0x2345, "\015\012\123\122\372\042\013\022\042"},
     {0x2346, "\015\012\123\122\372\042\013\022\037"},
-    {0x2347, "\015\012\123\122\363\376\054"},
-    {0x2348, "\015\012\123\122\363\375\053"},
-    {0x2349, "\015\012\123\122\374\035"},
-    {0x234A, "\015\012\123\122\307\013\035\061\371\046"},
-    {0x234B, "\015\012\123\122\377\052"},
+    {0x2347, "\015\012\123\122\363\376\055"},
+    {0x2348, "\015\012\123\122\363\375\054"},
+    {0x2349, "\015\012\123\122\374\036"},
+    {0x234A, "\015\012\123\122\307\013\035\061\371\047"},
+    {0x234B, "\015\012\123\122\377\053"},
     {0x234C, "\015\012\123\122\363\117\371\016"},
-    {0x234D, "\015\012\123\122\363\371\267"},
-    {0x234E, "\015\012\123\122\373\171"},
+    {0x234D, "\015\012\123\122\363\371\270"},
+    {0x234E, "\015\012\123\122\373\172"},
     {0x234F, "\015\012\123\122\372\042\013\035\065"},
     {0x2350, "\015\012\123\122\363\372\216"},
     {0x2351, "\015\012\123\122\307\013\035\065"},
-    {0x2352, "\015\012\123\122\375\014"},
+    {0x2352, "\015\012\123\122\375\015"},
     {0x2353, "\015\012\123\122\363\117"},
-    {0x2354, "\015\012\123\122\363\375\126"},
-    {0x2355, "\015\012\123\122\375\216"},
+    {0x2354, "\015\012\123\122\363\375\127"},
+    {0x2355, "\015\012\123\122\375\217"},
     {0x2356, "\015\012\123\122\372\042\013\035\061"},
-    {0x2357, "\015\012\123\122\363\375\175"},
-    {0x2358, "\015\012\123\122\371\215\371\046"},
-    {0x2359, "\015\012\123\122\371\267\371\046"},
-    {0x235A, "\015\012\123\122\371\110\371\046"},
-    {0x235B, "\015\012\123\122\144\231\371\046"},
-    {0x235C, "\015\012\123\122\231\371\046"},
-    {0x235D, "\015\012\123\122\374\264"},
-    {0x235E, "\015\012\123\122\371\215\371\356"},
-    {0x235F, "\015\012\123\122\375\036"},
-    {0x2360, "\015\012\123\122\374\374\021"},
-    {0x2361, "\015\012\123\122\377\140"},
-    {0x2362, "\015\012\123\122\375\061"},
-    {0x2363, "\015\012\123\122\377\141"},
-    {0x2364, "\015\012\123\122\376\126"},
-    {0x2365, "\015\012\123\122\375\144"},
-    {0x2366, "\015\012\123\122\373\175"},
+    {0x2357, "\015\012\123\122\363\375\176"},
+    {0x2358, "\015\012\123\122\371\216\371\047"},
+    {0x2359, "\015\012\123\122\371\270\371\047"},
+    {0x235A, "\015\012\123\122\371\111\371\047"},
+    {0x235B, "\015\012\123\122\144\231\371\047"},
+    {0x235C, "\015\012\123\122\231\371\047"},
+    {0x235D, "\015\012\123\122\374\265"},
+    {0x235E, "\015\012\123\122\371\216\371\357"},
+    {0x235F, "\015\012\123\122\375\037"},
+    {0x2360, "\015\012\123\122\374\375\021"},
+    {0x2361, "\015\012\123\122\377\141"},
+    {0x2362, "\015\012\123\122\375\062"},
+    {0x2363, "\015\012\123\122\377\142"},
+    {0x2364, "\015\012\123\122\376\127"},
+    {0x2365, "\015\012\123\122\375\145"},
+    {0x2366, "\015\012\123\122\373\176"},
     {0x2367, "\015\012\123\122\372\212"},
-    {0x2368, "\015\012\123\122\373\304"},
-    {0x2369, "\015\012\123\122\376\143"},
-    {0x236A, "\015\012\123\122\374\355"},
-    {0x236B, "\015\012\123\122\377\247"},
-    {0x236C, "\015\012\123\122\377\323"},
-    {0x236D, "\015\012\123\122\374\301"},
-    {0x236E, "\015\012\123\122\372\007\371\046"},
+    {0x2368, "\015\012\123\122\373\305"},
+    {0x2369, "\015\012\123\122\376\144"},
+    {0x236A, "\015\012\123\122\374\356"},
+    {0x236B, "\015\012\123\122\377\250"},
+    {0x236C, "\015\012\123\122\377\324"},
+    {0x236D, "\015\012\123\122\374\302"},
+    {0x236E, "\015\012\123\122\372\010\371\047"},
     {0x236F, "\015\012\123\122\363\372\241\012"},
-    {0x2370, "\015\012\123\122\363\375\343"},
-    {0x2371, "\015\012\123\122\376\214"},
-    {0x2372, "\015\012\123\122\376\215"},
+    {0x2370, "\015\012\123\122\363\375\344"},
+    {0x2371, "\015\012\123\122\376\215"},
+    {0x2372, "\015\012\123\122\376\216"},
     {0x2373, "\015\012\123\122\055"},
-    {0x2374, "\015\012\123\122\371\170"},
+    {0x2374, "\015\012\123\122\371\171"},
     {0x2375, "\015\012\123\122\147"},
-    {0x2376, "\015\012\123\122\152\371\046"},
-    {0x2377, "\015\012\123\122\247\371\046"},
-    {0x2378, "\015\012\123\122\055\371\046"},
-    {0x2379, "\015\012\123\122\147\371\046"},
+    {0x2376, "\015\012\123\122\152\371\047"},
+    {0x2377, "\015\012\123\122\247\371\047"},
+    {0x2378, "\015\012\123\122\055\371\047"},
+    {0x2379, "\015\012\123\122\147\371\047"},
     {0x237A, "\015\012\123\122\152"},
-    {0x2400, "\015\335\373\325"},
-    {0x2401, "\015\371\141\373\110"},
-    {0x2402, "\015\371\141\012\372\166"},
+    {0x2400, "\015\335\373\326"},
+    {0x2401, "\015\371\142\373\111"},
+    {0x2402, "\015\371\142\012\372\166"},
     {0x2403, "\015\070\012\372\166"},
-    {0x2404, "\015\070\012\371\254"},
-    {0x2405, "\015\373\122"},
-    {0x2406, "\015\373\105\012\372\147"},
-    {0x2407, "\015\012\374\050"},
-    {0x2408, "\015\371\025\373\033"},
-    {0x2409, "\377\133\012\372\163\372\263"},
-    {0x240A, "\015\012\373\065\012\212"},
+    {0x2404, "\015\070\012\371\255"},
+    {0x2405, "\015\373\123"},
+    {0x2406, "\015\373\106\012\372\147"},
+    {0x2407, "\015\012\374\051"},
+    {0x2408, "\015\371\026\373\034"},
+    {0x2409, "\377\134\012\372\163\372\263"},
+    {0x240A, "\015\012\373\066\012\212"},
     {0x240B, "\015\012\372\163\224"},
-    {0x240C, "\015\012\377\053\012\373\345"},
-    {0x240D, "\015\012\374\022\012\373\066"},
-    {0x240E, "\015\373\227\372\047"},
+    {0x240C, "\015\012\377\054\012\373\346"},
+    {0x240D, "\015\012\374\023\012\373\067"},
+    {0x240E, "\015\373\230\372\047"},
     {0x240F, "\015\007\372\047"},
-    {0x2410, "\015\373\016\371\254"},
-    {0x2411, "\015\012\371\023\012\372\055\132"},
-    {0x2412, "\015\012\371\023\012\372\055\154"},
-    {0x2413, "\015\012\371\023\012\372\055\131"},
-    {0x2414, "\015\012\371\023\012\372\055\200"},
-    {0x2415, "\015\373\105\012\372\147\223"},
-    {0x2416, "\015\012\374\064"},
-    {0x2417, "\015\012\070\012\304\012\371\254"},
-    {0x2418, "\015\373\106"},
-    {0x2419, "\015\012\070\012\374\060"},
-    {0x241A, "\015\012\374\056"},
-    {0x241B, "\015\375\115"},
-    {0x241C, "\015\371\007\012\373\163"},
-    {0x241D, "\015\371\007\012\373\215"},
-    {0x241E, "\015\371\007\375\106"},
-    {0x241F, "\015\371\007\375\114"},
-    {0x2420, "\015\335\371\025"},
-    {0x2421, "\015\012\374\061"},
-    {0x2422, "\015\377\267\335\376\043"},
-    {0x2423, "\374\375\376\257"},
-    {0x2424, "\015\012\376\221\212"},
-    {0x2440, "\100\371\042"},
-    {0x2441, "\375\025\371\042"},
-    {0x2442, "\373\176\371\042"},
-    {0x2443, "\373\176\352\371\042"},
-    {0x2444, "\372\210\012\375\021\371\042"},
-    {0x2445, "\372\114\373\346\371\042"},
-    {0x2446, "\375\335\012\377\125\374\353\371\042"},
-    {0x2447, "\376\147\226\375\034\371\042"},
-    {0x2448, "\371\071\371\042"},
-    {0x2449, "\373\330\012\375\045\371\042"},
-    {0x244A, "\051\210\361\371\274\371\042"},
+    {0x2410, "\015\373\016\371\255"},
+    {0x2411, "\015\012\371\024\012\372\055\132"},
+    {0x2412, "\015\012\371\024\012\372\055\154"},
+    {0x2413, "\015\012\371\024\012\372\055\131"},
+    {0x2414, "\015\012\371\024\012\372\055\200"},
+    {0x2415, "\015\373\106\012\372\147\223"},
+    {0x2416, "\015\012\374\065"},
+    {0x2417, "\015\012\070\012\304\012\371\255"},
+    {0x2418, "\015\373\107"},
+    {0x2419, "\015\012\070\012\374\061"},
+    {0x241A, "\015\012\374\057"},
+    {0x241B, "\015\375\116"},
+    {0x241C, "\015\371\007\012\373\164"},
+    {0x241D, "\015\371\007\012\373\216"},
+    {0x241E, "\015\371\007\375\107"},
+    {0x241F, "\015\371\007\375\115"},
+    {0x2420, "\015\335\371\026"},
+    {0x2421, "\015\012\374\062"},
+    {0x2422, "\015\377\270\335\376\044"},
+    {0x2423, "\374\376\376\260"},
+    {0x2424, "\015\012\376\222\212"},
+    {0x2440, "\100\371\043"},
+    {0x2441, "\375\026\371\043"},
+    {0x2442, "\373\177\371\043"},
+    {0x2443, "\373\177\352\371\043"},
+    {0x2444, "\372\210\012\375\022\371\043"},
+    {0x2445, "\372\114\373\347\371\043"},
+    {0x2446, "\375\336\012\377\126\374\354\371\043"},
+    {0x2447, "\376\150\226\375\035\371\043"},
+    {0x2448, "\371\072\371\043"},
+    {0x2449, "\373\331\012\375\046\371\043"},
+    {0x244A, "\051\210\361\371\275\371\043"},
     {0x2460, "\017\132\034"},
     {0x2461, "\017\154\034"},
     {0x2462, "\017\131\034"},
@@ -5872,16 +5873,16 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2467, "\017\204\034"},
     {0x2468, "\017\235\034"},
     {0x2469, "\163\354\034"},
-    {0x246A, "\163\371\243\034"},
-    {0x246B, "\163\371\140\034"},
-    {0x246C, "\163\372\023\034"},
-    {0x246D, "\163\372\011\034"},
-    {0x246E, "\163\372\012\034"},
-    {0x246F, "\163\371\247\034"},
-    {0x2470, "\163\371\352\034"},
-    {0x2471, "\163\371\350\034"},
-    {0x2472, "\163\371\351\034"},
-    {0x2473, "\163\372\030\034"},
+    {0x246A, "\163\371\244\034"},
+    {0x246B, "\163\371\141\034"},
+    {0x246C, "\163\372\024\034"},
+    {0x246D, "\163\372\012\034"},
+    {0x246E, "\163\372\013\034"},
+    {0x246F, "\163\371\250\034"},
+    {0x2470, "\163\371\353\034"},
+    {0x2471, "\163\371\351\034"},
+    {0x2472, "\163\371\352\034"},
+    {0x2473, "\163\372\031\034"},
     {0x2474, "\017\132\052\053"},
     {0x2475, "\017\154\052\053"},
     {0x2476, "\017\131\052\053"},
@@ -5892,16 +5893,16 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x247B, "\017\204\052\053"},
     {0x247C, "\017\235\052\053"},
     {0x247D, "\163\354\052\053"},
-    {0x247E, "\163\371\243\052\053"},
-    {0x247F, "\163\371\140\052\053"},
-    {0x2480, "\163\372\023\052\053"},
-    {0x2481, "\163\372\011\052\053"},
-    {0x2482, "\163\372\012\052\053"},
-    {0x2483, "\163\371\247\052\053"},
-    {0x2484, "\163\371\352\052\053"},
-    {0x2485, "\163\371\350\052\053"},
-    {0x2486, "\163\371\351\052\053"},
-    {0x2487, "\163\372\030\052\053"},
+    {0x247E, "\163\371\244\052\053"},
+    {0x247F, "\163\371\141\052\053"},
+    {0x2480, "\163\372\024\052\053"},
+    {0x2481, "\163\372\012\052\053"},
+    {0x2482, "\163\372\013\052\053"},
+    {0x2483, "\163\371\250\052\053"},
+    {0x2484, "\163\371\353\052\053"},
+    {0x2485, "\163\371\351\052\053"},
+    {0x2486, "\163\371\352\052\053"},
+    {0x2487, "\163\372\031\052\053"},
     {0x2488, "\017\132\027"},
     {0x2489, "\017\154\027"},
     {0x248A, "\017\131\027"},
@@ -5912,16 +5913,16 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x248F, "\017\204\027"},
     {0x2490, "\017\235\027"},
     {0x2491, "\163\354\027"},
-    {0x2492, "\163\371\243\027"},
-    {0x2493, "\163\371\140\027"},
-    {0x2494, "\163\372\023\027"},
-    {0x2495, "\163\372\011\027"},
-    {0x2496, "\163\372\012\027"},
-    {0x2497, "\163\371\247\027"},
-    {0x2498, "\163\371\352\027"},
-    {0x2499, "\163\371\350\027"},
-    {0x249A, "\163\371\351\027"},
-    {0x249B, "\163\372\030\027"},
+    {0x2492, "\163\371\244\027"},
+    {0x2493, "\163\371\141\027"},
+    {0x2494, "\163\372\024\027"},
+    {0x2495, "\163\372\012\027"},
+    {0x2496, "\163\372\013\027"},
+    {0x2497, "\163\371\250\027"},
+    {0x2498, "\163\371\353\027"},
+    {0x2499, "\163\371\351\027"},
+    {0x249A, "\163\371\352\027"},
+    {0x249B, "\163\372\031\027"},
     {0x249C, "\001\003\004\046\052\053"},
     {0x249D, "\001\003\004\275\052\053"},
     {0x249E, "\001\003\004\241\052\053"},
@@ -5938,7 +5939,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x24A9, "\001\003\004\213\052\053"},
     {0x24AA, "\001\003\004\050\052\053"},
     {0x24AB, "\001\003\004\351\052\053"},
-    {0x24AC, "\001\003\004\371\065\052\053"},
+    {0x24AC, "\001\003\004\371\066\052\053"},
     {0x24AD, "\001\003\004\150\052\053"},
     {0x24AE, "\001\003\004\207\052\053"},
     {0x24AF, "\001\003\004\236\052\053"},
@@ -5964,7 +5965,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x24C3, "\001\005\004\213\146"},
     {0x24C4, "\001\005\004\050\146"},
     {0x24C5, "\001\005\004\351\146"},
-    {0x24C6, "\001\005\004\371\065\146"},
+    {0x24C6, "\001\005\004\371\066\146"},
     {0x24C7, "\001\005\004\150\146"},
     {0x24C8, "\001\005\004\207\146"},
     {0x24C9, "\001\005\004\236\146"},
@@ -5990,7 +5991,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x24DD, "\001\003\004\213\146"},
     {0x24DE, "\001\003\004\050\146"},
     {0x24DF, "\001\003\004\351\146"},
-    {0x24E0, "\001\003\004\371\065\146"},
+    {0x24E0, "\001\003\004\371\066\146"},
     {0x24E1, "\001\003\004\150\146"},
     {0x24E2, "\001\003\004\207\146"},
     {0x24E3, "\001\003\004\236\146"},
@@ -6005,14 +6006,14 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2501, "\045\211\121"},
     {0x2502, "\045\145\070"},
     {0x2503, "\045\145\121"},
-    {0x2504, "\045\371\022\371\047\211\070"},
-    {0x2505, "\045\371\022\371\047\211\121"},
-    {0x2506, "\045\371\022\371\047\145\070"},
-    {0x2507, "\045\371\022\371\047\145\121"},
-    {0x2508, "\045\371\022\372\140\211\070"},
-    {0x2509, "\045\371\022\372\140\211\121"},
-    {0x250A, "\045\371\022\372\140\145\070"},
-    {0x250B, "\045\371\022\372\140\145\121"},
+    {0x2504, "\045\371\023\371\050\211\070"},
+    {0x2505, "\045\371\023\371\050\211\121"},
+    {0x2506, "\045\371\023\371\050\145\070"},
+    {0x2507, "\045\371\023\371\050\145\121"},
+    {0x2508, "\045\371\023\372\140\211\070"},
+    {0x2509, "\045\371\023\372\140\211\121"},
+    {0x250A, "\045\371\023\372\140\145\070"},
+    {0x250B, "\045\371\023\372\140\145\121"},
     {0x250C, "\045\070\013\035\061\011\013\022\037"},
     {0x250D, "\045\070\013\035\061\011\121\013\022\037"},
     {0x250E, "\045\121\013\035\061\011\070\013\022\037"},
@@ -6077,10 +6078,10 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2549, "\045\070\013\022\037\011\121\013\022\042\011\145"},
     {0x254A, "\045\070\013\022\042\011\121\013\022\037\011\145"},
     {0x254B, "\045\145\011\211\121"},
-    {0x254C, "\045\371\022\051\211\070"},
-    {0x254D, "\045\371\022\051\211\121"},
-    {0x254E, "\045\371\022\051\145\070"},
-    {0x254F, "\045\371\022\051\145\121"},
+    {0x254C, "\045\371\023\051\211\070"},
+    {0x254D, "\045\371\023\051\211\121"},
+    {0x254E, "\045\371\023\051\145\070"},
+    {0x254F, "\045\371\023\051\145\121"},
     {0x2550, "\045\051\211"},
     {0x2551, "\045\051\145"},
     {0x2552, "\045\270\035\061\011\051\013\022\037"},
@@ -6110,11 +6111,11 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x256A, "\045\145\270\011\211\051"},
     {0x256B, "\045\145\051\011\211\270"},
     {0x256C, "\045\051\145\011\211"},
-    {0x256D, "\045\070\371\051\013\035\061\011\013\022\037"},
-    {0x256E, "\045\070\371\051\013\035\061\011\013\022\042"},
-    {0x256F, "\045\070\371\051\013\035\065\011\013\022\042"},
-    {0x2570, "\045\070\371\051\013\035\065\011\013\022\037"},
-    {0x2571, "\045\372\240\070\226\222\326\173\371\216\222\300\042"},
+    {0x256D, "\045\070\371\052\013\035\061\011\013\022\037"},
+    {0x256E, "\045\070\371\052\013\035\061\011\013\022\042"},
+    {0x256F, "\045\070\371\052\013\035\065\011\013\022\042"},
+    {0x2570, "\045\070\371\052\013\035\065\011\013\022\037"},
+    {0x2571, "\045\372\240\070\226\222\326\173\371\217\222\300\042"},
     {0x2572, "\045\372\240\070\226\222\326\042\013\035\222\300\173"},
     {0x2573, "\045\372\240\070\007\340"},
     {0x2574, "\045\070\013\022\042"},
@@ -6129,46 +6130,46 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x257D, "\045\070\013\035\065\011\121\013\035\061"},
     {0x257E, "\045\121\013\022\042\011\070\013\022\037"},
     {0x257F, "\045\121\013\035\065\011\070\013\035\061"},
-    {0x2580, "\304\267\371\176"},
-    {0x2581, "\304\132\371\366\300"},
+    {0x2580, "\304\267\371\177"},
+    {0x2581, "\304\132\371\367\300"},
     {0x2582, "\304\132\372\141\300"},
-    {0x2583, "\304\131\371\104\300"},
-    {0x2584, "\304\267\371\233"},
-    {0x2585, "\304\203\371\104\300"},
+    {0x2583, "\304\131\371\105\300"},
+    {0x2584, "\304\267\371\234"},
+    {0x2585, "\304\203\371\105\300"},
     {0x2586, "\304\131\372\334\300"},
-    {0x2587, "\304\221\371\104\300"},
-    {0x2588, "\304\373\370"},
-    {0x2589, "\304\221\371\104\042"},
+    {0x2587, "\304\221\371\105\300"},
+    {0x2588, "\304\373\371"},
+    {0x2589, "\304\221\371\105\042"},
     {0x258A, "\304\131\372\334\042"},
-    {0x258B, "\304\203\371\104\042"},
+    {0x258B, "\304\203\371\105\042"},
     {0x258C, "\304\267\042"},
-    {0x258D, "\304\131\371\104\042"},
+    {0x258D, "\304\131\371\105\042"},
     {0x258E, "\304\132\372\141\042"},
-    {0x258F, "\304\132\371\366\042"},
+    {0x258F, "\304\132\371\367\042"},
     {0x2590, "\304\267\037"},
-    {0x2591, "\371\242\376\071"},
-    {0x2592, "\371\242\373\306"},
-    {0x2593, "\371\242\375\234"},
-    {0x2594, "\304\132\371\366\326"},
-    {0x2595, "\304\132\371\366\173"},
+    {0x2591, "\371\243\376\072"},
+    {0x2592, "\371\243\373\307"},
+    {0x2593, "\371\243\375\235"},
+    {0x2594, "\304\132\371\367\326"},
+    {0x2595, "\304\132\371\367\173"},
     {0x25A0, "\021\156"},
     {0x25A1, "\021\133"},
-    {0x25A2, "\021\133\130\375\041\374\323"},
-    {0x25A3, "\144\021\156\372\266\371\076\132\021\133"},
-    {0x25A4, "\021\371\365\375\315"},
-    {0x25A5, "\021\371\365\373\001"},
-    {0x25A6, "\021\374\005"},
-    {0x25A7, "\021\371\365\226\065\040\042\013\035\061\040\037"},
-    {0x25A8, "\021\371\365\226\065\040\037\013\035\061\040\042"},
-    {0x25A9, "\021\374\005\007\375\141"},
+    {0x25A2, "\021\133\130\375\042\374\324"},
+    {0x25A3, "\144\021\156\372\266\371\077\132\021\133"},
+    {0x25A4, "\021\371\366\375\316"},
+    {0x25A5, "\021\371\366\373\001"},
+    {0x25A6, "\021\374\006"},
+    {0x25A7, "\021\371\366\226\065\040\042\013\035\061\040\037"},
+    {0x25A8, "\021\371\366\226\065\040\037\013\035\061\040\042"},
+    {0x25A9, "\021\374\006\007\375\142"},
     {0x25AA, "\144\021\156"},
     {0x25AB, "\144\021\133"},
-    {0x25AC, "\371\315\156"},
-    {0x25AD, "\371\315\133"},
-    {0x25AE, "\371\315\145\156"},
-    {0x25AF, "\371\315\145\133"},
-    {0x25B0, "\373\347\156"},
-    {0x25B1, "\373\347\133"},
+    {0x25AC, "\371\316\156"},
+    {0x25AD, "\371\316\133"},
+    {0x25AE, "\371\316\145\156"},
+    {0x25AF, "\371\316\145\133"},
+    {0x25B0, "\373\350\156"},
+    {0x25B1, "\373\350\133"},
     {0x25B2, "\265\156\245\013\035\065"},
     {0x25B3, "\265\133\245\013\035\065"},
     {0x25B4, "\144\265\156\245\013\035\065"},
@@ -6189,245 +6190,245 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x25C3, "\144\265\133\245\013\022\042"},
     {0x25C4, "\372\130\156\013\022\042"},
     {0x25C5, "\372\130\133\013\022\042"},
-    {0x25C6, "\371\110\156"},
-    {0x25C7, "\371\110\133"},
-    {0x25C8, "\371\110\133\130\144\371\110\156\007\374\265"},
-    {0x25C9, "\144\252\156\372\266\371\076\132\252\133"},
-    {0x25CA, "\371\110"},
+    {0x25C6, "\371\111\156"},
+    {0x25C7, "\371\111\133"},
+    {0x25C8, "\371\111\133\130\144\371\111\156\007\374\266"},
+    {0x25C9, "\144\252\156\372\266\371\077\132\252\133"},
+    {0x25CA, "\371\111"},
     {0x25CB, "\252\133"},
-    {0x25CC, "\252\007\376\337"},
-    {0x25CD, "\252\371\365\373\001"},
-    {0x25CE, "\144\252\133\372\266\371\076\132\252\133"},
-    {0x25CF, "\373\133\156"},
+    {0x25CC, "\252\007\376\340"},
+    {0x25CD, "\252\371\366\373\001"},
+    {0x25CE, "\144\252\133\372\266\371\077\132\252\133"},
+    {0x25CF, "\373\134\156"},
     {0x25D0, "\252\130\267\042\217"},
     {0x25D1, "\252\130\267\037\217"},
-    {0x25D2, "\252\130\267\371\233\217"},
-    {0x25D3, "\252\130\267\371\176\217"},
-    {0x25D4, "\252\130\371\313\326\173\156"},
-    {0x25D5, "\373\133\130\371\313\326\042\133"},
-    {0x25D6, "\373\124\042\156"},
-    {0x25D7, "\373\124\037\156"},
+    {0x25D2, "\252\130\267\371\234\217"},
+    {0x25D3, "\252\130\267\371\177\217"},
+    {0x25D4, "\252\130\371\314\326\173\156"},
+    {0x25D5, "\373\134\130\371\314\326\042\133"},
+    {0x25D6, "\373\125\042\156"},
+    {0x25D7, "\373\125\037\156"},
     {0x25D8, "\027\007\223"},
     {0x25D9, "\252\133\007\223"},
     {0x25DA, "\372\053\326\133\007\223"},
     {0x25DB, "\372\053\300\133\007\223"},
-    {0x25DC, "\371\051\012\252\371\076\035\371\313\326\042"},
-    {0x25DD, "\371\051\012\252\371\076\035\371\313\326\173"},
-    {0x25DE, "\371\051\012\252\371\076\035\371\313\300\173"},
-    {0x25DF, "\371\051\012\252\371\076\035\371\313\300\042"},
+    {0x25DC, "\371\052\012\252\371\077\035\371\314\326\042"},
+    {0x25DD, "\371\052\012\252\371\077\035\371\314\326\173"},
+    {0x25DE, "\371\052\012\252\371\077\035\371\314\300\173"},
+    {0x25DF, "\371\052\012\252\371\077\035\371\314\300\042"},
     {0x25E0, "\372\053\326"},
     {0x25E1, "\372\053\300"},
-    {0x25E2, "\222\371\325\156\300\173"},
-    {0x25E3, "\222\371\325\156\300\042"},
-    {0x25E4, "\222\371\325\156\326\042"},
-    {0x25E5, "\222\371\325\156\326\173"},
+    {0x25E2, "\222\371\326\156\300\173"},
+    {0x25E3, "\222\371\326\156\300\042"},
+    {0x25E4, "\222\371\326\156\326\042"},
+    {0x25E5, "\222\371\326\156\326\173"},
     {0x25E6, "\144\252\133"},
     {0x25E7, "\021\130\267\042\217"},
     {0x25E8, "\021\130\267\037\217"},
-    {0x25E9, "\021\130\267\371\176\042\217"},
-    {0x25EA, "\021\130\267\371\233\037\217"},
-    {0x25EB, "\021\133\130\212\374\367\224"},
-    {0x25EC, "\265\133\245\013\035\065\371\245"},
+    {0x25E9, "\021\130\267\371\177\042\217"},
+    {0x25EA, "\021\130\267\371\234\037\217"},
+    {0x25EB, "\021\133\130\212\374\370\224"},
+    {0x25EC, "\265\133\245\013\035\065\371\246"},
     {0x25ED, "\265\245\013\035\065\130\267\042\217"},
     {0x25EE, "\265\245\013\035\065\130\267\037\217"},
     {0x25EF, "\262\252"},
-    {0x2600, "\372\015\156\130\374\014"},
-    {0x2601, "\376\224"},
-    {0x2602, "\376\267"},
-    {0x2603, "\374\371\012\372\113"},
-    {0x2604, "\375\046"},
+    {0x2600, "\372\016\156\130\374\015"},
+    {0x2601, "\376\225"},
+    {0x2602, "\376\270"},
+    {0x2603, "\374\372\012\372\113"},
+    {0x2604, "\375\047"},
     {0x2605, "\303\217"},
     {0x2606, "\303\315"},
-    {0x2607, "\377\324"},
-    {0x2608, "\376\244"},
-    {0x2609, "\372\015"},
-    {0x260A, "\372\114\373\035"},
-    {0x260B, "\372\114\375\134"},
-    {0x260C, "\375\051"},
-    {0x260D, "\376\242"},
+    {0x2607, "\377\325"},
+    {0x2608, "\376\245"},
+    {0x2609, "\372\016"},
+    {0x260A, "\372\114\373\036"},
+    {0x260B, "\372\114\375\135"},
+    {0x260C, "\375\052"},
+    {0x260D, "\376\243"},
     {0x260E, "\372\170\156"},
     {0x260F, "\372\170\133"},
-    {0x2610, "\371\341\012\372\032"},
-    {0x2611, "\371\341\012\372\032\375\040"},
-    {0x2612, "\371\341\012\372\032\130\310"},
-    {0x2613, "\374\356"},
-    {0x261A, "\371\150\156\245\013\022\042"},
-    {0x261B, "\371\150\156\245\013\022\037"},
-    {0x261C, "\371\150\133\245\013\022\042"},
-    {0x261D, "\371\150\133\245\013\035\065"},
-    {0x261E, "\371\150\133\245\013\022\037"},
-    {0x261F, "\371\150\133\245\013\035\061"},
-    {0x2620, "\377\233\012\376\151"},
-    {0x2621, "\134\012\373\117"},
-    {0x2622, "\134\012\376\370"},
-    {0x2623, "\134\012\373\117\374\365"},
-    {0x2624, "\375\007"},
-    {0x2625, "\340\377\330"},
-    {0x2626, "\340\376\247"},
-    {0x2627, "\372\301\371\170"},
-    {0x2628, "\340\012\376\064"},
-    {0x2629, "\340\012\375\376"},
-    {0x262A, "\303\011\375\074"},
-    {0x262B, "\015\371\272"},
-    {0x262C, "\374\272\377\070"},
-    {0x262D, "\375\222\011\376\106"},
-    {0x262E, "\015\012\376\263"},
-    {0x262F, "\015\226\377\304\011\226\377\303"},
-    {0x2630, "\371\204\335\372\216"},
-    {0x2631, "\371\204\335\376\045"},
-    {0x2632, "\371\204\335\372\253"},
-    {0x2633, "\371\204\335\377\207"},
-    {0x2634, "\371\204\335\377\246"},
-    {0x2635, "\371\204\335\372\247"},
-    {0x2636, "\371\204\335\376\146"},
-    {0x2637, "\371\204\335\372\021"},
-    {0x2638, "\377\024\012\375\140"},
-    {0x2639, "\372\173\133\375\261"},
-    {0x263A, "\372\173\133\374\051"},
-    {0x263B, "\372\173\156\374\051"},
-    {0x263C, "\372\015\133\130\374\014"},
-    {0x263D, "\373\375\374\006\012\372\104"},
-    {0x263E, "\375\133\374\006\012\372\104"},
-    {0x263F, "\376\115"},
-    {0x2640, "\134\373\161"},
-    {0x2641, "\372\021"},
-    {0x2642, "\134\373\311"},
-    {0x2643, "\375\374"},
-    {0x2644, "\374\035"},
-    {0x2645, "\377\242"},
-    {0x2646, "\376\177"},
-    {0x2647, "\376\335"},
-    {0x2648, "\375\003"},
-    {0x2649, "\377\145"},
-    {0x264A, "\375\266"},
-    {0x264B, "\375\011"},
-    {0x264C, "\376\056"},
-    {0x264D, "\377\257"},
-    {0x264E, "\374\352"},
-    {0x264F, "\377\054"},
-    {0x2650, "\377\036"},
-    {0x2651, "\375\012"},
-    {0x2652, "\377\250"},
-    {0x2653, "\376\341"},
-    {0x2654, "\374\031\133\226\371\027\371\024"},
-    {0x2655, "\373\115\315\226\371\027\371\024"},
-    {0x2656, "\374\103\315\226\371\027\371\024"},
-    {0x2657, "\373\174\133\226\371\027\371\024"},
-    {0x2658, "\373\057\133\226\371\027\371\024"},
-    {0x2659, "\373\354\133\226\371\027\371\024"},
-    {0x265A, "\374\031\156\226\371\027\371\024"},
-    {0x265B, "\373\115\217\226\371\027\371\024"},
-    {0x265C, "\374\103\217\226\371\027\371\024"},
-    {0x265D, "\373\174\156\226\371\027\371\024"},
-    {0x265E, "\373\057\156\226\371\027\371\024"},
-    {0x265F, "\373\354\156\226\371\027\371\024"},
+    {0x2610, "\371\342\012\372\033"},
+    {0x2611, "\371\342\012\372\033\375\041"},
+    {0x2612, "\371\342\012\372\033\130\310"},
+    {0x2613, "\374\357"},
+    {0x261A, "\371\151\156\245\013\022\042"},
+    {0x261B, "\371\151\156\245\013\022\037"},
+    {0x261C, "\371\151\133\245\013\022\042"},
+    {0x261D, "\371\151\133\245\013\035\065"},
+    {0x261E, "\371\151\133\245\013\022\037"},
+    {0x261F, "\371\151\133\245\013\035\061"},
+    {0x2620, "\377\234\012\376\152"},
+    {0x2621, "\134\012\373\120"},
+    {0x2622, "\134\012\376\371"},
+    {0x2623, "\134\012\373\120\374\366"},
+    {0x2624, "\375\010"},
+    {0x2625, "\340\377\331"},
+    {0x2626, "\340\376\250"},
+    {0x2627, "\372\301\371\171"},
+    {0x2628, "\340\012\376\065"},
+    {0x2629, "\340\012\375\377"},
+    {0x262A, "\303\011\375\075"},
+    {0x262B, "\015\371\273"},
+    {0x262C, "\374\273\377\071"},
+    {0x262D, "\375\223\011\376\107"},
+    {0x262E, "\015\012\376\264"},
+    {0x262F, "\015\226\377\305\011\226\377\304"},
+    {0x2630, "\371\205\335\372\216"},
+    {0x2631, "\371\205\335\376\046"},
+    {0x2632, "\371\205\335\372\253"},
+    {0x2633, "\371\205\335\377\210"},
+    {0x2634, "\371\205\335\377\247"},
+    {0x2635, "\371\205\335\372\247"},
+    {0x2636, "\371\205\335\376\147"},
+    {0x2637, "\371\205\335\372\022"},
+    {0x2638, "\377\025\012\375\141"},
+    {0x2639, "\372\173\133\375\262"},
+    {0x263A, "\372\173\133\374\052"},
+    {0x263B, "\372\173\156\374\052"},
+    {0x263C, "\372\016\133\130\374\015"},
+    {0x263D, "\373\376\374\007\012\372\104"},
+    {0x263E, "\375\134\374\007\012\372\104"},
+    {0x263F, "\376\116"},
+    {0x2640, "\134\373\162"},
+    {0x2641, "\372\022"},
+    {0x2642, "\134\373\312"},
+    {0x2643, "\375\375"},
+    {0x2644, "\374\036"},
+    {0x2645, "\377\243"},
+    {0x2646, "\376\200"},
+    {0x2647, "\376\336"},
+    {0x2648, "\375\004"},
+    {0x2649, "\377\146"},
+    {0x264A, "\375\267"},
+    {0x264B, "\375\012"},
+    {0x264C, "\376\057"},
+    {0x264D, "\377\260"},
+    {0x264E, "\374\353"},
+    {0x264F, "\377\055"},
+    {0x2650, "\377\037"},
+    {0x2651, "\375\013"},
+    {0x2652, "\377\251"},
+    {0x2653, "\376\342"},
+    {0x2654, "\374\032\133\226\371\030\371\025"},
+    {0x2655, "\373\116\315\226\371\030\371\025"},
+    {0x2656, "\374\104\315\226\371\030\371\025"},
+    {0x2657, "\373\175\133\226\371\030\371\025"},
+    {0x2658, "\373\060\133\226\371\030\371\025"},
+    {0x2659, "\373\355\133\226\371\030\371\025"},
+    {0x265A, "\374\032\156\226\371\030\371\025"},
+    {0x265B, "\373\116\217\226\371\030\371\025"},
+    {0x265C, "\374\104\217\226\371\030\371\025"},
+    {0x265D, "\373\175\156\226\371\030\371\025"},
+    {0x265E, "\373\060\156\226\371\030\371\025"},
+    {0x265F, "\373\355\156\226\371\030\371\025"},
     {0x2660, "\372\124\156"},
-    {0x2661, "\371\223\133"},
-    {0x2662, "\373\056\133"},
-    {0x2663, "\374\106\156"},
+    {0x2661, "\371\224\133"},
+    {0x2662, "\373\057\133"},
+    {0x2663, "\374\107\156"},
     {0x2664, "\372\124\133"},
-    {0x2665, "\371\223\156"},
-    {0x2666, "\373\056\156"},
-    {0x2667, "\374\106\133"},
-    {0x2668, "\377\115\375\027"},
-    {0x2669, "\373\324\217"},
-    {0x266A, "\373\324\375\073"},
-    {0x266B, "\154\373\103\374\012"},
-    {0x266C, "\154\375\155\373\103\374\012"},
-    {0x266D, "\375\004"},
-    {0x266E, "\375\002"},
-    {0x266F, "\375\147"},
-    {0x2701, "\372\046\040\373\260\371\176\374\121"},
-    {0x2702, "\372\046\376\210"},
-    {0x2703, "\372\046\040\373\260\371\233\374\121"},
-    {0x2704, "\372\046\374\370"},
-    {0x2706, "\015\375\105\226\372\170"},
-    {0x2707, "\375\166\012\377\026"},
-    {0x2708, "\374\343"},
-    {0x2709, "\375\202"},
-    {0x270C, "\373\270\012\022\377\254"},
-    {0x270D, "\373\270\007\377\213\375\116"},
-    {0x270E, "\372\226\371\245\013\035\061\040\037"},
+    {0x2665, "\371\224\156"},
+    {0x2666, "\373\057\156"},
+    {0x2667, "\374\107\133"},
+    {0x2668, "\377\116\375\030"},
+    {0x2669, "\373\325\217"},
+    {0x266A, "\373\325\375\074"},
+    {0x266B, "\154\373\104\374\013"},
+    {0x266C, "\154\375\156\373\104\374\013"},
+    {0x266D, "\375\005"},
+    {0x266E, "\375\003"},
+    {0x266F, "\375\150"},
+    {0x2701, "\372\046\040\373\261\371\177\374\122"},
+    {0x2702, "\372\046\376\211"},
+    {0x2703, "\372\046\040\373\261\371\234\374\122"},
+    {0x2704, "\372\046\374\371"},
+    {0x2706, "\015\375\106\226\372\170"},
+    {0x2707, "\375\167\012\377\027"},
+    {0x2708, "\374\344"},
+    {0x2709, "\375\203"},
+    {0x270C, "\373\271\012\022\377\255"},
+    {0x270D, "\373\271\007\377\214\375\117"},
+    {0x270E, "\372\226\371\246\013\035\061\040\037"},
     {0x270F, "\372\226"},
-    {0x2710, "\372\226\371\245\013\035\065\040\037"},
-    {0x2711, "\373\046\012\373\371\133"},
-    {0x2712, "\373\046\012\373\371\156"},
-    {0x2713, "\134\012\374\126"},
-    {0x2714, "\370\134\012\374\126"},
+    {0x2710, "\372\226\371\246\013\035\065\040\037"},
+    {0x2711, "\373\047\012\373\372\133"},
+    {0x2712, "\373\047\012\373\372\156"},
+    {0x2713, "\134\012\374\127"},
+    {0x2714, "\370\134\012\374\127"},
     {0x2715, "\310\012\372\112"},
     {0x2716, "\370\310\012\372\112"},
-    {0x2717, "\310\012\371\341\012\372\032"},
-    {0x2718, "\370\310\012\371\341\012\372\032"},
+    {0x2717, "\310\012\371\342\012\372\033"},
+    {0x2718, "\370\310\012\371\342\012\372\033"},
     {0x2719, "\340\014\130\371\012"},
-    {0x271A, "\371\146\340\014"},
-    {0x271B, "\340\372\326\371\132\021"},
-    {0x271C, "\371\146\340\372\326\371\132\021"},
+    {0x271A, "\371\147\340\014"},
+    {0x271B, "\340\372\326\371\133\021"},
+    {0x271C, "\371\147\340\372\326\371\133\021"},
     {0x271D, "\340\004"},
-    {0x271E, "\340\004\377\256\371\164"},
+    {0x271E, "\340\004\377\257\371\165"},
     {0x271F, "\340\004\130\371\012"},
-    {0x2720, "\340\012\376\101"},
-    {0x2721, "\303\012\375\121"},
+    {0x2720, "\340\012\376\102"},
+    {0x2721, "\303\012\375\122"},
     {0x2722, "\340\372\304"},
-    {0x2723, "\340\373\373"},
-    {0x2724, "\371\146\340\373\373"},
-    {0x2725, "\340\377\226"},
+    {0x2723, "\340\373\374"},
+    {0x2724, "\371\147\340\373\374"},
+    {0x2725, "\340\377\227"},
     {0x2726, "\303\217\040\200\365"},
     {0x2727, "\303\315\040\200\365"},
-    {0x2729, "\303\315\040\371\012\374\266"},
+    {0x2729, "\303\315\040\371\012\374\267"},
     {0x272A, "\303\315\146"},
-    {0x272B, "\373\302\217"},
-    {0x272C, "\373\302\315"},
+    {0x272B, "\373\303\217"},
+    {0x272C, "\373\303\315"},
     {0x272D, "\303\217\130\371\012"},
     {0x272E, "\303\217\130\370\371\012"},
-    {0x272F, "\303\374\013"},
-    {0x2730, "\303\315\371\164"},
+    {0x272F, "\303\374\014"},
+    {0x2730, "\303\315\371\165"},
     {0x2731, "\370\371\011"},
-    {0x2732, "\371\011\373\352"},
+    {0x2732, "\371\011\373\353"},
     {0x2733, "\371\011\040\204\365"},
     {0x2734, "\303\217\040\204\365"},
-    {0x2735, "\303\374\013\040\204\365"},
+    {0x2735, "\303\374\014\040\204\365"},
     {0x2736, "\303\217\040\233\365"},
-    {0x2737, "\303\374\016\040\204\365"},
-    {0x2738, "\371\146\303\374\016\040\204\365"},
-    {0x2739, "\303\217\040\371\140\365"},
-    {0x273A, "\371\011\040\371\247\365"},
+    {0x2737, "\303\374\017\040\204\365"},
+    {0x2738, "\371\147\303\374\017\040\204\365"},
+    {0x2739, "\303\217\040\371\141\365"},
+    {0x273A, "\371\011\040\371\250\365"},
     {0x273B, "\371\011\372\101"},
-    {0x273C, "\371\011\372\101\373\352"},
+    {0x273C, "\371\011\372\101\373\353"},
     {0x273D, "\370\371\011\372\101"},
-    {0x273E, "\377\075\315\011\217"},
-    {0x273F, "\374\010\217"},
-    {0x2740, "\374\010\315"},
-    {0x2741, "\051\376\367\217\130\371\012"},
+    {0x273E, "\377\076\315\011\217"},
+    {0x273F, "\374\011\217"},
+    {0x2740, "\374\011\315"},
+    {0x2741, "\051\376\370\217\130\371\012"},
     {0x2742, "\303\146\372\326\040\204\365"},
-    {0x2743, "\370\374\334\376\375\372\101"},
+    {0x2743, "\370\374\335\376\376\372\101"},
     {0x2744, "\372\254\012\372\113"},
-    {0x2745, "\372\254\012\372\113\040\131\375\233\377\215"},
-    {0x2746, "\370\372\254\012\372\113\040\375\032"},
-    {0x2747, "\374\155"},
-    {0x2748, "\370\374\155"},
-    {0x2749, "\371\011\376\342"},
-    {0x274A, "\373\036\040\204\365\373\261"},
-    {0x274B, "\370\373\036\040\204\365\373\261"},
+    {0x2745, "\372\254\012\372\113\040\131\375\234\377\216"},
+    {0x2746, "\370\372\254\012\372\113\040\375\033"},
+    {0x2747, "\374\156"},
+    {0x2748, "\370\374\156"},
+    {0x2749, "\371\011\376\343"},
+    {0x274A, "\373\037\040\204\365\373\262"},
+    {0x274B, "\370\373\037\040\204\365\373\262"},
     {0x274D, "\252\133\372\321"},
-    {0x274F, "\021\133\130\371\242\373\376\372\156\035\222\300\173"},
-    {0x2750, "\021\133\130\371\242\373\376\372\156\035\222\326\173"},
-    {0x2751, "\021\133\372\321\371\216\222\300\173"},
-    {0x2752, "\021\133\372\321\371\216\222\326\173"},
-    {0x2756, "\371\110\156\376\104\371\132\310\133"},
-    {0x2758, "\210\224\373\165"},
-    {0x2759, "\210\224\373\306"},
-    {0x275A, "\210\224\377\331"},
-    {0x275B, "\371\014\012\371\230\007\242\012\371\146\331\270\371\343"},
-    {0x275C, "\371\014\012\371\230\007\242\012\371\146\331\270"},
-    {0x275D, "\371\014\012\371\230\007\242\012\371\146\331\051\371\343"},
-    {0x275E, "\371\014\012\371\230\007\242\012\371\146\331\051"},
-    {0x2761, "\373\353\012\373\303\012\371\230\040\320\375\070"},
-    {0x2762, "\370\027\371\131\012\371\230"},
-    {0x2763, "\370\027\371\131\012\371\230\007\242\012\371\223"},
-    {0x2764, "\370\371\223\156"},
-    {0x2765, "\370\371\223\156\372\224"},
-    {0x2766, "\371\223\373\167"},
-    {0x2767, "\371\223\373\167\372\224"},
+    {0x274F, "\021\133\130\371\243\373\377\372\156\035\222\300\173"},
+    {0x2750, "\021\133\130\371\243\373\377\372\156\035\222\326\173"},
+    {0x2751, "\021\133\372\321\371\217\222\300\173"},
+    {0x2752, "\021\133\372\321\371\217\222\326\173"},
+    {0x2756, "\371\111\156\376\105\371\133\310\133"},
+    {0x2758, "\210\224\373\166"},
+    {0x2759, "\210\224\373\307"},
+    {0x275A, "\210\224\377\332"},
+    {0x275B, "\371\014\012\371\231\007\242\012\371\147\331\270\371\344"},
+    {0x275C, "\371\014\012\371\231\007\242\012\371\147\331\270"},
+    {0x275D, "\371\014\012\371\231\007\242\012\371\147\331\051\371\344"},
+    {0x275E, "\371\014\012\371\231\007\242\012\371\147\331\051"},
+    {0x2761, "\373\354\012\373\304\012\371\231\040\320\375\071"},
+    {0x2762, "\370\027\371\132\012\371\231"},
+    {0x2763, "\370\027\371\132\012\371\231\007\242\012\371\224"},
+    {0x2764, "\370\371\224\156"},
+    {0x2765, "\370\371\224\156\372\224"},
+    {0x2766, "\371\224\373\170"},
+    {0x2767, "\371\224\373\170\372\224"},
     {0x2776, "\237\017\132\223\034"},
     {0x2777, "\237\017\154\223\034"},
     {0x2778, "\237\017\131\223\034"},
@@ -6458,52 +6459,52 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x2791, "\237\017\204\232\316\223\034"},
     {0x2792, "\237\017\235\232\316\223\034"},
     {0x2793, "\237\163\354\232\316\223\034"},
-    {0x2794, "\043\367\013\022\037\040\302\371\106"},
-    {0x2798, "\043\367\371\251"},
+    {0x2794, "\043\367\013\022\037\040\302\371\107"},
+    {0x2798, "\043\367\371\252"},
     {0x2799, "\043\367\013\022\037\367"},
-    {0x279A, "\043\367\371\241"},
-    {0x279B, "\043\012\377\220\013\022\037"},
-    {0x279C, "\043\367\040\302\374\322\013\022\037"},
+    {0x279A, "\043\367\371\242"},
+    {0x279B, "\043\012\377\221\013\022\037"},
+    {0x279C, "\043\367\040\302\374\323\013\022\037"},
     {0x279D, "\043\040\302\007\265\013\022\037"},
     {0x279E, "\043\367\040\302\007\265\013\022\037"},
     {0x279F, "\043\130\372\132\040\302\007\265\013\022\037"},
     {0x27A0, "\043\367\130\372\132\040\302\007\265\013\022\037"},
     {0x27A1, "\043\217\013\022\037"},
-    {0x27A2, "\302\012\043\013\022\037\007\374\105\374\154\371\041\035\065"},
-    {0x27A3, "\302\012\043\013\022\037\007\374\105\374\154\371\041\035\061"},
+    {0x27A2, "\302\012\043\013\022\037\007\374\106\374\155\371\042\035\065"},
+    {0x27A3, "\302\012\043\013\022\037\007\374\106\374\155\371\042\035\061"},
     {0x27A4, "\302\012\043\217\013\022\037"},
-    {0x27A5, "\043\217\367\373\101\013\035\061\011\013\022\037"},
-    {0x27A6, "\043\217\373\101\013\035\065\011\013\022\037"},
-    {0x27A7, "\043\217\377\217\013\022\037"},
-    {0x27A8, "\043\217\367\040\302\375\047\013\022\037"},
-    {0x27A9, "\043\315\013\022\037\371\164\040\372\076"},
-    {0x27AA, "\043\315\013\022\037\371\164\040\373\257"},
-    {0x27AB, "\043\315\013\022\037\373\351\013\373\257\011\371\164"},
-    {0x27AC, "\043\315\013\022\037\373\351\013\372\076\011\371\164"},
-    {0x27AD, "\043\315\367\013\022\037\040\371\242\371\233\037"},
-    {0x27AE, "\043\315\367\013\022\037\040\371\242\371\176\037"},
-    {0x27AF, "\043\373\152\315\013\022\037\371\164\040\372\076\011\371\041\375\137"},
-    {0x27B1, "\043\373\152\315\013\022\037\371\164\040\372\076\011\371\041\373\126"},
-    {0x27B2, "\043\315\367\013\022\037\040\371\012\375\035"},
-    {0x27B3, "\043\040\371\100\315\013\022\037"},
-    {0x27B4, "\043\040\371\100\156\371\251"},
-    {0x27B5, "\043\040\371\100\156\013\022\037"},
-    {0x27B6, "\043\040\371\100\156\371\241"},
-    {0x27B7, "\043\040\371\100\121\217\371\251"},
-    {0x27B8, "\043\040\371\100\121\217\013\022\037"},
-    {0x27B9, "\043\040\371\100\121\217\371\241"},
+    {0x27A5, "\043\217\367\373\102\013\035\061\011\013\022\037"},
+    {0x27A6, "\043\217\373\102\013\035\065\011\013\022\037"},
+    {0x27A7, "\043\217\377\220\013\022\037"},
+    {0x27A8, "\043\217\367\040\302\375\050\013\022\037"},
+    {0x27A9, "\043\315\013\022\037\371\165\040\372\076"},
+    {0x27AA, "\043\315\013\022\037\371\165\040\373\260"},
+    {0x27AB, "\043\315\013\022\037\373\352\013\373\260\011\371\165"},
+    {0x27AC, "\043\315\013\022\037\373\352\013\372\076\011\371\165"},
+    {0x27AD, "\043\315\367\013\022\037\040\371\243\371\234\037"},
+    {0x27AE, "\043\315\367\013\022\037\040\371\243\371\177\037"},
+    {0x27AF, "\043\373\153\315\013\022\037\371\165\040\372\076\011\371\042\375\140"},
+    {0x27B1, "\043\373\153\315\013\022\037\371\165\040\372\076\011\371\042\373\127"},
+    {0x27B2, "\043\315\367\013\022\037\040\371\012\375\036"},
+    {0x27B3, "\043\040\371\101\315\013\022\037"},
+    {0x27B4, "\043\040\371\101\156\371\252"},
+    {0x27B5, "\043\040\371\101\156\013\022\037"},
+    {0x27B6, "\043\040\371\101\156\371\242"},
+    {0x27B7, "\043\040\371\101\121\217\371\252"},
+    {0x27B8, "\043\040\371\101\121\217\013\022\037"},
+    {0x27B9, "\043\040\371\101\121\217\371\242"},
     {0x27BA, "\043\013\022\037\040\302\372\304"},
     {0x27BB, "\043\013\022\037\040\372\257\372\304"},
     {0x27BC, "\043\013\022\037\040\372\142\007\242\012\222"},
     {0x27BD, "\043\367\013\022\037\040\372\142\007\242\012\222"},
-    {0x27BE, "\043\013\022\037\040\371\012\371\306"},
-    {0x3000, "\371\025\063"},
+    {0x27BE, "\043\013\022\037\040\371\012\371\307"},
+    {0x3000, "\371\026\063"},
     {0x3001, "\331\063"},
     {0x3002, "\027\063"},
-    {0x3003, "\375\262\012\371\316"},
-    {0x3004, "\015\012\373\323\375\341\375\370"},
-    {0x3005, "\153\063\371\345"},
-    {0x3006, "\153\063\012\375\223"},
+    {0x3003, "\375\263\012\371\317"},
+    {0x3004, "\015\012\373\324\375\342\375\371"},
+    {0x3005, "\153\063\371\346"},
+    {0x3006, "\153\063\012\375\224"},
     {0x3007, "\311\063"},
     {0x3008, "\100\372\040\040\042"},
     {0x3009, "\100\372\040\040\037"},
@@ -6513,47 +6514,47 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x300D, "\100\222\173"},
     {0x300E, "\100\133\222\042"},
     {0x300F, "\100\133\222\173"},
-    {0x3010, "\100\156\371\277\042"},
-    {0x3011, "\100\156\371\277\173"},
+    {0x3010, "\100\156\371\300\042"},
+    {0x3011, "\100\156\371\300\173"},
     {0x3012, "\153\372\330"},
-    {0x3013, "\134\375\271"},
-    {0x3014, "\100\042\007\371\212"},
-    {0x3015, "\100\173\007\371\212"},
-    {0x3016, "\100\133\371\277\042"},
-    {0x3017, "\100\133\371\277\173"},
-    {0x3018, "\100\133\042\007\371\212"},
-    {0x3019, "\100\133\173\007\371\212"},
+    {0x3013, "\134\375\272"},
+    {0x3014, "\100\042\007\371\213"},
+    {0x3015, "\100\173\007\371\213"},
+    {0x3016, "\100\133\371\300\042"},
+    {0x3017, "\100\133\371\300\173"},
+    {0x3018, "\100\133\042\007\371\213"},
+    {0x3019, "\100\133\173\007\371\213"},
     {0x301A, "\100\133\042"},
     {0x301B, "\100\133\173"},
-    {0x301C, "\264\371\225\007\371\357"},
-    {0x301D, "\371\014\051\371\064\336"},
-    {0x301E, "\371\014\051\371\064"},
-    {0x301F, "\371\014\051\371\064\300"},
+    {0x301C, "\264\371\226\007\371\360"},
+    {0x301D, "\371\014\051\371\065\336"},
+    {0x301E, "\371\014\051\371\065"},
+    {0x301F, "\371\014\051\371\065\300"},
     {0x3020, "\372\173\007\153\372\330"},
-    {0x3021, "\163\132\371\102"},
-    {0x3022, "\163\154\371\102"},
-    {0x3023, "\163\131\371\102"},
-    {0x3024, "\163\200\371\102"},
-    {0x3025, "\163\203\371\102"},
-    {0x3026, "\163\233\371\102"},
-    {0x3027, "\163\221\371\102"},
-    {0x3028, "\163\204\371\102"},
-    {0x3029, "\163\235\371\102"},
-    {0x302A, "\153\063\012\272\375\230"},
-    {0x302B, "\153\063\012\272\373\035"},
-    {0x302C, "\153\063\012\272\377\113"},
-    {0x302D, "\153\063\012\272\375\201"},
+    {0x3021, "\163\132\371\103"},
+    {0x3022, "\163\154\371\103"},
+    {0x3023, "\163\131\371\103"},
+    {0x3024, "\163\200\371\103"},
+    {0x3025, "\163\203\371\103"},
+    {0x3026, "\163\233\371\103"},
+    {0x3027, "\163\221\371\103"},
+    {0x3028, "\163\204\371\103"},
+    {0x3029, "\163\235\371\103"},
+    {0x302A, "\153\063\012\272\375\231"},
+    {0x302B, "\153\063\012\272\373\036"},
+    {0x302C, "\153\063\012\272\377\114"},
+    {0x302D, "\153\063\012\272\375\202"},
     {0x302E, "\153\012\272\010\027"},
     {0x302F, "\153\012\272\010\051\027"},
-    {0x3030, "\264\371\225\372\001"},
-    {0x3031, "\153\224\371\370\012\371\316"},
-    {0x3032, "\153\224\371\370\012\371\316\130\371\067\372\031"},
-    {0x3033, "\267\371\176\012\153\224\371\370\012\371\316"},
-    {0x3034, "\267\371\176\012\153\224\371\370\012\371\316\130\371\067\372\031"},
-    {0x3035, "\267\371\233\012\153\224\371\370\012\371\316"},
+    {0x3030, "\264\371\226\372\002"},
+    {0x3031, "\153\224\371\371\012\371\317"},
+    {0x3032, "\153\224\371\371\012\371\317\130\371\070\372\032"},
+    {0x3033, "\267\371\177\012\153\224\371\371\012\371\317"},
+    {0x3034, "\267\371\177\012\153\224\371\371\012\371\317\130\371\070\372\032"},
+    {0x3035, "\267\371\234\012\153\224\371\371\012\371\317"},
     {0x3036, "\153\372\330\146"},
-    {0x3037, "\015\125\063\371\007\012\373\065\012\212"},
-    {0x303F, "\375\131\063"},
+    {0x3037, "\015\125\063\371\007\012\373\066\012\212"},
+    {0x303F, "\375\132\063"},
     {0x3041, "\001\075\046\003"},
     {0x3042, "\001\075\046"},
     {0x3043, "\001\075\072\003"},
@@ -6565,85 +6566,85 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x3049, "\001\075\050\003"},
     {0x304A, "\001\075\050"},
     {0x304B, "\001\075\244"},
-    {0x304C, "\001\075\371\056"},
+    {0x304C, "\001\075\371\057"},
     {0x304D, "\001\075\372\073"},
-    {0x304E, "\001\075\373\207"},
+    {0x304E, "\001\075\373\210"},
     {0x304F, "\001\075\372\075"},
-    {0x3050, "\001\075\373\216"},
-    {0x3051, "\001\075\371\235"},
-    {0x3052, "\001\075\373\202"},
-    {0x3053, "\001\075\371\237"},
-    {0x3054, "\001\075\373\214"},
+    {0x3050, "\001\075\373\217"},
+    {0x3051, "\001\075\371\236"},
+    {0x3052, "\001\075\373\203"},
+    {0x3053, "\001\075\371\240"},
+    {0x3054, "\001\075\373\215"},
     {0x3055, "\001\075\364"},
     {0x3056, "\001\075\372\177"},
     {0x3057, "\001\075\372\152"},
-    {0x3058, "\001\075\374\146"},
+    {0x3058, "\001\075\374\147"},
     {0x3059, "\001\075\372\161"},
-    {0x305A, "\001\075\374\151"},
-    {0x305B, "\001\075\371\317"},
-    {0x305C, "\001\075\374\145"},
-    {0x305D, "\001\075\371\045"},
-    {0x305E, "\001\075\374\150"},
+    {0x305A, "\001\075\374\152"},
+    {0x305B, "\001\075\371\320"},
+    {0x305C, "\001\075\374\146"},
+    {0x305D, "\001\075\371\046"},
+    {0x305E, "\001\075\374\151"},
     {0x305F, "\001\075\371\017"},
     {0x3060, "\001\075\371\013"},
-    {0x3061, "\001\075\372\022"},
-    {0x3062, "\001\075\373\130"},
-    {0x3063, "\001\075\371\255\003"},
-    {0x3064, "\001\075\371\255"},
+    {0x3061, "\001\075\372\023"},
+    {0x3062, "\001\075\373\131"},
+    {0x3063, "\001\075\371\256\003"},
+    {0x3064, "\001\075\371\256"},
     {0x3065, "\001\075\226"},
     {0x3066, "\001\075\372\165"},
     {0x3067, "\001\075\012"},
-    {0x3068, "\001\075\371\253"},
-    {0x3069, "\001\075\371\353"},
+    {0x3068, "\001\075\371\254"},
+    {0x3069, "\001\075\371\354"},
     {0x306A, "\001\075\371\002"},
     {0x306B, "\001\075\216"},
-    {0x306C, "\001\075\371\304"},
-    {0x306D, "\001\075\371\112"},
-    {0x306E, "\001\075\371\163"},
+    {0x306C, "\001\075\371\305"},
+    {0x306D, "\001\075\371\113"},
+    {0x306E, "\001\075\371\164"},
     {0x306F, "\001\075\333"},
-    {0x3070, "\001\075\371\052"},
+    {0x3070, "\001\075\371\053"},
     {0x3071, "\001\075\371\015"},
     {0x3072, "\001\075\372\067"},
-    {0x3073, "\001\075\373\047"},
-    {0x3074, "\001\075\371\307"},
+    {0x3073, "\001\075\373\050"},
+    {0x3074, "\001\075\371\310"},
     {0x3075, "\001\075\372\070"},
-    {0x3076, "\001\075\373\054"},
-    {0x3077, "\001\075\374\003"},
-    {0x3078, "\001\075\371\103"},
-    {0x3079, "\001\075\373\044"},
-    {0x307A, "\001\075\371\115"},
-    {0x307B, "\001\075\371\060"},
+    {0x3076, "\001\075\373\055"},
+    {0x3077, "\001\075\374\004"},
+    {0x3078, "\001\075\371\104"},
+    {0x3079, "\001\075\373\045"},
+    {0x307A, "\001\075\371\116"},
+    {0x307B, "\001\075\371\061"},
     {0x307C, "\001\075\372\045"},
     {0x307D, "\001\075\372\126"},
     {0x307E, "\001\075\360"},
     {0x307F, "\001\075\372\110"},
     {0x3080, "\001\075\371\001"},
     {0x3081, "\001\075\372\106"},
-    {0x3082, "\001\075\371\240"},
+    {0x3082, "\001\075\371\241"},
     {0x3083, "\001\075\332\003"},
     {0x3084, "\001\075\332"},
-    {0x3085, "\001\075\371\256\003"},
-    {0x3086, "\001\075\371\256"},
+    {0x3085, "\001\075\371\257\003"},
+    {0x3086, "\001\075\371\257"},
     {0x3087, "\001\075\371\021\003"},
     {0x3088, "\001\075\371\021"},
     {0x3089, "\001\075\345"},
     {0x308A, "\001\075\372\144"},
     {0x308B, "\001\075\372\146"},
-    {0x308C, "\001\075\371\314"},
-    {0x308D, "\001\075\372\014"},
-    {0x308E, "\001\075\371\121\003"},
-    {0x308F, "\001\075\371\121"},
-    {0x3090, "\001\075\371\330"},
-    {0x3091, "\001\075\372\033"},
-    {0x3092, "\001\075\371\122"},
+    {0x308C, "\001\075\371\315"},
+    {0x308D, "\001\075\372\015"},
+    {0x308E, "\001\075\371\122\003"},
+    {0x308F, "\001\075\371\122"},
+    {0x3090, "\001\075\371\331"},
+    {0x3091, "\001\075\372\034"},
+    {0x3092, "\001\075\371\123"},
     {0x3093, "\001\075\213"},
-    {0x3094, "\001\075\374\124"},
-    {0x3099, "\023\371\276\371\067\372\031"},
-    {0x309A, "\023\371\276\371\067\372\352"},
-    {0x309B, "\153\371\276\012\371\067\372\031"},
-    {0x309C, "\153\371\276\012\371\067\372\352"},
-    {0x309D, "\153\371\345\075"},
-    {0x309E, "\153\371\345\374\122\075"},
+    {0x3094, "\001\075\374\125"},
+    {0x3099, "\023\371\277\371\070\372\032"},
+    {0x309A, "\023\371\277\371\070\372\352"},
+    {0x309B, "\153\371\277\012\371\070\372\032"},
+    {0x309C, "\153\371\277\012\371\070\372\352"},
+    {0x309D, "\153\371\346\075"},
+    {0x309E, "\153\371\346\374\123\075"},
     {0x30A1, "\001\030\046\003"},
     {0x30A2, "\001\030\046"},
     {0x30A3, "\001\030\072\003"},
@@ -6655,89 +6656,89 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x30A9, "\001\030\050\003"},
     {0x30AA, "\001\030\050"},
     {0x30AB, "\001\030\244"},
-    {0x30AC, "\001\030\371\056"},
+    {0x30AC, "\001\030\371\057"},
     {0x30AD, "\001\030\372\073"},
-    {0x30AE, "\001\030\373\207"},
+    {0x30AE, "\001\030\373\210"},
     {0x30AF, "\001\030\372\075"},
-    {0x30B0, "\001\030\373\216"},
-    {0x30B1, "\001\030\371\235"},
-    {0x30B2, "\001\030\373\202"},
-    {0x30B3, "\001\030\371\237"},
-    {0x30B4, "\001\030\373\214"},
+    {0x30B0, "\001\030\373\217"},
+    {0x30B1, "\001\030\371\236"},
+    {0x30B2, "\001\030\373\203"},
+    {0x30B3, "\001\030\371\240"},
+    {0x30B4, "\001\030\373\215"},
     {0x30B5, "\001\030\364"},
     {0x30B6, "\001\030\372\177"},
     {0x30B7, "\001\030\372\152"},
-    {0x30B8, "\001\030\374\146"},
+    {0x30B8, "\001\030\374\147"},
     {0x30B9, "\001\030\372\161"},
-    {0x30BA, "\001\030\374\151"},
-    {0x30BB, "\001\030\371\317"},
-    {0x30BC, "\001\030\374\145"},
-    {0x30BD, "\001\030\371\045"},
-    {0x30BE, "\001\030\374\150"},
+    {0x30BA, "\001\030\374\152"},
+    {0x30BB, "\001\030\371\320"},
+    {0x30BC, "\001\030\374\146"},
+    {0x30BD, "\001\030\371\046"},
+    {0x30BE, "\001\030\374\151"},
     {0x30BF, "\001\030\371\017"},
     {0x30C0, "\001\030\371\013"},
-    {0x30C1, "\001\030\372\022"},
-    {0x30C2, "\001\030\373\130"},
-    {0x30C3, "\001\030\371\255\003"},
-    {0x30C4, "\001\030\371\255"},
+    {0x30C1, "\001\030\372\023"},
+    {0x30C2, "\001\030\373\131"},
+    {0x30C3, "\001\030\371\256\003"},
+    {0x30C4, "\001\030\371\256"},
     {0x30C5, "\001\030\226"},
     {0x30C6, "\001\030\372\165"},
     {0x30C7, "\001\030\012"},
-    {0x30C8, "\001\030\371\253"},
-    {0x30C9, "\001\030\371\353"},
+    {0x30C8, "\001\030\371\254"},
+    {0x30C9, "\001\030\371\354"},
     {0x30CA, "\001\030\371\002"},
     {0x30CB, "\001\030\216"},
-    {0x30CC, "\001\030\371\304"},
-    {0x30CD, "\001\030\371\112"},
-    {0x30CE, "\001\030\371\163"},
+    {0x30CC, "\001\030\371\305"},
+    {0x30CD, "\001\030\371\113"},
+    {0x30CE, "\001\030\371\164"},
     {0x30CF, "\001\030\333"},
-    {0x30D0, "\001\030\371\052"},
+    {0x30D0, "\001\030\371\053"},
     {0x30D1, "\001\030\371\015"},
     {0x30D2, "\001\030\372\067"},
-    {0x30D3, "\001\030\373\047"},
-    {0x30D4, "\001\030\371\307"},
+    {0x30D3, "\001\030\373\050"},
+    {0x30D4, "\001\030\371\310"},
     {0x30D5, "\001\030\372\070"},
-    {0x30D6, "\001\030\373\054"},
-    {0x30D7, "\001\030\374\003"},
-    {0x30D8, "\001\030\371\103"},
-    {0x30D9, "\001\030\373\044"},
-    {0x30DA, "\001\030\371\115"},
-    {0x30DB, "\001\030\371\060"},
+    {0x30D6, "\001\030\373\055"},
+    {0x30D7, "\001\030\374\004"},
+    {0x30D8, "\001\030\371\104"},
+    {0x30D9, "\001\030\373\045"},
+    {0x30DA, "\001\030\371\116"},
+    {0x30DB, "\001\030\371\061"},
     {0x30DC, "\001\030\372\045"},
     {0x30DD, "\001\030\372\126"},
     {0x30DE, "\001\030\360"},
     {0x30DF, "\001\030\372\110"},
     {0x30E0, "\001\030\371\001"},
     {0x30E1, "\001\030\372\106"},
-    {0x30E2, "\001\030\371\240"},
+    {0x30E2, "\001\030\371\241"},
     {0x30E3, "\001\030\332\003"},
     {0x30E4, "\001\030\332"},
-    {0x30E5, "\001\030\371\256\003"},
-    {0x30E6, "\001\030\371\256"},
+    {0x30E5, "\001\030\371\257\003"},
+    {0x30E6, "\001\030\371\257"},
     {0x30E7, "\001\030\371\021\003"},
     {0x30E8, "\001\030\371\021"},
     {0x30E9, "\001\030\345"},
     {0x30EA, "\001\030\372\144"},
     {0x30EB, "\001\030\372\146"},
-    {0x30EC, "\001\030\371\314"},
-    {0x30ED, "\001\030\372\014"},
-    {0x30EE, "\001\030\371\121\003"},
-    {0x30EF, "\001\030\371\121"},
-    {0x30F0, "\001\030\371\330"},
-    {0x30F1, "\001\030\372\033"},
-    {0x30F2, "\001\030\371\122"},
+    {0x30EC, "\001\030\371\315"},
+    {0x30ED, "\001\030\372\015"},
+    {0x30EE, "\001\030\371\122\003"},
+    {0x30EF, "\001\030\371\122"},
+    {0x30F0, "\001\030\371\331"},
+    {0x30F1, "\001\030\372\034"},
+    {0x30F2, "\001\030\371\123"},
     {0x30F3, "\001\030\213"},
-    {0x30F4, "\001\030\374\124"},
+    {0x30F4, "\001\030\374\125"},
     {0x30F5, "\001\030\244\003"},
-    {0x30F6, "\001\030\371\235\003"},
-    {0x30F7, "\001\030\371\206"},
-    {0x30F8, "\001\030\377\253"},
+    {0x30F6, "\001\030\371\236\003"},
+    {0x30F7, "\001\030\371\207"},
+    {0x30F8, "\001\030\377\254"},
     {0x30F9, "\001\030\372\172"},
     {0x30FA, "\001\030\373\002"},
-    {0x30FB, "\027\371\037\030"},
-    {0x30FC, "\153\371\276\012\371\067\372\134"},
-    {0x30FD, "\153\371\345\030"},
-    {0x30FE, "\153\371\345\374\122\030"},
+    {0x30FB, "\027\371\040\030"},
+    {0x30FC, "\153\371\277\012\371\070\372\134"},
+    {0x30FD, "\153\371\346\030"},
+    {0x30FE, "\153\371\346\374\123\030"},
     {0x3105, "\001\177\275"},
     {0x3106, "\001\177\351"},
     {0x3107, "\001\177\256"},
@@ -6750,11 +6751,11 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x310E, "\001\177\301"},
     {0x310F, "\001\177\230"},
     {0x3110, "\001\177\344"},
-    {0x3111, "\001\177\371\065"},
+    {0x3111, "\001\177\371\066"},
     {0x3112, "\001\177\310"},
-    {0x3113, "\001\177\377\321"},
-    {0x3114, "\001\177\375\023"},
-    {0x3115, "\001\177\377\067"},
+    {0x3113, "\001\177\377\322"},
+    {0x3114, "\001\177\375\024"},
+    {0x3115, "\001\177\377\070"},
     {0x3116, "\001\177\150"},
     {0x3117, "\001\177\243"},
     {0x3118, "\001\177\241"},
@@ -6762,31 +6763,31 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x311A, "\001\177\046"},
     {0x311B, "\001\177\050"},
     {0x311C, "\001\177\060"},
-    {0x311D, "\001\177\375\173"},
+    {0x311D, "\001\177\375\174"},
     {0x311E, "\001\177\250"},
-    {0x311F, "\001\177\373\146"},
-    {0x3120, "\001\177\371\216"},
+    {0x311F, "\001\177\373\147"},
+    {0x3120, "\001\177\371\217"},
     {0x3121, "\001\177\114"},
     {0x3122, "\001\177\372\205"},
     {0x3123, "\001\177\007"},
-    {0x3124, "\001\177\373\030"},
+    {0x3124, "\001\177\373\031"},
     {0x3125, "\001\177\372\060"},
-    {0x3126, "\001\177\375\203"},
+    {0x3126, "\001\177\375\204"},
     {0x3127, "\001\177\072"},
     {0x3128, "\001\177\107"},
-    {0x3129, "\001\177\375\353"},
+    {0x3129, "\001\177\375\354"},
     {0x312A, "\001\177\324"},
-    {0x312B, "\001\177\371\303"},
-    {0x312C, "\001\177\375\256"},
-    {0x3131, "\001\010\371\154"},
+    {0x312B, "\001\177\371\304"},
+    {0x312C, "\001\177\375\257"},
+    {0x3131, "\001\010\371\155"},
     {0x3132, "\001\010\372\157"},
     {0x3133, "\001\010\372\302"},
-    {0x3134, "\001\010\371\162"},
+    {0x3134, "\001\010\371\163"},
     {0x3135, "\001\010\372\316"},
     {0x3136, "\001\010\372\315"},
-    {0x3137, "\001\010\371\203"},
+    {0x3137, "\001\010\371\204"},
     {0x3138, "\001\010\372\364"},
-    {0x3139, "\001\010\371\171"},
+    {0x3139, "\001\010\371\172"},
     {0x313A, "\001\010\372\342"},
     {0x313B, "\001\010\372\343"},
     {0x313C, "\001\010\372\345"},
@@ -6794,86 +6795,86 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x313E, "\001\010\372\347"},
     {0x313F, "\001\010\372\344"},
     {0x3140, "\001\010\372\145"},
-    {0x3141, "\001\010\371\160"},
-    {0x3142, "\001\010\371\167"},
+    {0x3141, "\001\010\371\161"},
+    {0x3142, "\001\010\371\170"},
     {0x3143, "\001\010\372\362"},
     {0x3144, "\001\010\372\125"},
-    {0x3145, "\001\010\371\173"},
+    {0x3145, "\001\010\371\174"},
     {0x3146, "\001\010\372\160"},
-    {0x3147, "\001\010\371\151"},
-    {0x3148, "\001\010\371\116"},
+    {0x3147, "\001\010\371\152"},
+    {0x3148, "\001\010\371\117"},
     {0x3149, "\001\010\372\363"},
-    {0x314A, "\001\010\371\200"},
-    {0x314B, "\001\010\371\153"},
-    {0x314C, "\001\010\371\177"},
-    {0x314D, "\001\010\371\165"},
-    {0x314E, "\001\010\371\147"},
+    {0x314A, "\001\010\371\201"},
+    {0x314B, "\001\010\371\154"},
+    {0x314C, "\001\010\371\200"},
+    {0x314D, "\001\010\371\166"},
+    {0x314E, "\001\010\371\150"},
     {0x314F, "\001\010\046"},
     {0x3150, "\001\010\373\015"},
     {0x3151, "\001\010\332"},
     {0x3152, "\001\010\373\012"},
     {0x3153, "\001\010\050"},
-    {0x3154, "\001\010\371\257"},
+    {0x3154, "\001\010\371\260"},
     {0x3155, "\001\010\371\021"},
     {0x3156, "\001\010\373\013"},
     {0x3157, "\001\010\373\020"},
-    {0x3158, "\001\010\371\121"},
+    {0x3158, "\001\010\371\122"},
     {0x3159, "\001\010\373\004"},
     {0x315A, "\001\010\372\251"},
     {0x315B, "\001\010\373\014"},
     {0x315C, "\001\010\114"},
-    {0x315D, "\001\010\371\122"},
+    {0x315D, "\001\010\371\123"},
     {0x315E, "\001\010\373\005"},
-    {0x315F, "\001\010\371\330"},
-    {0x3160, "\001\010\371\050"},
+    {0x315F, "\001\010\371\331"},
+    {0x3160, "\001\010\371\051"},
     {0x3161, "\001\010\373\021"},
     {0x3162, "\001\010\373\022"},
     {0x3163, "\001\010\072"},
-    {0x3164, "\371\340\010"},
-    {0x3165, "\001\010\374\054"},
+    {0x3164, "\371\341\010"},
+    {0x3165, "\001\010\374\055"},
     {0x3166, "\001\010\372\317"},
-    {0x3167, "\001\010\373\317"},
-    {0x3168, "\001\010\373\316"},
-    {0x3169, "\001\010\374\023"},
-    {0x316A, "\001\010\374\027"},
-    {0x316B, "\001\010\374\026"},
-    {0x316C, "\001\010\374\025"},
-    {0x316D, "\001\010\374\030"},
+    {0x3167, "\001\010\373\320"},
+    {0x3168, "\001\010\373\317"},
+    {0x3169, "\001\010\374\024"},
+    {0x316A, "\001\010\374\030"},
+    {0x316B, "\001\010\374\027"},
+    {0x316C, "\001\010\374\026"},
+    {0x316D, "\001\010\374\031"},
     {0x316E, "\001\010\372\310"},
-    {0x316F, "\001\010\373\301"},
-    {0x3170, "\001\010\373\300"},
+    {0x316F, "\001\010\373\302"},
+    {0x3170, "\001\010\373\301"},
     {0x3171, "\001\010\372\275"},
-    {0x3172, "\001\010\373\356"},
-    {0x3173, "\001\010\373\364"},
-    {0x3174, "\001\010\373\360"},
-    {0x3175, "\001\010\373\361"},
-    {0x3176, "\001\010\373\363"},
-    {0x3177, "\001\010\373\362"},
+    {0x3172, "\001\010\373\357"},
+    {0x3173, "\001\010\373\365"},
+    {0x3174, "\001\010\373\361"},
+    {0x3175, "\001\010\373\362"},
+    {0x3176, "\001\010\373\364"},
+    {0x3177, "\001\010\373\363"},
     {0x3178, "\001\010\372\277"},
-    {0x3179, "\001\010\373\246"},
+    {0x3179, "\001\010\373\247"},
     {0x317A, "\001\010\372\354"},
-    {0x317B, "\001\010\374\045"},
+    {0x317B, "\001\010\374\046"},
     {0x317C, "\001\010\372\356"},
     {0x317D, "\001\010\372\355"},
-    {0x317E, "\001\010\374\047"},
+    {0x317E, "\001\010\374\050"},
     {0x317F, "\001\010\372\323"},
     {0x3180, "\001\010\372\361"},
     {0x3181, "\001\010\373\006"},
-    {0x3182, "\001\010\374\135"},
-    {0x3183, "\001\010\374\134"},
+    {0x3182, "\001\010\374\136"},
+    {0x3183, "\001\010\374\135"},
     {0x3184, "\001\010\372\276"},
-    {0x3185, "\001\010\374\053"},
+    {0x3185, "\001\010\374\054"},
     {0x3186, "\001\010\373\010"},
-    {0x3187, "\001\010\374\142"},
-    {0x3188, "\001\010\374\143"},
-    {0x3189, "\001\010\374\141"},
-    {0x318A, "\001\010\374\137"},
-    {0x318B, "\001\010\374\140"},
-    {0x318C, "\001\010\374\136"},
-    {0x318D, "\001\010\373\034"},
-    {0x318E, "\001\010\374\331"},
-    {0x3190, "\153\346\063\012\376\053"},
-    {0x3191, "\153\346\063\375\113"},
+    {0x3187, "\001\010\374\143"},
+    {0x3188, "\001\010\374\144"},
+    {0x3189, "\001\010\374\142"},
+    {0x318A, "\001\010\374\140"},
+    {0x318B, "\001\010\374\141"},
+    {0x318C, "\001\010\374\137"},
+    {0x318D, "\001\010\373\035"},
+    {0x318E, "\001\010\374\332"},
+    {0x3190, "\153\346\063\012\376\054"},
+    {0x3191, "\153\346\063\375\114"},
     {0x3192, "\153\346\063\132"},
     {0x3193, "\153\346\063\154"},
     {0x3194, "\153\346\063\131"},
@@ -6881,42 +6882,42 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x3196, "\153\346\063\226\065"},
     {0x3197, "\153\346\063\226\372\213"},
     {0x3198, "\153\346\063\226\061"},
-    {0x3199, "\153\346\063\226\373\375"},
-    {0x319A, "\153\346\063\226\377\056"},
-    {0x319B, "\153\346\063\226\377\225"},
-    {0x319C, "\153\346\063\226\374\007"},
+    {0x3199, "\153\346\063\226\373\376"},
+    {0x319A, "\153\346\063\226\377\057"},
+    {0x319B, "\153\346\063\226\377\226"},
+    {0x319C, "\153\346\063\226\374\010"},
     {0x319D, "\153\346\063\226\372\216"},
-    {0x319E, "\153\346\063\012\022\372\021"},
-    {0x319F, "\153\346\063\012\376\044"},
-    {0x3200, "\010\371\154\052\053"},
-    {0x3201, "\010\371\162\052\053"},
-    {0x3202, "\010\371\203\052\053"},
-    {0x3203, "\010\371\171\052\053"},
-    {0x3204, "\010\371\160\052\053"},
-    {0x3205, "\010\371\167\052\053"},
-    {0x3206, "\010\371\173\052\053"},
-    {0x3207, "\010\371\151\052\053"},
-    {0x3208, "\010\371\116\052\053"},
-    {0x3209, "\010\371\200\052\053"},
-    {0x320A, "\010\371\153\052\053"},
-    {0x320B, "\010\371\177\052\053"},
-    {0x320C, "\010\371\165\052\053"},
-    {0x320D, "\010\371\147\052\053"},
-    {0x320E, "\010\371\154\046\052\053"},
-    {0x320F, "\010\371\162\046\052\053"},
-    {0x3210, "\010\371\203\046\052\053"},
-    {0x3211, "\010\371\171\046\052\053"},
-    {0x3212, "\010\371\160\046\052\053"},
-    {0x3213, "\010\371\167\046\052\053"},
-    {0x3214, "\010\371\173\046\052\053"},
-    {0x3215, "\010\371\151\046\052\053"},
-    {0x3216, "\010\371\116\046\052\053"},
-    {0x3217, "\010\371\200\046\052\053"},
-    {0x3218, "\010\371\153\046\052\053"},
-    {0x3219, "\010\371\177\046\052\053"},
-    {0x321A, "\010\371\165\046\052\053"},
-    {0x321B, "\010\371\147\046\052\053"},
-    {0x321C, "\010\371\116\114\052\053"},
+    {0x319E, "\153\346\063\012\022\372\022"},
+    {0x319F, "\153\346\063\012\376\045"},
+    {0x3200, "\010\371\155\052\053"},
+    {0x3201, "\010\371\163\052\053"},
+    {0x3202, "\010\371\204\052\053"},
+    {0x3203, "\010\371\172\052\053"},
+    {0x3204, "\010\371\161\052\053"},
+    {0x3205, "\010\371\170\052\053"},
+    {0x3206, "\010\371\174\052\053"},
+    {0x3207, "\010\371\152\052\053"},
+    {0x3208, "\010\371\117\052\053"},
+    {0x3209, "\010\371\201\052\053"},
+    {0x320A, "\010\371\154\052\053"},
+    {0x320B, "\010\371\200\052\053"},
+    {0x320C, "\010\371\166\052\053"},
+    {0x320D, "\010\371\150\052\053"},
+    {0x320E, "\010\371\155\046\052\053"},
+    {0x320F, "\010\371\163\046\052\053"},
+    {0x3210, "\010\371\204\046\052\053"},
+    {0x3211, "\010\371\172\046\052\053"},
+    {0x3212, "\010\371\161\046\052\053"},
+    {0x3213, "\010\371\170\046\052\053"},
+    {0x3214, "\010\371\174\046\052\053"},
+    {0x3215, "\010\371\152\046\052\053"},
+    {0x3216, "\010\371\117\046\052\053"},
+    {0x3217, "\010\371\201\046\052\053"},
+    {0x3218, "\010\371\154\046\052\053"},
+    {0x3219, "\010\371\200\046\052\053"},
+    {0x321A, "\010\371\166\046\052\053"},
+    {0x321B, "\010\371\150\046\052\053"},
+    {0x321C, "\010\371\117\114\052\053"},
     {0x3220, "\077\132\052\053"},
     {0x3221, "\077\154\052\053"},
     {0x3222, "\077\131\052\053"},
@@ -6930,58 +6931,58 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x322A, "\077\372\104\052\053"},
     {0x322B, "\077\372\253\052\053"},
     {0x322C, "\077\372\247\052\053"},
-    {0x322D, "\077\373\053\052\053"},
-    {0x322E, "\077\373\312\052\053"},
-    {0x322F, "\077\372\021\052\053"},
-    {0x3230, "\077\372\015\052\053"},
-    {0x3231, "\077\373\272\052\053"},
-    {0x3232, "\077\373\040\052\053"},
+    {0x322D, "\077\373\054\052\053"},
+    {0x322E, "\077\373\313\052\053"},
+    {0x322F, "\077\372\022\052\053"},
+    {0x3230, "\077\372\016\052\053"},
+    {0x3231, "\077\373\273\052\053"},
+    {0x3232, "\077\373\041\052\053"},
     {0x3233, "\077\372\357\052\053"},
-    {0x3234, "\077\373\322\052\053"},
-    {0x3235, "\077\374\052\052\053"},
-    {0x3236, "\077\373\164\052\053"},
-    {0x3237, "\077\373\200\052\053"},
-    {0x3238, "\077\374\104\052\053"},
-    {0x3239, "\077\377\004\052\053"},
-    {0x323A, "\077\374\320\052\053"},
-    {0x323B, "\077\374\156\052\053"},
-    {0x323C, "\077\377\127\052\053"},
-    {0x323D, "\077\373\153\052\053"},
-    {0x323E, "\077\374\021\052\053"},
-    {0x323F, "\077\373\027\052\053"},
-    {0x3240, "\077\375\224\052\053"},
-    {0x3241, "\077\374\020\052\053"},
-    {0x3242, "\077\377\110\052\053"},
-    {0x3243, "\077\374\336\052\053"},
-    {0x3260, "\010\034\371\154"},
-    {0x3261, "\010\034\371\162"},
-    {0x3262, "\010\034\371\203"},
-    {0x3263, "\010\034\371\171"},
-    {0x3264, "\010\034\371\160"},
-    {0x3265, "\010\034\371\167"},
-    {0x3266, "\010\034\371\173"},
-    {0x3267, "\010\034\371\151"},
-    {0x3268, "\010\034\371\116"},
-    {0x3269, "\010\034\371\200"},
-    {0x326A, "\010\034\371\153"},
-    {0x326B, "\010\034\371\177"},
-    {0x326C, "\010\034\371\165"},
-    {0x326D, "\010\034\371\147"},
-    {0x326E, "\010\034\371\154\046"},
-    {0x326F, "\010\034\371\162\046"},
-    {0x3270, "\010\034\371\203\046"},
-    {0x3271, "\010\034\371\171\046"},
-    {0x3272, "\010\034\371\160\046"},
-    {0x3273, "\010\034\371\167\046"},
-    {0x3274, "\010\034\371\173\046"},
-    {0x3275, "\010\034\371\151\046"},
-    {0x3276, "\010\034\371\116\046"},
-    {0x3277, "\010\034\371\200\046"},
-    {0x3278, "\010\034\371\153\046"},
-    {0x3279, "\010\034\371\177\046"},
-    {0x327A, "\010\034\371\165\046"},
-    {0x327B, "\010\034\371\147\046"},
-    {0x327F, "\015\012\373\323\375\064"},
+    {0x3234, "\077\373\323\052\053"},
+    {0x3235, "\077\374\053\052\053"},
+    {0x3236, "\077\373\165\052\053"},
+    {0x3237, "\077\373\201\052\053"},
+    {0x3238, "\077\374\105\052\053"},
+    {0x3239, "\077\377\005\052\053"},
+    {0x323A, "\077\374\321\052\053"},
+    {0x323B, "\077\374\157\052\053"},
+    {0x323C, "\077\377\130\052\053"},
+    {0x323D, "\077\373\154\052\053"},
+    {0x323E, "\077\374\022\052\053"},
+    {0x323F, "\077\373\030\052\053"},
+    {0x3240, "\077\375\225\052\053"},
+    {0x3241, "\077\374\021\052\053"},
+    {0x3242, "\077\377\111\052\053"},
+    {0x3243, "\077\374\337\052\053"},
+    {0x3260, "\010\034\371\155"},
+    {0x3261, "\010\034\371\163"},
+    {0x3262, "\010\034\371\204"},
+    {0x3263, "\010\034\371\172"},
+    {0x3264, "\010\034\371\161"},
+    {0x3265, "\010\034\371\170"},
+    {0x3266, "\010\034\371\174"},
+    {0x3267, "\010\034\371\152"},
+    {0x3268, "\010\034\371\117"},
+    {0x3269, "\010\034\371\201"},
+    {0x326A, "\010\034\371\154"},
+    {0x326B, "\010\034\371\200"},
+    {0x326C, "\010\034\371\166"},
+    {0x326D, "\010\034\371\150"},
+    {0x326E, "\010\034\371\155\046"},
+    {0x326F, "\010\034\371\163\046"},
+    {0x3270, "\010\034\371\204\046"},
+    {0x3271, "\010\034\371\172\046"},
+    {0x3272, "\010\034\371\161\046"},
+    {0x3273, "\010\034\371\170\046"},
+    {0x3274, "\010\034\371\174\046"},
+    {0x3275, "\010\034\371\152\046"},
+    {0x3276, "\010\034\371\117\046"},
+    {0x3277, "\010\034\371\201\046"},
+    {0x3278, "\010\034\371\154\046"},
+    {0x3279, "\010\034\371\200\046"},
+    {0x327A, "\010\034\371\166\046"},
+    {0x327B, "\010\034\371\150\046"},
+    {0x327F, "\015\012\373\324\375\065"},
     {0x3280, "\077\132\034"},
     {0x3281, "\077\154\034"},
     {0x3282, "\077\131\034"},
@@ -6995,54 +6996,54 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x328A, "\077\372\104\034"},
     {0x328B, "\077\372\253\034"},
     {0x328C, "\077\372\247\034"},
-    {0x328D, "\077\373\053\034"},
-    {0x328E, "\077\373\312\034"},
-    {0x328F, "\077\372\021\034"},
-    {0x3290, "\077\372\015\034"},
-    {0x3291, "\077\373\272\034"},
-    {0x3292, "\077\373\040\034"},
+    {0x328D, "\077\373\054\034"},
+    {0x328E, "\077\373\313\034"},
+    {0x328F, "\077\372\022\034"},
+    {0x3290, "\077\372\016\034"},
+    {0x3291, "\077\373\273\034"},
+    {0x3292, "\077\373\041\034"},
     {0x3293, "\077\372\357\034"},
-    {0x3294, "\077\373\322\034"},
-    {0x3295, "\077\374\052\034"},
-    {0x3296, "\077\373\164\034"},
-    {0x3297, "\077\373\200\034"},
-    {0x3298, "\077\374\104\034"},
-    {0x3299, "\077\377\060\034"},
-    {0x329A, "\077\373\311\034"},
-    {0x329B, "\077\373\161\034"},
-    {0x329C, "\077\374\267\034"},
-    {0x329D, "\077\375\211\034"},
-    {0x329E, "\077\375\337\034"},
-    {0x329F, "\077\374\340\034"},
-    {0x32A0, "\077\374\324\034"},
-    {0x32A1, "\077\374\020\034"},
-    {0x32A2, "\077\375\057\034"},
-    {0x32A3, "\077\375\062\034"},
+    {0x3294, "\077\373\323\034"},
+    {0x3295, "\077\374\053\034"},
+    {0x3296, "\077\373\165\034"},
+    {0x3297, "\077\373\201\034"},
+    {0x3298, "\077\374\105\034"},
+    {0x3299, "\077\377\061\034"},
+    {0x329A, "\077\373\312\034"},
+    {0x329B, "\077\373\162\034"},
+    {0x329C, "\077\374\270\034"},
+    {0x329D, "\077\375\212\034"},
+    {0x329E, "\077\375\340\034"},
+    {0x329F, "\077\374\341\034"},
+    {0x32A0, "\077\374\325\034"},
+    {0x32A1, "\077\374\021\034"},
+    {0x32A2, "\077\375\060\034"},
+    {0x32A3, "\077\375\063\034"},
     {0x32A4, "\077\065\034"},
     {0x32A5, "\077\372\213\034"},
     {0x32A6, "\077\061\034"},
     {0x32A7, "\077\042\034"},
     {0x32A8, "\077\173\034"},
-    {0x32A9, "\077\376\160\034"},
-    {0x32AA, "\077\377\001\034"},
-    {0x32AB, "\077\374\156\034"},
-    {0x32AC, "\077\377\130\034"},
-    {0x32AD, "\077\373\153\034"},
-    {0x32AE, "\077\374\021\034"},
-    {0x32AF, "\077\373\027\034"},
-    {0x32B0, "\077\376\225\034"},
-    {0x32C0, "\015\125\063\375\367"},
-    {0x32C1, "\015\125\063\375\243"},
-    {0x32C2, "\015\125\063\376\105"},
-    {0x32C3, "\015\125\063\374\344"},
-    {0x32C4, "\015\125\063\371\030"},
-    {0x32C5, "\015\125\063\375\373"},
-    {0x32C6, "\015\125\063\375\372"},
-    {0x32C7, "\015\125\063\374\316"},
-    {0x32C8, "\015\125\063\377\065"},
-    {0x32C9, "\015\125\063\376\235"},
-    {0x32CA, "\015\125\063\376\222"},
-    {0x32CB, "\015\125\063\375\157"},
+    {0x32A9, "\077\376\161\034"},
+    {0x32AA, "\077\377\002\034"},
+    {0x32AB, "\077\374\157\034"},
+    {0x32AC, "\077\377\131\034"},
+    {0x32AD, "\077\373\154\034"},
+    {0x32AE, "\077\374\022\034"},
+    {0x32AF, "\077\373\030\034"},
+    {0x32B0, "\077\376\226\034"},
+    {0x32C0, "\015\125\063\375\370"},
+    {0x32C1, "\015\125\063\375\244"},
+    {0x32C2, "\015\125\063\376\106"},
+    {0x32C3, "\015\125\063\374\345"},
+    {0x32C4, "\015\125\063\371\031"},
+    {0x32C5, "\015\125\063\375\374"},
+    {0x32C6, "\015\125\063\375\373"},
+    {0x32C7, "\015\125\063\374\317"},
+    {0x32C8, "\015\125\063\377\066"},
+    {0x32C9, "\015\125\063\376\236"},
+    {0x32CA, "\015\125\063\376\223"},
+    {0x32CB, "\015\125\063\375\160"},
     {0x32D0, "\030\034\046"},
     {0x32D1, "\030\034\072"},
     {0x32D2, "\030\034\107"},
@@ -7051,133 +7052,133 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x32D5, "\030\034\244"},
     {0x32D6, "\030\034\372\073"},
     {0x32D7, "\030\034\372\075"},
-    {0x32D8, "\030\034\371\235"},
-    {0x32D9, "\030\034\371\237"},
+    {0x32D8, "\030\034\371\236"},
+    {0x32D9, "\030\034\371\240"},
     {0x32DA, "\030\034\364"},
     {0x32DB, "\030\034\372\152"},
     {0x32DC, "\030\034\372\161"},
-    {0x32DD, "\030\034\371\317"},
-    {0x32DE, "\030\034\371\045"},
+    {0x32DD, "\030\034\371\320"},
+    {0x32DE, "\030\034\371\046"},
     {0x32DF, "\030\034\371\017"},
-    {0x32E0, "\030\034\372\022"},
-    {0x32E1, "\030\034\371\255"},
+    {0x32E0, "\030\034\372\023"},
+    {0x32E1, "\030\034\371\256"},
     {0x32E2, "\030\034\372\165"},
-    {0x32E3, "\030\034\371\253"},
+    {0x32E3, "\030\034\371\254"},
     {0x32E4, "\030\034\371\002"},
     {0x32E5, "\030\034\216"},
-    {0x32E6, "\030\034\371\304"},
-    {0x32E7, "\030\034\371\112"},
-    {0x32E8, "\030\034\371\163"},
+    {0x32E6, "\030\034\371\305"},
+    {0x32E7, "\030\034\371\113"},
+    {0x32E8, "\030\034\371\164"},
     {0x32E9, "\030\034\333"},
     {0x32EA, "\030\034\372\067"},
     {0x32EB, "\030\034\372\070"},
-    {0x32EC, "\030\034\371\103"},
-    {0x32ED, "\030\034\371\060"},
+    {0x32EC, "\030\034\371\104"},
+    {0x32ED, "\030\034\371\061"},
     {0x32EE, "\030\034\360"},
     {0x32EF, "\030\034\372\110"},
     {0x32F0, "\030\034\371\001"},
     {0x32F1, "\030\034\372\106"},
-    {0x32F2, "\030\034\371\240"},
+    {0x32F2, "\030\034\371\241"},
     {0x32F3, "\030\034\332"},
-    {0x32F4, "\030\034\371\256"},
+    {0x32F4, "\030\034\371\257"},
     {0x32F5, "\030\034\371\021"},
     {0x32F6, "\030\034\345"},
     {0x32F7, "\030\034\372\144"},
     {0x32F8, "\030\034\372\146"},
-    {0x32F9, "\030\034\371\314"},
-    {0x32FA, "\030\034\372\014"},
-    {0x32FB, "\030\034\371\121"},
-    {0x32FC, "\030\034\371\330"},
-    {0x32FD, "\030\034\372\033"},
-    {0x32FE, "\030\034\371\122"},
-    {0x3300, "\374\317\031\007\021"},
-    {0x3301, "\374\325\031\007\021"},
-    {0x3302, "\374\313\031\007\021"},
-    {0x3303, "\374\263\031\007\021"},
-    {0x3304, "\375\344\031\007\021"},
-    {0x3305, "\375\347\031\007\021"},
-    {0x3306, "\377\240\031\007\021"},
-    {0x3307, "\375\207\031\007\021"},
-    {0x3308, "\375\167\031\007\021"},
-    {0x3309, "\376\240\031\007\021"},
-    {0x330A, "\376\241\031\007\021"},
-    {0x330B, "\376\001\031\007\021"},
-    {0x330C, "\376\003\031\007\021"},
-    {0x330D, "\376\004\031\007\021"},
-    {0x330E, "\375\245\031\007\021"},
-    {0x330F, "\375\244\031\007\021"},
-    {0x3310, "\375\252\031\007\021"},
-    {0x3311, "\375\254\031\007\021"},
-    {0x3312, "\376\042\031\007\021"},
-    {0x3313, "\375\255\031\007\021"},
-    {0x3314, "\376\017\031\007\021"},
-    {0x3315, "\376\020\031\007\021"},
-    {0x3316, "\376\021\031\007\021"},
-    {0x3317, "\376\022\031\007\021"},
-    {0x3318, "\375\263\031\007\021"},
-    {0x3319, "\375\264\031\007\021"},
-    {0x331A, "\376\037\031\007\021"},
-    {0x331B, "\376\036\031\007\021"},
-    {0x331C, "\376\007\031\007\021"},
-    {0x331D, "\376\031\031\007\021"},
-    {0x331E, "\376\030\031\007\021"},
-    {0x331F, "\377\037\031\007\021"},
-    {0x3320, "\377\051\031\007\021"},
-    {0x3321, "\377\073\031\007\021"},
-    {0x3322, "\377\063\031\007\021"},
-    {0x3323, "\377\064\031\007\021"},
-    {0x3324, "\375\117\031\007\021"},
-    {0x3325, "\375\136\031\007\021"},
-    {0x3326, "\375\154\031\007\021"},
-    {0x3327, "\377\206\031\007\021"},
-    {0x3328, "\376\173\031\007\021"},
-    {0x3329, "\376\216\031\007\021"},
-    {0x332A, "\375\272\031\007\021"},
-    {0x332B, "\376\261\031\007\021"},
-    {0x332C, "\376\262\031\007\021"},
-    {0x332D, "\374\347\031\007\021"},
-    {0x332E, "\376\320\031\007\021"},
-    {0x332F, "\376\322\031\007\021"},
-    {0x3330, "\376\321\031\007\021"},
-    {0x3331, "\374\366\031\007\021"},
-    {0x3332, "\375\322\031\007\021"},
-    {0x3333, "\375\323\031\007\021"},
-    {0x3334, "\375\001\031\007\021"},
-    {0x3335, "\375\324\031\007\021"},
-    {0x3336, "\375\276\031\007\021"},
-    {0x3337, "\376\310\031\007\021"},
-    {0x3338, "\376\302\031\007\021"},
-    {0x3339, "\375\300\031\007\021"},
-    {0x333A, "\376\303\031\007\021"},
-    {0x333B, "\376\301\031\007\021"},
-    {0x333C, "\374\360\031\007\021"},
-    {0x333D, "\376\340\031\007\021"},
-    {0x333E, "\374\373\031\007\021"},
-    {0x333F, "\375\312\031\007\021"},
-    {0x3340, "\376\343\031\007\021"},
-    {0x3341, "\375\314\031\007\021"},
-    {0x3342, "\375\313\031\007\021"},
-    {0x3343, "\376\112\031\007\021"},
-    {0x3344, "\376\111\031\007\021"},
-    {0x3345, "\376\072\031\007\021"},
-    {0x3346, "\376\100\031\007\021"},
-    {0x3347, "\376\102\031\007\021"},
-    {0x3348, "\376\123\031\007\021"},
-    {0x3349, "\376\127\031\007\021"},
-    {0x334A, "\376\130\031\007\021"},
+    {0x32F9, "\030\034\371\315"},
+    {0x32FA, "\030\034\372\015"},
+    {0x32FB, "\030\034\371\122"},
+    {0x32FC, "\030\034\371\331"},
+    {0x32FD, "\030\034\372\034"},
+    {0x32FE, "\030\034\371\123"},
+    {0x3300, "\374\320\031\007\021"},
+    {0x3301, "\374\326\031\007\021"},
+    {0x3302, "\374\314\031\007\021"},
+    {0x3303, "\374\264\031\007\021"},
+    {0x3304, "\375\345\031\007\021"},
+    {0x3305, "\375\350\031\007\021"},
+    {0x3306, "\377\241\031\007\021"},
+    {0x3307, "\375\210\031\007\021"},
+    {0x3308, "\375\170\031\007\021"},
+    {0x3309, "\376\241\031\007\021"},
+    {0x330A, "\376\242\031\007\021"},
+    {0x330B, "\376\002\031\007\021"},
+    {0x330C, "\376\004\031\007\021"},
+    {0x330D, "\376\005\031\007\021"},
+    {0x330E, "\375\246\031\007\021"},
+    {0x330F, "\375\245\031\007\021"},
+    {0x3310, "\375\253\031\007\021"},
+    {0x3311, "\375\255\031\007\021"},
+    {0x3312, "\376\043\031\007\021"},
+    {0x3313, "\375\256\031\007\021"},
+    {0x3314, "\376\020\031\007\021"},
+    {0x3315, "\376\021\031\007\021"},
+    {0x3316, "\376\022\031\007\021"},
+    {0x3317, "\376\023\031\007\021"},
+    {0x3318, "\375\264\031\007\021"},
+    {0x3319, "\375\265\031\007\021"},
+    {0x331A, "\376\040\031\007\021"},
+    {0x331B, "\376\037\031\007\021"},
+    {0x331C, "\376\010\031\007\021"},
+    {0x331D, "\376\032\031\007\021"},
+    {0x331E, "\376\031\031\007\021"},
+    {0x331F, "\377\040\031\007\021"},
+    {0x3320, "\377\052\031\007\021"},
+    {0x3321, "\377\074\031\007\021"},
+    {0x3322, "\377\064\031\007\021"},
+    {0x3323, "\377\065\031\007\021"},
+    {0x3324, "\375\120\031\007\021"},
+    {0x3325, "\375\137\031\007\021"},
+    {0x3326, "\375\155\031\007\021"},
+    {0x3327, "\377\207\031\007\021"},
+    {0x3328, "\376\174\031\007\021"},
+    {0x3329, "\376\217\031\007\021"},
+    {0x332A, "\375\273\031\007\021"},
+    {0x332B, "\376\262\031\007\021"},
+    {0x332C, "\376\263\031\007\021"},
+    {0x332D, "\374\350\031\007\021"},
+    {0x332E, "\376\321\031\007\021"},
+    {0x332F, "\376\323\031\007\021"},
+    {0x3330, "\376\322\031\007\021"},
+    {0x3331, "\374\367\031\007\021"},
+    {0x3332, "\375\323\031\007\021"},
+    {0x3333, "\375\324\031\007\021"},
+    {0x3334, "\375\002\031\007\021"},
+    {0x3335, "\375\325\031\007\021"},
+    {0x3336, "\375\277\031\007\021"},
+    {0x3337, "\376\311\031\007\021"},
+    {0x3338, "\376\303\031\007\021"},
+    {0x3339, "\375\301\031\007\021"},
+    {0x333A, "\376\304\031\007\021"},
+    {0x333B, "\376\302\031\007\021"},
+    {0x333C, "\374\361\031\007\021"},
+    {0x333D, "\376\341\031\007\021"},
+    {0x333E, "\374\374\031\007\021"},
+    {0x333F, "\375\313\031\007\021"},
+    {0x3340, "\376\344\031\007\021"},
+    {0x3341, "\375\315\031\007\021"},
+    {0x3342, "\375\314\031\007\021"},
+    {0x3343, "\376\113\031\007\021"},
+    {0x3344, "\376\112\031\007\021"},
+    {0x3345, "\376\073\031\007\021"},
+    {0x3346, "\376\101\031\007\021"},
+    {0x3347, "\376\103\031\007\021"},
+    {0x3348, "\376\124\031\007\021"},
+    {0x3349, "\376\130\031\007\021"},
+    {0x334A, "\376\131\031\007\021"},
     {0x334B, "\372\314\031\007\021"},
-    {0x334C, "\376\163\031\007\021"},
-    {0x334D, "\376\113\031\007\021"},
-    {0x334E, "\377\277\031\007\021"},
-    {0x334F, "\377\300\031\007\021"},
-    {0x3350, "\377\316\031\007\021"},
-    {0x3351, "\377\011\031\007\021"},
-    {0x3352, "\377\010\031\007\021"},
-    {0x3353, "\377\027\031\007\021"},
-    {0x3354, "\377\030\031\007\021"},
-    {0x3355, "\377\002\031\007\021"},
-    {0x3356, "\377\003\031\007\021"},
-    {0x3357, "\377\272\031\007\021"},
+    {0x334C, "\376\164\031\007\021"},
+    {0x334D, "\376\114\031\007\021"},
+    {0x334E, "\377\300\031\007\021"},
+    {0x334F, "\377\301\031\007\021"},
+    {0x3350, "\377\317\031\007\021"},
+    {0x3351, "\377\012\031\007\021"},
+    {0x3352, "\377\011\031\007\021"},
+    {0x3353, "\377\030\031\007\021"},
+    {0x3354, "\377\031\031\007\021"},
+    {0x3355, "\377\003\031\007\021"},
+    {0x3356, "\377\004\031\007\021"},
+    {0x3357, "\377\273\031\007\021"},
     {0x3358, "\015\125\063\255\311"},
     {0x3359, "\015\125\063\255\132"},
     {0x335A, "\015\125\063\255\154"},
@@ -7189,58 +7190,58 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x3360, "\015\125\063\255\204"},
     {0x3361, "\015\125\063\255\235"},
     {0x3362, "\015\125\063\255\354"},
-    {0x3363, "\015\125\063\255\371\243"},
-    {0x3364, "\015\125\063\255\371\140"},
-    {0x3365, "\015\125\063\255\372\023"},
-    {0x3366, "\015\125\063\255\372\011"},
-    {0x3367, "\015\125\063\255\372\012"},
-    {0x3368, "\015\125\063\255\371\247"},
-    {0x3369, "\015\125\063\255\371\352"},
-    {0x336A, "\015\125\063\255\371\350"},
-    {0x336B, "\015\125\063\255\371\351"},
-    {0x336C, "\015\125\063\255\372\030"},
-    {0x336D, "\015\125\063\255\374\116"},
-    {0x336E, "\015\125\063\255\374\115"},
-    {0x336F, "\015\125\063\255\374\120"},
-    {0x3370, "\015\125\063\255\374\117"},
-    {0x3371, "\375\321\031\007\021"},
+    {0x3363, "\015\125\063\255\371\244"},
+    {0x3364, "\015\125\063\255\371\141"},
+    {0x3365, "\015\125\063\255\372\024"},
+    {0x3366, "\015\125\063\255\372\012"},
+    {0x3367, "\015\125\063\255\372\013"},
+    {0x3368, "\015\125\063\255\371\250"},
+    {0x3369, "\015\125\063\255\371\353"},
+    {0x336A, "\015\125\063\255\371\351"},
+    {0x336B, "\015\125\063\255\371\352"},
+    {0x336C, "\015\125\063\255\372\031"},
+    {0x336D, "\015\125\063\255\374\117"},
+    {0x336E, "\015\125\063\255\374\116"},
+    {0x336F, "\015\125\063\255\374\121"},
+    {0x3370, "\015\125\063\255\374\120"},
+    {0x3371, "\375\322\031\007\021"},
     {0x3372, "\371\013\031\007\021"},
-    {0x3373, "\371\216\031\007\021"},
-    {0x3374, "\374\354\031\007\021"},
-    {0x3375, "\376\260\031\007\021"},
-    {0x3376, "\376\300\031\007\021"},
-    {0x337B, "\372\202\375\275\031\007\021"},
-    {0x337C, "\372\202\377\135\031\007\021"},
-    {0x337D, "\372\202\377\143\031\007\021"},
-    {0x337E, "\372\202\376\114\031\007\021"},
+    {0x3373, "\371\217\031\007\021"},
+    {0x3374, "\374\355\031\007\021"},
+    {0x3375, "\376\261\031\007\021"},
+    {0x3376, "\376\301\031\007\021"},
+    {0x337B, "\372\202\375\276\031\007\021"},
+    {0x337C, "\372\202\377\136\031\007\021"},
+    {0x337D, "\372\202\377\144\031\007\021"},
+    {0x337E, "\372\202\376\115\031\007\021"},
     {0x337F, "\372\357\031\007\021"},
-    {0x3380, "\371\015\374\305\031\007\021"},
+    {0x3380, "\371\015\374\306\031\007\021"},
     {0x3381, "\371\002\031\007\021"},
     {0x3382, "\371\001\046\031\007\021"},
     {0x3383, "\360\031\007\021"},
     {0x3384, "\244\031\007\021"},
-    {0x3385, "\376\005\031\007\021"},
-    {0x3386, "\373\273\031\007\021"},
-    {0x3387, "\375\246\031\007\021"},
-    {0x3388, "\375\010\031\007\021"},
-    {0x3389, "\376\006\031\007\021"},
-    {0x338A, "\376\311\031\007\021"},
-    {0x338B, "\376\200\031\007\021"},
+    {0x3385, "\376\006\031\007\021"},
+    {0x3386, "\373\274\031\007\021"},
+    {0x3387, "\375\247\031\007\021"},
+    {0x3388, "\375\011\031\007\021"},
+    {0x3389, "\376\007\031\007\021"},
+    {0x338A, "\376\312\031\007\021"},
+    {0x338B, "\376\201\031\007\021"},
     {0x338C, "\371\001\355\031\007\021"},
     {0x338D, "\371\001\227\031\007\021"},
-    {0x338E, "\376\120\031\007\021"},
-    {0x338F, "\373\250\031\007\021"},
-    {0x3390, "\375\326\031\007\021"},
-    {0x3391, "\376\016\031\007\021"},
-    {0x3392, "\376\121\031\007\021"},
-    {0x3393, "\375\251\031\007\021"},
-    {0x3394, "\377\201\031\007\021"},
+    {0x338E, "\376\121\031\007\021"},
+    {0x338F, "\373\251\031\007\021"},
+    {0x3390, "\375\327\031\007\021"},
+    {0x3391, "\376\017\031\007\021"},
+    {0x3392, "\376\122\031\007\021"},
+    {0x3393, "\375\252\031\007\021"},
+    {0x3394, "\377\202\031\007\021"},
     {0x3395, "\371\001\167\031\007\021"},
-    {0x3396, "\376\137\031\007\021"},
-    {0x3397, "\375\151\031\007\021"},
-    {0x3398, "\376\026\031\007\021"},
-    {0x3399, "\375\232\031\007\021"},
-    {0x339A, "\376\207\031\007\021"},
+    {0x3396, "\376\140\031\007\021"},
+    {0x3397, "\375\152\031\007\021"},
+    {0x3398, "\376\027\031\007\021"},
+    {0x3399, "\375\233\031\007\021"},
+    {0x339A, "\376\210\031\007\021"},
     {0x339B, "\371\001\256\031\007\021"},
     {0x339C, "\372\311\031\007\021"},
     {0x339D, "\372\221\031\007\021"},
@@ -7253,61 +7254,61 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x33A4, "\372\221\372\051\031\007\021"},
     {0x33A5, "\256\372\051\031\007\021"},
     {0x33A6, "\372\074\372\051\031\007\021"},
-    {0x33A7, "\256\371\252\207\031\007\021"},
-    {0x33A8, "\256\371\252\207\021\031\007\021"},
+    {0x33A7, "\256\371\253\207\031\007\021"},
+    {0x33A8, "\256\371\253\207\021\031\007\021"},
     {0x33A9, "\371\015\031\007\021"},
-    {0x33AA, "\376\033\031\007\021"},
-    {0x33AB, "\376\155\031\007\021"},
-    {0x33AC, "\375\257\031\007\021"},
+    {0x33AA, "\376\034\031\007\021"},
+    {0x33AB, "\376\156\031\007\021"},
+    {0x33AC, "\375\260\031\007\021"},
     {0x33AD, "\372\336\031\007\021"},
-    {0x33AE, "\372\336\371\252\207\031\007\021"},
-    {0x33AF, "\372\336\371\252\207\021\031\007\021"},
-    {0x33B0, "\376\360\031\007\021"},
-    {0x33B1, "\376\223\031\007\021"},
+    {0x33AE, "\372\336\371\253\207\031\007\021"},
+    {0x33AF, "\372\336\371\253\207\021\031\007\021"},
+    {0x33B0, "\376\361\031\007\021"},
+    {0x33B1, "\376\224\031\007\021"},
     {0x33B2, "\371\001\207\031\007\021"},
-    {0x33B3, "\376\156\031\007\021"},
-    {0x33B4, "\376\361\031\007\021"},
-    {0x33B5, "\376\226\031\007\021"},
+    {0x33B3, "\376\157\031\007\021"},
+    {0x33B4, "\376\362\031\007\021"},
+    {0x33B5, "\376\227\031\007\021"},
     {0x33B6, "\371\001\324\031\007\021"},
-    {0x33B7, "\373\307\031\007\021"},
-    {0x33B8, "\376\040\031\007\021"},
-    {0x33B9, "\373\307\372\314\031\007\021"},
-    {0x33BA, "\376\362\031\007\021"},
-    {0x33BB, "\376\227\031\007\021"},
+    {0x33B7, "\373\310\031\007\021"},
+    {0x33B8, "\376\041\031\007\021"},
+    {0x33B9, "\373\310\372\314\031\007\021"},
+    {0x33BA, "\376\363\031\007\021"},
+    {0x33BB, "\376\230\031\007\021"},
     {0x33BC, "\371\001\273\031\007\021"},
-    {0x33BD, "\373\310\031\007\021"},
-    {0x33BE, "\376\041\031\007\021"},
-    {0x33BF, "\373\310\372\314\031\007\021"},
+    {0x33BD, "\373\311\031\007\021"},
+    {0x33BE, "\376\042\031\007\021"},
+    {0x33BF, "\373\311\372\314\031\007\021"},
     {0x33C0, "\301\372\117\031\007\021"},
     {0x33C1, "\256\372\117\031\007\021"},
     {0x33C2, "\372\204\031\007\021"},
-    {0x33C3, "\374\376\031\007\021"},
-    {0x33C4, "\375\016\031\007\021"},
-    {0x33C5, "\375\017\031\007\021"},
-    {0x33C6, "\241\371\252\373\250\031\007\021"},
+    {0x33C3, "\374\377\031\007\021"},
+    {0x33C4, "\375\017\031\007\021"},
+    {0x33C5, "\375\020\031\007\021"},
+    {0x33C6, "\241\371\253\373\251\031\007\021"},
     {0x33C7, "\372\222\031\007\021"},
-    {0x33C8, "\375\122\031\007\021"},
-    {0x33C9, "\375\265\031\007\021"},
+    {0x33C8, "\375\123\031\007\021"},
+    {0x33C9, "\375\266\031\007\021"},
     {0x33CA, "\333\031\007\021"},
-    {0x33CB, "\375\320\031\007\021"},
+    {0x33CB, "\375\321\031\007\021"},
     {0x33CC, "\372\264\031\007\021"},
-    {0x33CD, "\376\025\031\007\021"},
+    {0x33CD, "\376\026\031\007\021"},
     {0x33CE, "\372\074\005\031\007\021"},
-    {0x33CF, "\376\035\031\007\021"},
-    {0x33D0, "\376\061\031\007\021"},
-    {0x33D1, "\376\062\031\007\021"},
-    {0x33D2, "\376\063\031\007\021"},
-    {0x33D3, "\376\070\031\007\021"},
-    {0x33D4, "\373\273\003\031\007\021"},
-    {0x33D5, "\376\124\031\007\021"},
-    {0x33D6, "\376\145\031\007\021"},
-    {0x33D7, "\376\312\031\007\021"},
-    {0x33D8, "\376\336\031\007\021"},
-    {0x33D9, "\376\345\031\007\021"},
-    {0x33DA, "\376\346\031\007\021"},
-    {0x33DB, "\377\121\031\007\021"},
-    {0x33DC, "\377\132\031\007\021"},
-    {0x33DD, "\377\273\031\007\021"},
+    {0x33CF, "\376\036\031\007\021"},
+    {0x33D0, "\376\062\031\007\021"},
+    {0x33D1, "\376\063\031\007\021"},
+    {0x33D2, "\376\064\031\007\021"},
+    {0x33D3, "\376\071\031\007\021"},
+    {0x33D4, "\373\274\003\031\007\021"},
+    {0x33D5, "\376\125\031\007\021"},
+    {0x33D6, "\376\146\031\007\021"},
+    {0x33D7, "\376\313\031\007\021"},
+    {0x33D8, "\376\337\031\007\021"},
+    {0x33D9, "\376\346\031\007\021"},
+    {0x33DA, "\376\347\031\007\021"},
+    {0x33DB, "\377\122\031\007\021"},
+    {0x33DC, "\377\133\031\007\021"},
+    {0x33DD, "\377\274\031\007\021"},
     {0x33E0, "\015\125\063\234\132"},
     {0x33E1, "\015\125\063\234\154"},
     {0x33E2, "\015\125\063\234\131"},
@@ -7318,134 +7319,134 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0x33E7, "\015\125\063\234\204"},
     {0x33E8, "\015\125\063\234\235"},
     {0x33E9, "\015\125\063\234\354"},
-    {0x33EA, "\015\125\063\234\371\243"},
-    {0x33EB, "\015\125\063\234\371\140"},
-    {0x33EC, "\015\125\063\372\023"},
-    {0x33ED, "\015\125\063\234\372\011"},
-    {0x33EE, "\015\125\063\234\372\012"},
-    {0x33EF, "\015\125\063\234\371\247"},
-    {0x33F0, "\015\125\063\234\371\352"},
-    {0x33F1, "\015\125\063\234\371\350"},
-    {0x33F2, "\015\125\063\234\371\351"},
-    {0x33F3, "\015\125\063\234\372\030"},
-    {0x33F4, "\015\125\063\234\374\116"},
-    {0x33F5, "\015\125\063\234\374\115"},
-    {0x33F6, "\015\125\063\234\374\120"},
-    {0x33F7, "\015\125\063\234\374\117"},
-    {0x33F8, "\015\125\063\234\377\260"},
-    {0x33F9, "\015\125\063\234\377\264"},
-    {0x33FA, "\015\125\063\234\377\263"},
-    {0x33FB, "\015\125\063\234\377\261"},
-    {0x33FC, "\015\125\063\234\377\262"},
-    {0x33FD, "\015\125\063\234\377\221"},
-    {0x33FE, "\015\125\063\234\377\222"},
-    {0xFB00, "\006\003\004\375\225"},
-    {0xFB01, "\006\003\004\373\162"},
-    {0xFB02, "\006\003\004\375\231"},
-    {0xFB03, "\006\003\004\375\226"},
-    {0xFB04, "\006\003\004\375\227"},
+    {0x33EA, "\015\125\063\234\371\244"},
+    {0x33EB, "\015\125\063\234\371\141"},
+    {0x33EC, "\015\125\063\372\024"},
+    {0x33ED, "\015\125\063\234\372\012"},
+    {0x33EE, "\015\125\063\234\372\013"},
+    {0x33EF, "\015\125\063\234\371\250"},
+    {0x33F0, "\015\125\063\234\371\353"},
+    {0x33F1, "\015\125\063\234\371\351"},
+    {0x33F2, "\015\125\063\234\371\352"},
+    {0x33F3, "\015\125\063\234\372\031"},
+    {0x33F4, "\015\125\063\234\374\117"},
+    {0x33F5, "\015\125\063\234\374\116"},
+    {0x33F6, "\015\125\063\234\374\121"},
+    {0x33F7, "\015\125\063\234\374\120"},
+    {0x33F8, "\015\125\063\234\377\261"},
+    {0x33F9, "\015\125\063\234\377\265"},
+    {0x33FA, "\015\125\063\234\377\264"},
+    {0x33FB, "\015\125\063\234\377\262"},
+    {0x33FC, "\015\125\063\234\377\263"},
+    {0x33FD, "\015\125\063\234\377\222"},
+    {0x33FE, "\015\125\063\234\377\223"},
+    {0xFB00, "\006\003\004\375\226"},
+    {0xFB01, "\006\003\004\373\163"},
+    {0xFB02, "\006\003\004\375\232"},
+    {0xFB03, "\006\003\004\375\227"},
+    {0xFB04, "\006\003\004\375\230"},
     {0xFB05, "\006\003\004\207\372\306\236"},
-    {0xFB06, "\006\003\004\377\123"},
-    {0xFB13, "\006\003\076\371\302\372\115"},
-    {0xFB14, "\006\003\076\371\302\372\072"},
-    {0xFB15, "\006\003\076\371\302\072"},
+    {0xFB06, "\006\003\004\377\124"},
+    {0xFB13, "\006\003\076\371\303\372\115"},
+    {0xFB14, "\006\003\076\371\303\372\072"},
+    {0xFB15, "\006\003\076\371\303\072"},
     {0xFB16, "\006\003\076\372\377\372\115"},
-    {0xFB17, "\006\003\076\371\302\372\215"},
-    {0xFB1E, "\027\343\375\371\377\245"},
-    {0xFB1F, "\006\110\372\175\371\331\371\331\372\122"},
-    {0xFB20, "\001\110\374\302\373\041"},
-    {0xFB21, "\001\110\371\106\371\261"},
-    {0xFB22, "\001\110\371\106\372\052"},
-    {0xFB23, "\001\110\371\106\371\103"},
-    {0xFB24, "\001\110\371\106\205"},
-    {0xFB25, "\001\110\371\106\372\100"},
-    {0xFB26, "\001\110\371\106\372\107\016"},
-    {0xFB27, "\001\110\371\106\372\337"},
-    {0xFB28, "\001\110\371\106\372\367"},
-    {0xFB29, "\001\110\134\162\377\244"},
-    {0xFB2A, "\001\110\371\073\027\371\073"},
-    {0xFB2B, "\001\110\371\073\027\372\353"},
-    {0xFB2C, "\001\110\371\073\276\011\027\371\073"},
-    {0xFB2D, "\001\110\371\073\276\011\027\372\353"},
-    {0xFB2E, "\001\110\371\261\372\122"},
-    {0xFB2F, "\001\110\371\261\372\333"},
-    {0xFB30, "\001\110\371\261\372\307"},
+    {0xFB17, "\006\003\076\371\303\372\215"},
+    {0xFB1E, "\027\343\375\372\377\246"},
+    {0xFB1F, "\006\110\372\175\371\332\371\332\372\122"},
+    {0xFB20, "\001\110\374\303\373\042"},
+    {0xFB21, "\001\110\371\107\371\262"},
+    {0xFB22, "\001\110\371\107\372\052"},
+    {0xFB23, "\001\110\371\107\371\104"},
+    {0xFB24, "\001\110\371\107\205"},
+    {0xFB25, "\001\110\371\107\372\100"},
+    {0xFB26, "\001\110\371\107\372\107\016"},
+    {0xFB27, "\001\110\371\107\372\337"},
+    {0xFB28, "\001\110\371\107\372\367"},
+    {0xFB29, "\001\110\134\162\377\245"},
+    {0xFB2A, "\001\110\371\074\027\371\074"},
+    {0xFB2B, "\001\110\371\074\027\372\353"},
+    {0xFB2C, "\001\110\371\074\276\011\027\371\074"},
+    {0xFB2D, "\001\110\371\074\276\011\027\372\353"},
+    {0xFB2E, "\001\110\371\262\372\122"},
+    {0xFB2F, "\001\110\371\262\372\333"},
+    {0xFB30, "\001\110\371\262\372\307"},
     {0xFB31, "\001\110\372\044\276"},
-    {0xFB32, "\001\110\373\217\276"},
-    {0xFB33, "\001\110\372\052\375\120"},
-    {0xFB34, "\001\110\371\103\372\307"},
-    {0xFB35, "\001\110\372\027\276"},
-    {0xFB36, "\001\110\374\144\276"},
-    {0xFB38, "\001\110\374\074\276"},
-    {0xFB39, "\001\110\371\331\276"},
+    {0xFB32, "\001\110\373\220\276"},
+    {0xFB33, "\001\110\372\052\375\121"},
+    {0xFB34, "\001\110\371\104\372\307"},
+    {0xFB35, "\001\110\372\030\276"},
+    {0xFB36, "\001\110\374\145\276"},
+    {0xFB38, "\001\110\374\075\276"},
+    {0xFB39, "\001\110\371\332\276"},
     {0xFB3A, "\001\110\205\276\016"},
     {0xFB3B, "\001\110\205\276"},
     {0xFB3C, "\001\110\372\100\276"},
     {0xFB3E, "\001\110\372\107\276"},
     {0xFB40, "\001\110\372\320\276"},
-    {0xFB41, "\001\110\377\044\276"},
-    {0xFB43, "\001\110\371\115\276\016"},
-    {0xFB44, "\001\110\371\115\276"},
+    {0xFB41, "\001\110\377\045\276"},
+    {0xFB43, "\001\110\371\116\276\016"},
+    {0xFB44, "\001\110\371\116\276"},
     {0xFB46, "\001\110\372\375\276"},
-    {0xFB47, "\001\110\374\004\276"},
+    {0xFB47, "\001\110\374\005\276"},
     {0xFB48, "\001\110\372\337\276"},
-    {0xFB49, "\001\110\371\073\276"},
+    {0xFB49, "\001\110\371\074\276"},
     {0xFB4A, "\001\110\372\367\276"},
-    {0xFB4B, "\001\110\372\027\373\225"},
+    {0xFB4B, "\001\110\372\030\373\226"},
     {0xFB4C, "\001\110\372\044\372\143"},
     {0xFB4D, "\001\110\205\372\143"},
-    {0xFB4E, "\001\110\371\115\372\143"},
-    {0xFB4F, "\006\110\371\261\372\100"},
+    {0xFB4E, "\001\110\371\116\372\143"},
+    {0xFB4F, "\006\110\371\262\372\100"},
     {0xFB50, "\001\002\054\373\003\020"},
     {0xFB51, "\001\002\054\373\003\016"},
-    {0xFB52, "\001\002\371\336\020"},
-    {0xFB53, "\001\002\371\336\016"},
-    {0xFB54, "\001\002\371\336\036"},
-    {0xFB55, "\001\002\371\336\105"},
-    {0xFB56, "\001\002\372\004\020"},
-    {0xFB57, "\001\002\372\004\016"},
-    {0xFB58, "\001\002\372\004\036"},
-    {0xFB59, "\001\002\372\004\105"},
-    {0xFB5A, "\001\002\371\337\020"},
-    {0xFB5B, "\001\002\371\337\016"},
-    {0xFB5C, "\001\002\371\337\036"},
-    {0xFB5D, "\001\002\371\337\105"},
-    {0xFB5E, "\001\002\372\025\020"},
-    {0xFB5F, "\001\002\372\025\016"},
-    {0xFB60, "\001\002\372\025\036"},
-    {0xFB61, "\001\002\372\025\105"},
-    {0xFB62, "\001\002\372\020\020"},
-    {0xFB63, "\001\002\372\020\016"},
-    {0xFB64, "\001\002\372\020\036"},
-    {0xFB65, "\001\002\372\020\105"},
-    {0xFB66, "\001\002\372\024\020"},
-    {0xFB67, "\001\002\372\024\016"},
-    {0xFB68, "\001\002\372\024\036"},
-    {0xFB69, "\001\002\372\024\105"},
-    {0xFB6A, "\001\002\372\026\020"},
-    {0xFB6B, "\001\002\372\026\016"},
-    {0xFB6C, "\001\002\372\026\036"},
-    {0xFB6D, "\001\002\372\026\105"},
-    {0xFB6E, "\001\002\372\005\020"},
-    {0xFB6F, "\001\002\372\005\016"},
-    {0xFB70, "\001\002\372\005\036"},
-    {0xFB71, "\001\002\372\005\105"},
-    {0xFB72, "\001\002\371\355\020"},
-    {0xFB73, "\001\002\371\355\016"},
-    {0xFB74, "\001\002\371\355\036"},
-    {0xFB75, "\001\002\371\355\105"},
-    {0xFB76, "\001\002\371\377\020"},
-    {0xFB77, "\001\002\371\377\016"},
-    {0xFB78, "\001\002\371\377\036"},
-    {0xFB79, "\001\002\371\377\105"},
-    {0xFB7A, "\001\002\372\017\020"},
-    {0xFB7B, "\001\002\372\017\016"},
-    {0xFB7C, "\001\002\372\017\036"},
-    {0xFB7D, "\001\002\372\017\105"},
-    {0xFB7E, "\001\002\372\016\020"},
-    {0xFB7F, "\001\002\372\016\016"},
-    {0xFB80, "\001\002\372\016\036"},
-    {0xFB81, "\001\002\372\016\105"},
+    {0xFB52, "\001\002\371\337\020"},
+    {0xFB53, "\001\002\371\337\016"},
+    {0xFB54, "\001\002\371\337\036"},
+    {0xFB55, "\001\002\371\337\105"},
+    {0xFB56, "\001\002\372\005\020"},
+    {0xFB57, "\001\002\372\005\016"},
+    {0xFB58, "\001\002\372\005\036"},
+    {0xFB59, "\001\002\372\005\105"},
+    {0xFB5A, "\001\002\371\340\020"},
+    {0xFB5B, "\001\002\371\340\016"},
+    {0xFB5C, "\001\002\371\340\036"},
+    {0xFB5D, "\001\002\371\340\105"},
+    {0xFB5E, "\001\002\372\026\020"},
+    {0xFB5F, "\001\002\372\026\016"},
+    {0xFB60, "\001\002\372\026\036"},
+    {0xFB61, "\001\002\372\026\105"},
+    {0xFB62, "\001\002\372\021\020"},
+    {0xFB63, "\001\002\372\021\016"},
+    {0xFB64, "\001\002\372\021\036"},
+    {0xFB65, "\001\002\372\021\105"},
+    {0xFB66, "\001\002\372\025\020"},
+    {0xFB67, "\001\002\372\025\016"},
+    {0xFB68, "\001\002\372\025\036"},
+    {0xFB69, "\001\002\372\025\105"},
+    {0xFB6A, "\001\002\372\027\020"},
+    {0xFB6B, "\001\002\372\027\016"},
+    {0xFB6C, "\001\002\372\027\036"},
+    {0xFB6D, "\001\002\372\027\105"},
+    {0xFB6E, "\001\002\372\006\020"},
+    {0xFB6F, "\001\002\372\006\016"},
+    {0xFB70, "\001\002\372\006\036"},
+    {0xFB71, "\001\002\372\006\105"},
+    {0xFB72, "\001\002\371\356\020"},
+    {0xFB73, "\001\002\371\356\016"},
+    {0xFB74, "\001\002\371\356\036"},
+    {0xFB75, "\001\002\371\356\105"},
+    {0xFB76, "\001\002\372\001\020"},
+    {0xFB77, "\001\002\372\001\016"},
+    {0xFB78, "\001\002\372\001\036"},
+    {0xFB79, "\001\002\372\001\105"},
+    {0xFB7A, "\001\002\372\020\020"},
+    {0xFB7B, "\001\002\372\020\016"},
+    {0xFB7C, "\001\002\372\020\036"},
+    {0xFB7D, "\001\002\372\020\105"},
+    {0xFB7E, "\001\002\372\017\020"},
+    {0xFB7F, "\001\002\372\017\016"},
+    {0xFB80, "\001\002\372\017\036"},
+    {0xFB81, "\001\002\372\017\105"},
     {0xFB82, "\001\002\372\234\020"},
     {0xFB83, "\001\002\372\234\016"},
     {0xFB84, "\001\002\372\232\020"},
@@ -7458,87 +7459,87 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFB8B, "\001\002\372\272\016"},
     {0xFB8C, "\001\002\372\351\020"},
     {0xFB8D, "\001\002\372\351\016"},
-    {0xFB8E, "\001\002\371\372\020"},
-    {0xFB8F, "\001\002\371\372\016"},
-    {0xFB90, "\001\002\371\372\036"},
-    {0xFB91, "\001\002\371\372\105"},
-    {0xFB92, "\001\002\371\144\020"},
-    {0xFB93, "\001\002\371\144\016"},
-    {0xFB94, "\001\002\371\144\036"},
-    {0xFB95, "\001\002\371\144\105"},
-    {0xFB96, "\001\002\371\364\020"},
-    {0xFB97, "\001\002\371\364\016"},
-    {0xFB98, "\001\002\371\364\036"},
-    {0xFB99, "\001\002\371\364\105"},
-    {0xFB9A, "\001\002\371\374\020"},
-    {0xFB9B, "\001\002\371\374\016"},
-    {0xFB9C, "\001\002\371\374\036"},
-    {0xFB9D, "\001\002\371\374\105"},
+    {0xFB8E, "\001\002\371\373\020"},
+    {0xFB8F, "\001\002\371\373\016"},
+    {0xFB90, "\001\002\371\373\036"},
+    {0xFB91, "\001\002\371\373\105"},
+    {0xFB92, "\001\002\371\145\020"},
+    {0xFB93, "\001\002\371\145\016"},
+    {0xFB94, "\001\002\371\145\036"},
+    {0xFB95, "\001\002\371\145\105"},
+    {0xFB96, "\001\002\371\365\020"},
+    {0xFB97, "\001\002\371\365\016"},
+    {0xFB98, "\001\002\371\365\036"},
+    {0xFB99, "\001\002\371\365\105"},
+    {0xFB9A, "\001\002\371\375\020"},
+    {0xFB9B, "\001\002\371\375\016"},
+    {0xFB9C, "\001\002\371\375\036"},
+    {0xFB9D, "\001\002\371\375\105"},
     {0xFB9E, "\001\002\164\372\256\020"},
     {0xFB9F, "\001\002\164\372\256\016"},
-    {0xFBA0, "\001\002\372\013\020"},
-    {0xFBA1, "\001\002\372\013\016"},
-    {0xFBA2, "\001\002\372\013\036"},
-    {0xFBA3, "\001\002\372\013\105"},
+    {0xFBA0, "\001\002\372\014\020"},
+    {0xFBA1, "\001\002\372\014\016"},
+    {0xFBA2, "\001\002\372\014\036"},
+    {0xFBA3, "\001\002\372\014\105"},
     {0xFBA4, "\001\002\171\041\007\025\020"},
     {0xFBA5, "\001\002\171\041\007\025\016"},
-    {0xFBA6, "\001\002\171\371\231\020"},
-    {0xFBA7, "\001\002\171\371\231\016"},
-    {0xFBA8, "\001\002\171\371\231\036"},
-    {0xFBA9, "\001\002\171\371\231\105"},
-    {0xFBAA, "\001\002\171\371\354\020"},
-    {0xFBAB, "\001\002\171\371\354\016"},
-    {0xFBAC, "\001\002\171\371\354\036"},
-    {0xFBAD, "\001\002\171\371\354\105"},
+    {0xFBA6, "\001\002\171\371\232\020"},
+    {0xFBA7, "\001\002\171\371\232\016"},
+    {0xFBA8, "\001\002\171\371\232\036"},
+    {0xFBA9, "\001\002\171\371\232\105"},
+    {0xFBAA, "\001\002\171\371\355\020"},
+    {0xFBAB, "\001\002\171\371\355\016"},
+    {0xFBAC, "\001\002\171\371\355\036"},
+    {0xFBAD, "\001\002\171\371\355\105"},
     {0xFBAE, "\001\002\041\372\043\020"},
     {0xFBAF, "\001\002\041\372\043\016"},
     {0xFBB0, "\001\002\041\372\043\126\007\025\020"},
     {0xFBB1, "\001\002\041\372\043\126\007\025\016"},
-    {0xFBD3, "\001\002\371\303\020"},
-    {0xFBD4, "\001\002\371\303\016"},
-    {0xFBD5, "\001\002\371\303\036"},
-    {0xFBD6, "\001\002\371\303\105"},
+    {0xFBD3, "\001\002\371\304\020"},
+    {0xFBD4, "\001\002\371\304\016"},
+    {0xFBD5, "\001\002\371\304\036"},
+    {0xFBD6, "\001\002\371\304\105"},
     {0xFBD7, "\001\002\114\020"},
     {0xFBD8, "\001\002\114\016"},
-    {0xFBD9, "\001\002\371\040\020"},
-    {0xFBDA, "\001\002\371\040\016"},
-    {0xFBDB, "\001\002\371\050\020"},
-    {0xFBDC, "\001\002\371\050\016"},
+    {0xFBD9, "\001\002\371\041\020"},
+    {0xFBDA, "\001\002\371\041\016"},
+    {0xFBDB, "\001\002\371\051\020"},
+    {0xFBDC, "\001\002\371\051\016"},
     {0xFBDD, "\001\002\114\126\007\025\020"},
     {0xFBDE, "\001\002\372\172\020"},
     {0xFBDF, "\001\002\372\172\016"},
-    {0xFBE0, "\001\002\371\035\371\040\020"},
-    {0xFBE1, "\001\002\371\035\371\040\016"},
-    {0xFBE2, "\001\002\371\035\371\050\020"},
-    {0xFBE3, "\001\002\371\035\371\050\016"},
+    {0xFBE0, "\001\002\371\036\371\041\020"},
+    {0xFBE1, "\001\002\371\036\371\041\016"},
+    {0xFBE2, "\001\002\371\036\371\051\020"},
+    {0xFBE3, "\001\002\371\036\371\051\016"},
     {0xFBE4, "\001\002\060\020"},
     {0xFBE5, "\001\002\060\016"},
     {0xFBE6, "\001\002\060\036"},
     {0xFBE7, "\001\002\060\105"},
-    {0xFBE8, "\001\002\372\003\373\247\371\035\054\124\036"},
-    {0xFBE9, "\001\002\372\003\373\247\371\035\054\124\105"},
+    {0xFBE8, "\001\002\372\004\373\250\371\036\054\124\036"},
+    {0xFBE9, "\001\002\372\004\373\250\371\036\054\124\105"},
     {0xFBEA, "\006\002\041\126\007\025\054\020"},
     {0xFBEB, "\006\002\041\126\007\025\054\016"},
     {0xFBEC, "\006\002\041\126\007\025\372\036\020"},
     {0xFBED, "\006\002\041\126\007\025\372\036\016"},
-    {0xFBEE, "\006\002\041\126\007\025\371\034\020"},
-    {0xFBEF, "\006\002\041\126\007\025\371\034\016"},
+    {0xFBEE, "\006\002\041\126\007\025\371\035\020"},
+    {0xFBEF, "\006\002\041\126\007\025\371\035\016"},
     {0xFBF0, "\006\002\041\126\007\025\107\020"},
     {0xFBF1, "\006\002\041\126\007\025\107\016"},
-    {0xFBF2, "\006\002\041\126\007\025\371\040\020"},
-    {0xFBF3, "\006\002\041\126\007\025\371\040\016"},
-    {0xFBF4, "\006\002\041\126\007\025\371\050\020"},
-    {0xFBF5, "\006\002\041\126\007\025\371\050\016"},
+    {0xFBF2, "\006\002\041\126\007\025\371\041\020"},
+    {0xFBF3, "\006\002\041\126\007\025\371\041\016"},
+    {0xFBF4, "\006\002\041\126\007\025\371\051\020"},
+    {0xFBF5, "\006\002\041\126\007\025\371\051\016"},
     {0xFBF6, "\006\002\041\126\007\025\060\020"},
     {0xFBF7, "\006\002\041\126\007\025\060\016"},
     {0xFBF8, "\006\002\041\126\007\025\060\036"},
-    {0xFBF9, "\006\002\372\003\371\035\041\126\007\025\054\124\020"},
-    {0xFBFA, "\006\002\372\003\371\035\041\126\007\025\054\124\016"},
-    {0xFBFB, "\006\002\372\003\371\035\041\126\007\025\054\124\036"},
-    {0xFBFC, "\001\002\371\272\041\020"},
-    {0xFBFD, "\001\002\371\272\041\016"},
-    {0xFBFE, "\001\002\371\272\041\036"},
-    {0xFBFF, "\001\002\371\272\041\105"},
+    {0xFBF9, "\006\002\372\004\371\036\041\126\007\025\054\124\020"},
+    {0xFBFA, "\006\002\372\004\371\036\041\126\007\025\054\124\016"},
+    {0xFBFB, "\006\002\372\004\371\036\041\126\007\025\054\124\036"},
+    {0xFBFC, "\001\002\371\273\041\020"},
+    {0xFBFD, "\001\002\371\273\041\016"},
+    {0xFBFE, "\001\002\371\273\041\036"},
+    {0xFBFF, "\001\002\371\273\041\105"},
     {0xFC00, "\006\002\041\126\007\025\066\020"},
     {0xFC01, "\006\002\041\126\007\025\064\020"},
     {0xFC02, "\006\002\041\126\007\025\033\020"},
@@ -7579,7 +7580,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFC25, "\006\002\266\033\020"},
     {0xFC26, "\006\002\327\064\020"},
     {0xFC27, "\006\002\327\033\020"},
-    {0xFC28, "\006\002\371\211\033\020"},
+    {0xFC28, "\006\002\371\212\033\020"},
     {0xFC29, "\006\002\312\066\020"},
     {0xFC2A, "\006\002\312\033\020"},
     {0xFC2B, "\006\002\350\066\020"},
@@ -7633,32 +7634,32 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFC5B, "\006\002\372\054\007\025\054\020"},
     {0xFC5C, "\006\002\257\007\025\054\020"},
     {0xFC5D, "\006\002\054\124\007\025\054\020"},
-    {0xFC5E, "\006\002\371\044\372\233\020"},
-    {0xFC5F, "\006\002\371\044\372\300\020"},
-    {0xFC60, "\006\002\371\044\371\361\020"},
-    {0xFC61, "\006\002\371\044\371\346\020"},
-    {0xFC62, "\006\002\371\044\371\371\020"},
-    {0xFC63, "\006\002\371\044\007\025\054\020"},
+    {0xFC5E, "\006\002\371\045\372\233\020"},
+    {0xFC5F, "\006\002\371\045\372\300\020"},
+    {0xFC60, "\006\002\371\045\371\362\020"},
+    {0xFC61, "\006\002\371\045\371\347\020"},
+    {0xFC62, "\006\002\371\045\371\372\020"},
+    {0xFC63, "\006\002\371\045\007\025\054\020"},
     {0xFC64, "\006\002\041\126\007\025\257\016"},
-    {0xFC65, "\006\002\041\126\007\025\371\123\016"},
+    {0xFC65, "\006\002\041\126\007\025\371\124\016"},
     {0xFC66, "\006\002\041\126\007\025\033\016"},
     {0xFC67, "\006\002\041\126\007\025\164\016"},
     {0xFC68, "\006\002\041\126\007\025\054\124\016"},
     {0xFC69, "\006\002\041\126\007\025\041\016"},
     {0xFC6A, "\006\002\251\257\016"},
-    {0xFC6B, "\006\002\251\371\123\016"},
+    {0xFC6B, "\006\002\251\371\124\016"},
     {0xFC6C, "\006\002\251\033\016"},
     {0xFC6D, "\006\002\251\164\016"},
     {0xFC6E, "\006\002\251\054\124\016"},
     {0xFC6F, "\006\002\251\041\016"},
     {0xFC70, "\006\002\174\257\016"},
-    {0xFC71, "\006\002\174\371\123\016"},
+    {0xFC71, "\006\002\174\371\124\016"},
     {0xFC72, "\006\002\174\033\016"},
     {0xFC73, "\006\002\174\164\016"},
     {0xFC74, "\006\002\174\054\124\016"},
     {0xFC75, "\006\002\174\041\016"},
     {0xFC76, "\006\002\337\257\016"},
-    {0xFC77, "\006\002\337\371\123\016"},
+    {0xFC77, "\006\002\337\371\124\016"},
     {0xFC78, "\006\002\337\033\016"},
     {0xFC79, "\006\002\337\164\016"},
     {0xFC7A, "\006\002\337\054\124\016"},
@@ -7678,14 +7679,14 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFC88, "\006\002\033\054\016"},
     {0xFC89, "\006\002\033\033\016"},
     {0xFC8A, "\006\002\164\257\016"},
-    {0xFC8B, "\006\002\164\371\123\016"},
+    {0xFC8B, "\006\002\164\371\124\016"},
     {0xFC8C, "\006\002\164\033\016"},
     {0xFC8D, "\006\002\164\164\016"},
     {0xFC8E, "\006\002\164\054\124\016"},
     {0xFC8F, "\006\002\164\041\016"},
     {0xFC90, "\006\002\054\124\007\025\054\016"},
     {0xFC91, "\006\002\041\257\016"},
-    {0xFC92, "\006\002\041\371\123\016"},
+    {0xFC92, "\006\002\041\371\124\016"},
     {0xFC93, "\006\002\041\033\016"},
     {0xFC94, "\006\002\041\164\016"},
     {0xFC95, "\006\002\041\054\124\016"},
@@ -7724,7 +7725,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFCB6, "\006\002\266\137\036"},
     {0xFCB7, "\006\002\266\033\036"},
     {0xFCB8, "\006\002\327\064\036"},
-    {0xFCB9, "\006\002\371\211\033\036"},
+    {0xFCB9, "\006\002\371\212\033\036"},
     {0xFCBA, "\006\002\312\066\036"},
     {0xFCBB, "\006\002\312\033\036"},
     {0xFCBC, "\006\002\350\066\036"},
@@ -7780,9 +7781,9 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFCEF, "\006\002\164\171\105"},
     {0xFCF0, "\006\002\041\033\105"},
     {0xFCF1, "\006\002\041\171\105"},
-    {0xFCF2, "\006\002\371\044\371\361\105"},
-    {0xFCF3, "\006\002\371\044\371\346\105"},
-    {0xFCF4, "\006\002\371\044\371\371\105"},
+    {0xFCF2, "\006\002\371\045\371\362\105"},
+    {0xFCF3, "\006\002\371\045\371\347\105"},
+    {0xFCF4, "\006\002\371\045\371\372\105"},
     {0xFCF5, "\006\002\327\054\124\020"},
     {0xFCF6, "\006\002\327\041\020"},
     {0xFCF7, "\006\002\312\054\124\020"},
@@ -7853,11 +7854,11 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFD38, "\006\002\206\064\105"},
     {0xFD39, "\006\002\206\137\105"},
     {0xFD3A, "\006\002\327\033\105"},
-    {0xFD3B, "\006\002\371\211\033\105"},
-    {0xFD3C, "\006\002\054\371\362\016"},
-    {0xFD3D, "\006\002\054\371\362\020"},
-    {0xFD3E, "\371\004\042\373\340"},
-    {0xFD3F, "\371\004\037\373\340"},
+    {0xFD3B, "\006\002\371\212\033\105"},
+    {0xFD3C, "\006\002\054\371\363\016"},
+    {0xFD3D, "\006\002\054\371\363\020"},
+    {0xFD3E, "\371\004\042\373\341"},
+    {0xFD3F, "\371\004\037\373\341"},
     {0xFD50, "\006\002\174\066\033\036"},
     {0xFD51, "\006\002\174\064\066\016"},
     {0xFD52, "\006\002\174\064\066\036"},
@@ -7976,35 +7977,35 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFDC5, "\006\002\263\033\033\036"},
     {0xFDC6, "\006\002\201\137\041\016"},
     {0xFDC7, "\006\002\164\066\041\016"},
-    {0xFDF0, "\006\002\374\033\020\374\112\371\074\134\373\107\373\077"},
-    {0xFDF1, "\006\002\376\364\020\374\112\371\074\134\373\107\373\077"},
-    {0xFDF2, "\006\002\374\300\020"},
-    {0xFDF3, "\006\002\374\275\020"},
-    {0xFDF4, "\006\002\376\142\020"},
-    {0xFDF5, "\006\002\377\042\020"},
-    {0xFDF6, "\006\002\376\374\020"},
-    {0xFDF7, "\006\002\373\026\020"},
-    {0xFDF8, "\006\002\374\127\020"},
-    {0xFDF9, "\006\002\374\033\020"},
-    {0xFDFA, "\006\002\377\043\373\026\374\127"},
-    {0xFDFB, "\006\002\375\150"},
+    {0xFDF0, "\006\002\374\034\020\374\113\371\075\134\373\110\373\100"},
+    {0xFDF1, "\006\002\376\365\020\374\113\371\075\134\373\110\373\100"},
+    {0xFDF2, "\006\002\374\301\020"},
+    {0xFDF3, "\006\002\374\276\020"},
+    {0xFDF4, "\006\002\376\143\020"},
+    {0xFDF5, "\006\002\377\043\020"},
+    {0xFDF6, "\006\002\376\375\020"},
+    {0xFDF7, "\006\002\373\027\020"},
+    {0xFDF8, "\006\002\374\130\020"},
+    {0xFDF9, "\006\002\374\034\020"},
+    {0xFDFA, "\006\002\377\044\373\027\374\130"},
+    {0xFDFB, "\006\002\375\151"},
     {0xFE20, "\023\267\042\012\006"},
     {0xFE21, "\023\267\037\012\006"},
     {0xFE22, "\023\267\042\012\143\051"},
     {0xFE23, "\023\267\037\012\143\051"},
     {0xFE30, "\242\012\305\012\027\372\231\051\145"},
-    {0xFE31, "\242\012\305\012\371\071\371\221\145"},
-    {0xFE32, "\242\012\305\012\371\071\372\237\145"},
+    {0xFE31, "\242\012\305\012\371\072\371\222\145"},
+    {0xFE32, "\242\012\305\012\371\072\372\237\145"},
     {0xFE33, "\242\012\305\012\264\061\145"},
-    {0xFE34, "\242\012\305\012\264\061\372\001\145"},
+    {0xFE34, "\242\012\305\012\264\061\372\002\145"},
     {0xFE35, "\242\012\305\012\371\004\042\224"},
     {0xFE36, "\242\012\305\012\371\004\037\224"},
-    {0xFE37, "\242\012\305\373\104\042\145"},
-    {0xFE38, "\242\012\305\373\104\037\145"},
-    {0xFE39, "\242\012\305\012\100\042\145\007\371\212"},
-    {0xFE3A, "\242\012\305\012\100\173\145\007\371\212"},
-    {0xFE3B, "\242\012\305\012\100\042\371\277\156\145"},
-    {0xFE3C, "\242\012\305\012\100\173\371\277\156\145"},
+    {0xFE37, "\242\012\305\373\105\042\145"},
+    {0xFE38, "\242\012\305\373\105\037\145"},
+    {0xFE39, "\242\012\305\012\100\042\145\007\371\213"},
+    {0xFE3A, "\242\012\305\012\100\173\145\007\371\213"},
+    {0xFE3B, "\242\012\305\012\100\042\371\300\156\145"},
+    {0xFE3C, "\242\012\305\012\100\173\371\300\156\145"},
     {0xFE3D, "\242\012\305\012\100\051\042\145"},
     {0xFE3E, "\242\012\305\012\100\051\173\145"},
     {0xFE3F, "\242\012\305\012\100\042\145"},
@@ -8014,59 +8015,59 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFE43, "\242\012\305\012\100\133\145\042\007\222"},
     {0xFE44, "\242\012\305\012\100\133\145\173\007\222"},
     {0xFE49, "\264\065\007\372\132"},
-    {0xFE4A, "\264\065\040\027\373\061"},
-    {0xFE4B, "\264\065\372\001"},
-    {0xFE4C, "\264\065\051\372\001"},
+    {0xFE4A, "\264\065\040\027\373\062"},
+    {0xFE4B, "\264\065\372\002"},
+    {0xFE4C, "\264\065\051\372\002"},
     {0xFE4D, "\264\061\130\372\132"},
-    {0xFE4E, "\264\061\040\027\373\061"},
-    {0xFE4F, "\264\061\372\001"},
+    {0xFE4E, "\264\061\040\027\373\062"},
+    {0xFE4F, "\264\061\372\002"},
     {0xFE50, "\331\003"},
     {0xFE51, "\331\063\003"},
     {0xFE52, "\027\003"},
-    {0xFE54, "\372\007\003"},
-    {0xFE55, "\371\347\003"},
-    {0xFE56, "\027\371\224\003"},
-    {0xFE57, "\027\371\131\003"},
-    {0xFE58, "\264\371\225\371\221\003"},
+    {0xFE54, "\372\010\003"},
+    {0xFE55, "\371\350\003"},
+    {0xFE56, "\027\371\225\003"},
+    {0xFE57, "\027\371\132\003"},
+    {0xFE58, "\264\371\226\371\222\003"},
     {0xFE59, "\371\004\042\003"},
     {0xFE5A, "\371\004\037\003"},
-    {0xFE5B, "\371\260\042\003"},
-    {0xFE5C, "\371\260\037\003"},
-    {0xFE5D, "\100\042\007\371\212\003"},
-    {0xFE5E, "\100\173\007\371\212\003"},
+    {0xFE5B, "\371\261\042\003"},
+    {0xFE5C, "\371\261\037\003"},
+    {0xFE5D, "\100\042\007\371\213\003"},
+    {0xFE5E, "\100\173\007\371\213\003"},
     {0xFE5F, "\372\227\003"},
     {0xFE60, "\372\327\003"},
     {0xFE61, "\371\011\003"},
     {0xFE62, "\134\162\003"},
-    {0xFE63, "\371\071\003"},
+    {0xFE63, "\371\072\003"},
     {0xFE64, "\134\300\040\003"},
     {0xFE65, "\134\326\040\003"},
     {0xFE66, "\134\142\040\003"},
-    {0xFE68, "\210\361\371\274\003"},
+    {0xFE68, "\210\361\371\275\003"},
     {0xFE69, "\015\372\243\003"},
-    {0xFE6A, "\015\335\371\222\003"},
+    {0xFE6A, "\015\335\371\223\003"},
     {0xFE6B, "\372\206\003"},
-    {0xFE70, "\371\362\002\020"},
-    {0xFE71, "\374\071\371\362\007\025\002"},
+    {0xFE70, "\371\363\002\020"},
+    {0xFE71, "\374\072\371\363\007\025\002"},
     {0xFE72, "\372\233\002\020"},
     {0xFE74, "\372\300\020\002"},
-    {0xFE76, "\371\361\020\002"},
-    {0xFE77, "\371\361\105\002"},
-    {0xFE78, "\371\346\020\002"},
-    {0xFE79, "\371\346\105\002"},
-    {0xFE7A, "\371\371\020\002"},
-    {0xFE7B, "\371\371\105\002"},
-    {0xFE7C, "\371\044\020\002"},
-    {0xFE7D, "\371\044\105\002"},
+    {0xFE76, "\371\362\020\002"},
+    {0xFE77, "\371\362\105\002"},
+    {0xFE78, "\371\347\020\002"},
+    {0xFE79, "\371\347\105\002"},
+    {0xFE7A, "\371\372\020\002"},
+    {0xFE7B, "\371\372\105\002"},
+    {0xFE7C, "\371\045\020\002"},
+    {0xFE7D, "\371\045\105\002"},
     {0xFE7E, "\372\360\020\002"},
     {0xFE7F, "\372\360\105\002"},
     {0xFE80, "\001\002\126\020"},
-    {0xFE81, "\001\002\054\371\301\007\025\020"},
-    {0xFE82, "\001\002\054\371\301\007\025\016"},
+    {0xFE81, "\001\002\054\371\302\007\025\020"},
+    {0xFE82, "\001\002\054\371\302\007\025\016"},
     {0xFE83, "\001\002\054\126\007\025\020"},
     {0xFE84, "\001\002\016"},
-    {0xFE85, "\001\002\371\034\126\007\025\020"},
-    {0xFE86, "\001\002\371\034\126\007\025\016"},
+    {0xFE85, "\001\002\371\035\126\007\025\020"},
+    {0xFE86, "\001\002\371\035\126\007\025\016"},
     {0xFE87, "\001\002\054\126\032\020"},
     {0xFE88, "\001\002\054\126\032\016"},
     {0xFE89, "\001\002\041\126\007\025\020"},
@@ -8101,14 +8102,14 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFEA6, "\001\002\137\016"},
     {0xFEA7, "\001\002\137\036"},
     {0xFEA8, "\001\002\137\105"},
-    {0xFEA9, "\001\002\371\133\020"},
-    {0xFEAA, "\001\002\371\133\016"},
+    {0xFEA9, "\001\002\371\134\020"},
+    {0xFEAA, "\001\002\371\134\016"},
     {0xFEAB, "\001\002\372\054\020"},
     {0xFEAC, "\001\002\372\054\016"},
     {0xFEAD, "\001\002\257\020"},
     {0xFEAE, "\001\002\257\016"},
-    {0xFEAF, "\001\002\371\123\020"},
-    {0xFEB0, "\001\002\371\123\016"},
+    {0xFEAF, "\001\002\371\124\020"},
+    {0xFEB0, "\001\002\371\124\016"},
     {0xFEB1, "\001\002\201\020"},
     {0xFEB2, "\001\002\201\016"},
     {0xFEB3, "\001\002\201\036"},
@@ -8129,10 +8130,10 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFEC2, "\001\002\327\016"},
     {0xFEC3, "\001\002\327\036"},
     {0xFEC4, "\001\002\327\105"},
-    {0xFEC5, "\001\002\371\211\020"},
-    {0xFEC6, "\001\002\371\211\016"},
-    {0xFEC7, "\001\002\371\211\036"},
-    {0xFEC8, "\001\002\371\211\105"},
+    {0xFEC5, "\001\002\371\212\020"},
+    {0xFEC6, "\001\002\371\212\016"},
+    {0xFEC7, "\001\002\371\212\036"},
+    {0xFEC8, "\001\002\371\212\105"},
     {0xFEC9, "\001\002\312\020"},
     {0xFECA, "\001\002\312\016"},
     {0xFECB, "\001\002\312\036"},
@@ -8169,36 +8170,36 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFEEA, "\001\002\171\016"},
     {0xFEEB, "\001\002\171\036"},
     {0xFEEC, "\001\002\171\105"},
-    {0xFEED, "\001\002\371\034\020"},
-    {0xFEEE, "\001\002\371\034\016"},
+    {0xFEED, "\001\002\371\035\020"},
+    {0xFEEE, "\001\002\371\035\016"},
     {0xFEEF, "\001\002\054\124\020"},
     {0xFEF0, "\001\002\054\124\016"},
     {0xFEF1, "\001\002\041\020"},
     {0xFEF2, "\001\002\041\016"},
     {0xFEF3, "\001\002\041\036"},
     {0xFEF4, "\001\002\041\105"},
-    {0xFEF5, "\006\002\155\054\371\301\007\025\020"},
-    {0xFEF6, "\006\002\155\054\371\301\007\025\016"},
+    {0xFEF5, "\006\002\155\054\371\302\007\025\020"},
+    {0xFEF6, "\006\002\155\054\371\302\007\025\016"},
     {0xFEF7, "\006\002\155\054\126\007\025\020"},
     {0xFEF8, "\006\002\155\054\126\007\025\016"},
     {0xFEF9, "\006\002\155\054\126\032\020"},
     {0xFEFA, "\006\002\155\054\126\032\016"},
     {0xFEFB, "\006\002\155\054\020"},
     {0xFEFC, "\006\002\155\054\016"},
-    {0xFEFF, "\371\025\373\237\232\056"},
-    {0xFF01, "\027\371\131\062\056"},
+    {0xFEFF, "\371\026\373\240\232\056"},
+    {0xFF01, "\027\371\132\062\056"},
     {0xFF02, "\371\014\062\056"},
     {0xFF03, "\372\227\062\056"},
     {0xFF04, "\015\372\243\062\056"},
-    {0xFF05, "\015\335\371\222\062\056"},
+    {0xFF05, "\015\335\371\223\062\056"},
     {0xFF06, "\372\327\062\056"},
-    {0xFF07, "\371\215\062\056"},
+    {0xFF07, "\371\216\062\056"},
     {0xFF08, "\371\004\042\062\056"},
     {0xFF09, "\371\004\037\062\056"},
     {0xFF0A, "\371\011\062\056"},
     {0xFF0B, "\134\162\062\056"},
     {0xFF0C, "\331\062\056"},
-    {0xFF0D, "\371\071\062\056"},
+    {0xFF0D, "\371\072\062\056"},
     {0xFF0E, "\027\062\056"},
     {0xFF0F, "\210\361\062\056"},
     {0xFF10, "\017\311\062\056"},
@@ -8211,12 +8212,12 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFF17, "\017\221\062\056"},
     {0xFF18, "\017\204\062\056"},
     {0xFF19, "\017\235\062\056"},
-    {0xFF1A, "\371\347\373\073\062\056"},
-    {0xFF1B, "\372\007\062\056"},
+    {0xFF1A, "\371\350\373\074\062\056"},
+    {0xFF1B, "\372\010\062\056"},
     {0xFF1C, "\134\300\040\062\056"},
     {0xFF1D, "\134\142\040\062\056"},
     {0xFF1E, "\134\326\040\062\056"},
-    {0xFF1F, "\027\371\224\062\056"},
+    {0xFF1F, "\027\371\225\062\056"},
     {0xFF20, "\372\206\062\056"},
     {0xFF21, "\001\005\004\046\062\056"},
     {0xFF22, "\001\005\004\275\062\056"},
@@ -8234,7 +8235,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFF2E, "\001\005\004\213\062\056"},
     {0xFF2F, "\001\005\004\050\062\056"},
     {0xFF30, "\001\005\004\351\062\056"},
-    {0xFF31, "\001\005\004\371\065\062\056"},
+    {0xFF31, "\001\005\004\371\066\062\056"},
     {0xFF32, "\001\005\004\150\062\056"},
     {0xFF33, "\001\005\004\207\062\056"},
     {0xFF34, "\001\005\004\236\062\056"},
@@ -8245,7 +8246,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFF39, "\001\005\004\240\062\056"},
     {0xFF3A, "\001\005\004\243\062\056"},
     {0xFF3B, "\100\042\062\056"},
-    {0xFF3C, "\210\361\371\274\062\056"},
+    {0xFF3C, "\210\361\371\275\062\056"},
     {0xFF3D, "\100\173\062\056"},
     {0xFF3E, "\026\117\062\056"},
     {0xFF3F, "\264\061\062\056"},
@@ -8266,7 +8267,7 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFF4E, "\001\003\004\213\062\056"},
     {0xFF4F, "\001\003\004\050\062\056"},
     {0xFF50, "\001\003\004\351\062\056"},
-    {0xFF51, "\001\003\004\371\065\062\056"},
+    {0xFF51, "\001\003\004\371\066\062\056"},
     {0xFF52, "\001\003\004\150\062\056"},
     {0xFF53, "\001\003\004\207\062\056"},
     {0xFF54, "\001\003\004\236\062\056"},
@@ -8276,26 +8277,26 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFF58, "\001\003\004\310\062\056"},
     {0xFF59, "\001\003\004\240\062\056"},
     {0xFF5A, "\001\003\004\243\062\056"},
-    {0xFF5B, "\371\260\042\062\056"},
+    {0xFF5B, "\371\261\042\062\056"},
     {0xFF5C, "\212\224\062\056"},
-    {0xFF5D, "\371\260\037\062\056"},
+    {0xFF5D, "\371\261\037\062\056"},
     {0xFF5E, "\143\062\056"},
     {0xFF61, "\027\063\047"},
     {0xFF62, "\100\042\007\222\047"},
     {0xFF63, "\100\173\007\222\047"},
     {0xFF64, "\331\063\047"},
-    {0xFF65, "\027\371\037\030\047"},
-    {0xFF66, "\001\030\371\122\047"},
+    {0xFF65, "\027\371\040\030\047"},
+    {0xFF66, "\001\030\371\123\047"},
     {0xFF67, "\001\030\144\046\047"},
     {0xFF68, "\001\030\144\072\047"},
     {0xFF69, "\001\030\144\107\047"},
     {0xFF6A, "\001\030\144\060\047"},
     {0xFF6B, "\001\030\144\050\047"},
     {0xFF6C, "\001\030\144\332\047"},
-    {0xFF6D, "\001\030\144\371\256\047"},
+    {0xFF6D, "\001\030\144\371\257\047"},
     {0xFF6E, "\001\030\144\371\021\047"},
-    {0xFF6F, "\001\030\144\371\255\047"},
-    {0xFF70, "\153\371\276\012\371\067\372\134\047"},
+    {0xFF6F, "\001\030\144\371\256\047"},
+    {0xFF70, "\153\371\277\012\371\070\372\134\047"},
     {0xFF71, "\001\030\046\047"},
     {0xFF72, "\001\030\072\047"},
     {0xFF73, "\001\030\107\047"},
@@ -8304,55 +8305,55 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFF76, "\001\030\244\047"},
     {0xFF77, "\001\030\372\073\047"},
     {0xFF78, "\001\030\372\075\047"},
-    {0xFF79, "\001\030\371\235\047"},
-    {0xFF7A, "\001\030\371\237\047"},
+    {0xFF79, "\001\030\371\236\047"},
+    {0xFF7A, "\001\030\371\240\047"},
     {0xFF7B, "\001\030\364\047"},
     {0xFF7C, "\001\030\372\152\047"},
     {0xFF7D, "\001\030\372\161\047"},
-    {0xFF7E, "\001\030\371\317\047"},
-    {0xFF7F, "\001\030\371\045\047"},
+    {0xFF7E, "\001\030\371\320\047"},
+    {0xFF7F, "\001\030\371\046\047"},
     {0xFF80, "\001\030\371\017\047"},
-    {0xFF81, "\001\030\372\022\047"},
-    {0xFF82, "\001\030\371\255\047"},
+    {0xFF81, "\001\030\372\023\047"},
+    {0xFF82, "\001\030\371\256\047"},
     {0xFF83, "\001\030\372\165\047"},
-    {0xFF84, "\001\030\371\253\047"},
+    {0xFF84, "\001\030\371\254\047"},
     {0xFF85, "\001\030\371\002\047"},
     {0xFF86, "\001\030\216\047"},
-    {0xFF87, "\001\030\371\304\047"},
-    {0xFF88, "\001\030\371\112\047"},
-    {0xFF89, "\001\030\371\163\047"},
+    {0xFF87, "\001\030\371\305\047"},
+    {0xFF88, "\001\030\371\113\047"},
+    {0xFF89, "\001\030\371\164\047"},
     {0xFF8A, "\001\030\333\047"},
     {0xFF8B, "\001\030\372\067\047"},
     {0xFF8C, "\001\030\372\070\047"},
-    {0xFF8D, "\001\030\371\103\047"},
-    {0xFF8E, "\001\030\371\060\047"},
+    {0xFF8D, "\001\030\371\104\047"},
+    {0xFF8E, "\001\030\371\061\047"},
     {0xFF8F, "\001\030\360\047"},
     {0xFF90, "\001\030\372\110\047"},
     {0xFF91, "\001\030\371\001\047"},
     {0xFF92, "\001\030\372\106\047"},
-    {0xFF93, "\001\030\371\240\047"},
+    {0xFF93, "\001\030\371\241\047"},
     {0xFF94, "\001\030\332\047"},
-    {0xFF95, "\001\030\371\256\047"},
+    {0xFF95, "\001\030\371\257\047"},
     {0xFF96, "\001\030\371\021\047"},
     {0xFF97, "\001\030\345\047"},
     {0xFF98, "\001\030\372\144\047"},
     {0xFF99, "\001\030\372\146\047"},
-    {0xFF9A, "\001\030\371\314\047"},
-    {0xFF9B, "\001\030\372\014\047"},
-    {0xFF9C, "\001\030\371\121\047"},
+    {0xFF9A, "\001\030\371\315\047"},
+    {0xFF9B, "\001\030\372\015\047"},
+    {0xFF9C, "\001\030\371\122\047"},
     {0xFF9D, "\001\030\213\047"},
-    {0xFF9E, "\153\030\012\371\067\372\031\047"},
-    {0xFF9F, "\153\030\012\371\067\372\352\047"},
-    {0xFFA0, "\371\340\010\047"},
-    {0xFFA1, "\001\010\371\154\047"},
+    {0xFF9E, "\153\030\012\371\070\372\032\047"},
+    {0xFF9F, "\153\030\012\371\070\372\352\047"},
+    {0xFFA0, "\371\341\010\047"},
+    {0xFFA1, "\001\010\371\155\047"},
     {0xFFA2, "\001\010\372\157\047"},
     {0xFFA3, "\001\010\372\302\047"},
-    {0xFFA4, "\001\010\371\162\047"},
+    {0xFFA4, "\001\010\371\163\047"},
     {0xFFA5, "\001\010\372\316\047"},
     {0xFFA6, "\001\010\372\315\047"},
-    {0xFFA7, "\001\010\371\203\047"},
+    {0xFFA7, "\001\010\371\204\047"},
     {0xFFA8, "\001\010\372\364\047"},
-    {0xFFA9, "\001\010\371\171\047"},
+    {0xFFA9, "\001\010\371\172\047"},
     {0xFFAA, "\001\010\372\342\047"},
     {0xFFAB, "\001\010\372\343\047"},
     {0xFFAC, "\001\010\372\345\047"},
@@ -8360,49 +8361,49 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFFAE, "\001\010\372\347\047"},
     {0xFFAF, "\001\010\372\344\047"},
     {0xFFB0, "\001\010\372\145\047"},
-    {0xFFB1, "\001\010\371\160\047"},
-    {0xFFB2, "\001\010\371\167\047"},
+    {0xFFB1, "\001\010\371\161\047"},
+    {0xFFB2, "\001\010\371\170\047"},
     {0xFFB3, "\001\010\372\362\047"},
     {0xFFB4, "\001\010\372\125\047"},
-    {0xFFB5, "\001\010\371\173\047"},
+    {0xFFB5, "\001\010\371\174\047"},
     {0xFFB6, "\001\010\372\160\047"},
-    {0xFFB7, "\001\010\371\151\047"},
-    {0xFFB8, "\001\010\371\116\047"},
+    {0xFFB7, "\001\010\371\152\047"},
+    {0xFFB8, "\001\010\371\117\047"},
     {0xFFB9, "\001\010\372\363\047"},
-    {0xFFBA, "\001\010\371\200\047"},
-    {0xFFBB, "\001\010\371\153\047"},
-    {0xFFBC, "\001\010\371\177\047"},
-    {0xFFBD, "\001\010\371\165\047"},
-    {0xFFBE, "\001\010\371\147\047"},
+    {0xFFBA, "\001\010\371\201\047"},
+    {0xFFBB, "\001\010\371\154\047"},
+    {0xFFBC, "\001\010\371\200\047"},
+    {0xFFBD, "\001\010\371\166\047"},
+    {0xFFBE, "\001\010\371\150\047"},
     {0xFFC2, "\001\010\046\047"},
     {0xFFC3, "\001\010\373\015\047"},
     {0xFFC4, "\001\010\332\047"},
     {0xFFC5, "\001\010\373\012\047"},
     {0xFFC6, "\001\010\050\047"},
-    {0xFFC7, "\001\010\371\257\047"},
+    {0xFFC7, "\001\010\371\260\047"},
     {0xFFCA, "\001\010\371\021\047"},
     {0xFFCB, "\001\010\373\013\047"},
     {0xFFCC, "\001\010\373\020\047"},
-    {0xFFCD, "\001\010\371\121\047"},
+    {0xFFCD, "\001\010\371\122\047"},
     {0xFFCE, "\001\010\373\004\047"},
     {0xFFCF, "\001\010\372\251\047"},
     {0xFFD2, "\001\010\373\014\047"},
     {0xFFD3, "\001\010\114\047"},
-    {0xFFD4, "\001\010\371\122\047"},
+    {0xFFD4, "\001\010\371\123\047"},
     {0xFFD5, "\001\010\373\005\047"},
-    {0xFFD6, "\001\010\371\330\047"},
-    {0xFFD7, "\001\010\371\050\047"},
+    {0xFFD6, "\001\010\371\331\047"},
+    {0xFFD7, "\001\010\371\051\047"},
     {0xFFDA, "\001\010\373\021\047"},
     {0xFFDB, "\001\010\373\022\047"},
     {0xFFDC, "\001\010\072\047"},
     {0xFFE0, "\015\372\212\062\056"},
-    {0xFFE1, "\015\373\266\062\056"},
+    {0xFFE1, "\015\373\267\062\056"},
     {0xFFE2, "\134\372\116\062\056"},
     {0xFFE3, "\161\062\056"},
-    {0xFFE4, "\212\374\377\062\056"},
-    {0xFFE5, "\015\374\133\062\056"},
-    {0xFFE6, "\015\374\130\062\056"},
-    {0xFFE8, "\212\224\373\277\047"},
+    {0xFFE4, "\212\375\001\062\056"},
+    {0xFFE5, "\015\374\134\062\056"},
+    {0xFFE6, "\015\374\131\062\056"},
+    {0xFFE8, "\212\224\373\300\047"},
     {0xFFE9, "\043\013\022\042\047"},
     {0xFFEA, "\043\013\035\065\047"},
     {0xFFEB, "\043\013\022\037\047"},
@@ -8410,5 +8411,5 @@ static const struct charname charname[NUMBER_OF_CHARNAMES] =
     {0xFFED, "\021\156\047"},
     {0xFFEE, "\252\133\047"},
     {0xFFFD, "\074\012\372\340"},
-    {0xFFFE, "\375\350"},
+    {0xFFFE, "\375\351"},
   };
index 65d2913026b3beb2a2a2857fa111c2c304929aaf..59e1763d6edb7de824c378fe2d0b858e678d93e5 100644 (file)
 #define V40            (1 << 5)
 
 #define ENTRY(Code, String, Flags) \
-  { Code, Flags, String }
+  { Code, Flags, String }
 
-static struct ucs2_to_string main_translations [] =
+static struct ucs2_to_string translations [] =
   {
-    ENTRY (33, "excl",                                                 ),
-    ENTRY (34, "quot",                 | V20                           ),
-    ENTRY (35, "num",                                                  ),
-    ENTRY (36, "dollar",                                               ),
-    ENTRY (37, "percnt",                                               ),
-    ENTRY (38, "amp",          | V11   | V20                           ),
-    ENTRY (39, "apos",                                                 ),
-    ENTRY (40, "lpar",                                                 ),
-    ENTRY (41, "rpar",                                                 ),
-    ENTRY (42, "ast",                                                  ),
-    ENTRY (43, "plus",                                                 ),
-    ENTRY (44, "comma",                                                        ),
-    ENTRY (45, "horbar",                                               ),
-    ENTRY (46, "period",                                               ),
-    ENTRY (58, "colon",                                                        ),
-    ENTRY (59, "semi",                                                 ),
-    ENTRY (60, "lt",           | V11   | V20                           ),
-    ENTRY (61, "equals",                                               ),
-    ENTRY (62, "gt",           | V11   | V20                           ),
-    ENTRY (63, "quest",                                                        ),
-    ENTRY (64, "commat",                                               ),
-    ENTRY (91, "lsqb",                                                 ),
-    ENTRY (93, "rsqb",                                                 ),
-    ENTRY (94, "uarr",                                                 ),
-    ENTRY (95, "lowbar",                                               ),
-    ENTRY (96, "grave",                                                        ),
-    ENTRY (123, "lcub",                                                        ),
-    ENTRY (124, "verbar",                                              ),
-    ENTRY (125, "rcub",                                                        ),
-    ENTRY (126, "tilde",                                               ),
-    ENTRY (160, "nbsp",                                | V27   | V32   | V40   ),
-    ENTRY (161, "iexcl",                       | V27   | V32   | V40   ),
-    ENTRY (162, "cent",                                | V27   | V32   | V40   ),
-    ENTRY (163, "pound",                       | V27   | V32   | V40   ),
-    ENTRY (164, "curren",                      | V27   | V32   | V40   ),
-    ENTRY (165, "yen",                         | V27   | V32   | V40   ),
-    ENTRY (166, "brkbar",      | V11                                   ),
-    ENTRY (166, "brvbar",                      | V27   | V32   | V40   ),
-    ENTRY (167, "sect",                                | V27   | V32   | V40   ),
-    ENTRY (168, "die",         | V11                                   ),
-    ENTRY (168, "uml",                         | V27   | V32   | V40   ),
-    ENTRY (169, "copy",                                | V27   | V32   | V40   ),
-    ENTRY (170, "ordf",                                | V27   | V32   | V40   ),
-    ENTRY (171, "laquo",                       | V27   | V32   | V40   ),
-    ENTRY (172, "not",                         | V27   | V32   | V40   ),
-    ENTRY (173, "hyphen",      | V11                                   ),
-    ENTRY (173, "shy",                         | V27   | V32   | V40   ),
-    ENTRY (174, "reg",                         | V27   | V32   | V40   ),
-    ENTRY (175, "hibar",       | V11                                   ),
-    ENTRY (175, "macr",                                | V27   | V32   | V40   ),
-    ENTRY (176, "deg",                         | V27   | V32   | V40   ),
-    ENTRY (177, "plusmn",                      | V27   | V32   | V40   ),
-    ENTRY (178, "sup2",                                | V27   | V32   | V40   ),
-    ENTRY (179, "sup3",                                | V27   | V32   | V40   ),
-    ENTRY (180, "acute",                       | V27   | V32   | V40   ),
-    ENTRY (181, "micro",                       | V27   | V32   | V40   ),
-    ENTRY (182, "para",                                | V27   | V32   | V40   ),
-    ENTRY (183, "middot",                      | V27   | V32   | V40   ),
-    ENTRY (184, "cedil",                       | V27   | V32   | V40   ),
-    ENTRY (185, "sup1",                                | V27   | V32   | V40   ),
-    ENTRY (186, "ordm",                                | V27   | V32   | V40   ),
-    ENTRY (187, "raquo",                       | V27   | V32   | V40   ),
-    ENTRY (188, "frac14",                      | V27   | V32   | V40   ),
-    ENTRY (189, "half",                | V11                                   ),
-    ENTRY (189, "frac12",                      | V27   | V32   | V40   ),
-    ENTRY (190, "frac34",                      | V27   | V32   | V40   ),
-    ENTRY (191, "iquest",                      | V27   | V32   | V40   ),
-    ENTRY (192, "Agrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (193, "Aacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (194, "Acircu",      | V11                                   ),
-    ENTRY (194, "Acirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (195, "Atilde",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (196, "Adiaer",      | V11                                   ),
-    ENTRY (196, "Auml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (197, "Aring",       | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (198, "AE",          | V11                                   ),
-    ENTRY (198, "AElig",               | V20   | V27   | V32   | V40   ),
-    ENTRY (199, "Ccedil",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (200, "Egrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (201, "Eacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (202, "Ecircu",      | V11                                   ),
-    ENTRY (202, "Ecirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (203, "Ediaer",      | V11                                   ),
-    ENTRY (203, "Euml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (204, "Igrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (205, "Iacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (206, "Icircu",      | V11                                   ),
-    ENTRY (206, "Icirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (207, "Idiaer",      | V11                                   ),
-    ENTRY (207, "Iuml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (208, "ETH",         | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (209, "Ntilde",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (210, "Ograve",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (211, "Oacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (212, "Ocircu",      | V11                                   ),
-    ENTRY (212, "Ocirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (213, "Otilde",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (214, "Odiaer",      | V11                                   ),
-    ENTRY (214, "Ouml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (215, "MULT",                | V11                                   ),
-    ENTRY (215, "times",                       | V27   | V32   | V40   ),
-    ENTRY (216, "Ostroke",     | V11                                   ),
-    ENTRY (216, "Oslash",              | V20   | V27   | V32   | V40   ),
-    ENTRY (217, "Ugrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (218, "Uacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (219, "Ucircu",      | V11                                   ),
-    ENTRY (219, "Ucirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (220, "Udiaer",      | V11                                   ),
-    ENTRY (220, "Uuml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (221, "Yacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (222, "THORN",       | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (223, "ssharp",      | V11                                   ),
-    ENTRY (223, "szlig",               | V20   | V27   | V32   | V40   ),
-    ENTRY (224, "agrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (225, "aacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (226, "acircu",      | V11                                   ),
-    ENTRY (226, "acirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (227, "atilde",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (228, "adiaer",      | V11                                   ),
-    ENTRY (228, "auml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (229, "aring",       | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (230, "ae",          | V11                                   ),
-    ENTRY (230, "aelig",               | V20   | V27   | V32   | V40   ),
-    ENTRY (231, "ccedil",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (232, "egrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (233, "eacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (234, "ecircu",      | V11                                   ),
-    ENTRY (234, "ecirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (235, "ediaer",      | V11                                   ),
-    ENTRY (235, "euml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (236, "igrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (237, "iacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (238, "icircu",      | V11                                   ),
-    ENTRY (238, "icirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (239, "idiaer",      | V11                                   ),
-    ENTRY (239, "iuml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (240, "eth",         | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (241, "ntilde",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (242, "ograve",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (243, "oacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (244, "ocircu",      | V11                                   ),
-    ENTRY (244, "ocirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (245, "otilde",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (246, "odiaer",      | V11                                   ),
-    ENTRY (246, "ouml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (247, "DIVIS",       | V11                                   ),
-    ENTRY (247, "divide",                      | V27   | V32   | V40   ),
-    ENTRY (248, "ostroke",     | V11                                   ),
-    ENTRY (248, "oslash",              | V20   | V27   | V32   | V40   ),
-    ENTRY (249, "ugrave",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (250, "uacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (251, "ucircu",      | V11                                   ),
-    ENTRY (251, "ucirc",               | V20   | V27   | V32   | V40   ),
-    ENTRY (252, "udiaer",      | V11                                   ),
-    ENTRY (252, "uuml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (253, "yacute",      | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (254, "thorn",       | V11   | V20   | V27   | V32   | V40   ),
-    ENTRY (255, "ydiaer",      | V11                                   ),
-    ENTRY (255, "yuml",                        | V20   | V27   | V32   | V40   ),
-    ENTRY (338, "OElig",                                       | V40   ),
-    ENTRY (339, "oelig",                                       | V40   ),
-    ENTRY (352, "Scaron",                                      | V40   ),
-    ENTRY (353, "scaron",                                      | V40   ),
-    ENTRY (376, "Yuml",                                                | V40   ),
-    ENTRY (402, "fnof",                                                | V40   ),
-    ENTRY (710, "circ",                                                | V40   ),
-    ENTRY (732, "tilde",                                       | V40   ),
-    ENTRY (913, "Alpha",                                       | V40   ),
-    ENTRY (914, "Beta",                                                | V40   ),
-    ENTRY (915, "Gamma",                                       | V40   ),
-    ENTRY (916, "Delta",                                       | V40   ),
-    ENTRY (917, "Epsilon",                                     | V40   ),
-    ENTRY (918, "Zeta",                                                | V40   ),
-    ENTRY (919, "Eta",                                         | V40   ),
-    ENTRY (920, "Theta",                                       | V40   ),
-    ENTRY (921, "Iota",                                                | V40   ),
-    ENTRY (922, "Kappa",                                       | V40   ),
-    ENTRY (923, "Lambda",                                      | V40   ),
-    ENTRY (924, "Mu",                                          | V40   ),
-    ENTRY (925, "Nu",                                          | V40   ),
-    ENTRY (926, "Xi",                                          | V40   ),
-    ENTRY (927, "Omicron",                                     | V40   ),
-    ENTRY (928, "Pi",                                          | V40   ),
-    ENTRY (929, "Rho",                                         | V40   ),
-    ENTRY (931, "Sigma",                                       | V40   ),
-    ENTRY (932, "Tau",                                         | V40   ),
-    ENTRY (933, "Upsilon",                                     | V40   ),
-    ENTRY (934, "Phi",                                         | V40   ),
-    ENTRY (935, "Chi",                                         | V40   ),
-    ENTRY (936, "Psi",                                         | V40   ),
-    ENTRY (937, "Omega",                                       | V40   ),
-    ENTRY (945, "alpha",                                       | V40   ),
-    ENTRY (946, "beta",                                                | V40   ),
-    ENTRY (947, "gamma",                                       | V40   ),
-    ENTRY (948, "delta",                                       | V40   ),
-    ENTRY (949, "epsilon",                                     | V40   ),
-    ENTRY (950, "zeta",                                                | V40   ),
-    ENTRY (951, "eta",                                         | V40   ),
-    ENTRY (952, "theta",                                       | V40   ),
-    ENTRY (953, "iota",                                                | V40   ),
-    ENTRY (954, "kappa",                                       | V40   ),
-    ENTRY (955, "lambda",                                      | V40   ),
-    ENTRY (956, "mu",                                          | V40   ),
-    ENTRY (957, "nu",                                          | V40   ),
-    ENTRY (958, "xi",                                          | V40   ),
-    ENTRY (959, "omicron",                                     | V40   ),
-    ENTRY (960, "pi",                                          | V40   ),
-    ENTRY (961, "rho",                                         | V40   ),
-    ENTRY (962, "sigmaf",                                      | V40   ),
-    ENTRY (963, "sigma",                                       | V40   ),
-    ENTRY (964, "tau",                                         | V40   ),
-    ENTRY (965, "upsilon",                                     | V40   ),
-    ENTRY (966, "phi",                                         | V40   ),
-    ENTRY (967, "chi",                                         | V40   ),
-    ENTRY (968, "psi",                                         | V40   ),
-    ENTRY (969, "omega",                                       | V40   ),
-    ENTRY (977, "thetasym",                                    | V40   ),
-    ENTRY (978, "upsih",                                       | V40   ),
-    ENTRY (982, "piv",                                         | V40   ),
-    ENTRY (8194, "ensp",                                       | V40   ),
-    ENTRY (8195, "emsp",                                       | V40   ),
-    ENTRY (8201, "thinsp",                                     | V40   ),
-    ENTRY (8204, "zwnj",                       | V27           | V40   ),
-    ENTRY (8205, "zwj",                                | V27           | V40   ),
-    ENTRY (8206, "lrm",                                | V27           | V40   ),
-    ENTRY (8207, "rlm",                                | V27           | V40   ),
-    ENTRY (8211, "ndash",                                      | V40   ),
-    ENTRY (8212, "mdash",                                      | V40   ),
-    ENTRY (8216, "lsquo",                                      | V40   ),
-    ENTRY (8217, "rsquo",                                      | V40   ),
-    ENTRY (8218, "sbquo",                                      | V40   ),
-    ENTRY (8220, "ldquo",                                      | V40   ),
-    ENTRY (8221, "rdquo",                                      | V40   ),
-    ENTRY (8222, "bdquo",                                      | V40   ),
-    ENTRY (8224, "dagger",                                     | V40   ),
-    ENTRY (8225, "Dagger",                                     | V40   ),
-    ENTRY (8226, "bull",                                       | V40   ),
-    ENTRY (8230, "hellip",                                     | V40   ),
-    ENTRY (8240, "permil",                                     | V40   ),
-    ENTRY (8242, "prime",                                      | V40   ),
-    ENTRY (8243, "Prime",                                      | V40   ),
-    ENTRY (8249, "lsaquo",                                     | V40   ),
-    ENTRY (8250, "rsaquo",                                     | V40   ),
-    ENTRY (8254, "oline",                                      | V40   ),
-    ENTRY (8260, "frasl",                                      | V40   ),
-    ENTRY (8364, "euro",                                       | V40   ),
-    ENTRY (8465, "image",                                      | V40   ),
-    ENTRY (8472, "weierp",                                     | V40   ),
-    ENTRY (8476, "real",                                       | V40   ),
-    ENTRY (8482, "trade",                                      | V40   ),
-    ENTRY (8501, "alefsym",                                    | V40   ),
-    ENTRY (8592, "larr",                                       | V40   ),
-    ENTRY (8593, "uarr",                                       | V40   ),
-    ENTRY (8594, "rarr",                                       | V40   ),
-    ENTRY (8595, "darr",                                       | V40   ),
-    ENTRY (8596, "harr",                                       | V40   ),
-    ENTRY (8629, "crarr",                                      | V40   ),
-    ENTRY (8656, "lArr",                                       | V40   ),
-    ENTRY (8657, "uArr",                                       | V40   ),
-    ENTRY (8658, "rArr",                                       | V40   ),
-    ENTRY (8659, "dArr",                                       | V40   ),
-    ENTRY (8660, "hArr",                                       | V40   ),
-    ENTRY (8704, "forall",                                     | V40   ),
-    ENTRY (8706, "part",                                       | V40   ),
-    ENTRY (8707, "exist",                                      | V40   ),
-    ENTRY (8709, "empty",                                      | V40   ),
-    ENTRY (8711, "nabla",                                      | V40   ),
-    ENTRY (8712, "isin",                                       | V40   ),
-    ENTRY (8713, "notin",                                      | V40   ),
-    ENTRY (8715, "ni",                                         | V40   ),
-    ENTRY (8719, "prod",                                       | V40   ),
-    ENTRY (8721, "sum",                                                | V40   ),
-    ENTRY (8722, "minus",                                      | V40   ),
-    ENTRY (8727, "lowast",                                     | V40   ),
-    ENTRY (8730, "radic",                                      | V40   ),
-    ENTRY (8733, "prop",                                       | V40   ),
-    ENTRY (8734, "infin",                                      | V40   ),
-    ENTRY (8736, "ang",                                                | V40   ),
-    ENTRY (8743, "and",                                                | V40   ),
-    ENTRY (8744, "or",                                         | V40   ),
-    ENTRY (8745, "cap",                                                | V40   ),
-    ENTRY (8746, "cup",                                                | V40   ),
-    ENTRY (8747, "int",                                                | V40   ),
-    ENTRY (8756, "there4",                                     | V40   ),
-    ENTRY (8764, "sim",                                                | V40   ),
-    ENTRY (8773, "cong",                                       | V40   ),
-    ENTRY (8776, "asymp",                                      | V40   ),
-    ENTRY (8800, "ne",                                         | V40   ),
-    ENTRY (8801, "equiv",                                      | V40   ),
-    ENTRY (8804, "le",                                         | V40   ),
-    ENTRY (8805, "ge",                                         | V40   ),
-    ENTRY (8834, "sub",                                                | V40   ),
-    ENTRY (8835, "sup",                                                | V40   ),
-    ENTRY (8836, "nsub",                                       | V40   ),
-    ENTRY (8838, "sube",                                       | V40   ),
-    ENTRY (8839, "supe",                                       | V40   ),
-    ENTRY (8853, "oplus",                                      | V40   ),
-    ENTRY (8855, "otimes",                                     | V40   ),
-    ENTRY (8869, "perp",                                       | V40   ),
-    ENTRY (8901, "sdot",                                       | V40   ),
-    ENTRY (8968, "lceil",                                      | V40   ),
-    ENTRY (8969, "rceil",                                      | V40   ),
-    ENTRY (8970, "lfloor",                                     | V40   ),
-    ENTRY (8971, "rfloor",                                     | V40   ),
-    ENTRY (9001, "lang",                                       | V40   ),
-    ENTRY (9002, "rang",                                       | V40   ),
-    ENTRY (9674, "loz",                                                | V40   ),
-    ENTRY (9824, "spades",                                     | V40   ),
-    ENTRY (9827, "clubs",                                      | V40   ),
-    ENTRY (9829, "hearts",                                     | V40   ),
-    ENTRY (9830, "diams",                                      | V40   ),
-    ENTRY (0, NULL,                                                    )
-  };
-
-static struct ucs2_to_string const other_translations [] =
-  {
-    ENTRY (34, "quot",                                                         ),
-    ENTRY (38, "amp",                                                  ),
-    ENTRY (60, "lt",                                                   ),
-    ENTRY (62, "gt",                                                   ),
-    ENTRY (0, NULL,                                                    )
+    ENTRY (33, "excl",      0                             ),
+    ENTRY (34, "quot",      0      | V20 | V27 | V32 | V40),
+    ENTRY (35, "num",       0                             ),
+    ENTRY (36, "dollar",    0                             ),
+    ENTRY (37, "percnt",    0                             ),
+    ENTRY (38, "amp",       0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (39, "apos",      0                             ),
+    ENTRY (40, "lpar",      0                             ),
+    ENTRY (41, "rpar",      0                             ),
+    ENTRY (42, "ast",       0                             ),
+    ENTRY (43, "plus",      0                             ),
+    ENTRY (44, "comma",     0                             ),
+    ENTRY (45, "horbar",    0                             ),
+    ENTRY (46, "period",    0                             ),
+    ENTRY (58, "colon",     0                             ),
+    ENTRY (59, "semi",      0                             ),
+    ENTRY (60, "lt",        0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (61, "equals",    0                             ),
+    ENTRY (62, "gt",        0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (63, "quest",     0                             ),
+    ENTRY (64, "commat",    0                             ),
+    ENTRY (91, "lsqb",      0                             ),
+    ENTRY (93, "rsqb",      0                             ),
+    ENTRY (94, "uarr",      0                             ),
+    ENTRY (95, "lowbar",    0                             ),
+    ENTRY (96, "grave",     0                             ),
+    ENTRY (123, "lcub",     0                             ),
+    ENTRY (124, "verbar",   0                             ),
+    ENTRY (125, "rcub",     0                             ),
+    ENTRY (126, "tilde",    0                             ),
+    ENTRY (160, "nbsp",     0            | V27 | V32 | V40),
+    ENTRY (161, "iexcl",    0            | V27 | V32 | V40),
+    ENTRY (162, "cent",     0            | V27 | V32 | V40),
+    ENTRY (163, "pound",    0            | V27 | V32 | V40),
+    ENTRY (164, "curren",   0            | V27 | V32 | V40),
+    ENTRY (165, "yen",      0            | V27 | V32 | V40),
+    ENTRY (166, "brkbar",   0 | V11                        ),
+    ENTRY (166, "brvbar",   0            | V27 | V32 | V40),
+    ENTRY (167, "sect",     0            | V27 | V32 | V40),
+    ENTRY (168, "die",      0 | V11                        ),
+    ENTRY (168, "uml",      0            | V27 | V32 | V40),
+    ENTRY (169, "copy",     0            | V27 | V32 | V40),
+    ENTRY (170, "ordf",     0            | V27 | V32 | V40),
+    ENTRY (171, "laquo",    0            | V27 | V32 | V40),
+    ENTRY (172, "not",      0            | V27 | V32 | V40),
+    ENTRY (173, "hyphen",   0 | V11                        ),
+    ENTRY (173, "shy",      0            | V27 | V32 | V40),
+    ENTRY (174, "reg",      0            | V27 | V32 | V40),
+    ENTRY (175, "hibar",    0 | V11                        ),
+    ENTRY (175, "macr",     0            | V27 | V32 | V40),
+    ENTRY (176, "deg",      0            | V27 | V32 | V40),
+    ENTRY (177, "plusmn",   0            | V27 | V32 | V40),
+    ENTRY (178, "sup2",     0            | V27 | V32 | V40),
+    ENTRY (179, "sup3",     0            | V27 | V32 | V40),
+    ENTRY (180, "acute",    0            | V27 | V32 | V40),
+    ENTRY (181, "micro",    0            | V27 | V32 | V40),
+    ENTRY (182, "para",     0            | V27 | V32 | V40),
+    ENTRY (183, "middot",   0            | V27 | V32 | V40),
+    ENTRY (184, "cedil",    0            | V27 | V32 | V40),
+    ENTRY (185, "sup1",     0            | V27 | V32 | V40),
+    ENTRY (186, "ordm",     0            | V27 | V32 | V40),
+    ENTRY (187, "raquo",    0            | V27 | V32 | V40),
+    ENTRY (188, "frac14",   0            | V27 | V32 | V40),
+    ENTRY (189, "half",     0 | V11                        ),
+    ENTRY (189, "frac12",   0            | V27 | V32 | V40),
+    ENTRY (190, "frac34",   0            | V27 | V32 | V40),
+    ENTRY (191, "iquest",   0            | V27 | V32 | V40),
+    ENTRY (192, "Agrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (193, "Aacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (194, "Acircu",   0 | V11                        ),
+    ENTRY (194, "Acirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (195, "Atilde",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (196, "Adiaer",   0 | V11                        ),
+    ENTRY (196, "Auml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (197, "Aring",    0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (198, "AE",       0 | V11                        ),
+    ENTRY (198, "AElig",    0      | V20 | V27 | V32 | V40),
+    ENTRY (199, "Ccedil",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (200, "Egrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (201, "Eacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (202, "Ecircu",   0 | V11                        ),
+    ENTRY (202, "Ecirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (203, "Ediaer",   0 | V11                        ),
+    ENTRY (203, "Euml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (204, "Igrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (205, "Iacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (206, "Icircu",   0 | V11                        ),
+    ENTRY (206, "Icirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (207, "Idiaer",   0 | V11                        ),
+    ENTRY (207, "Iuml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (208, "ETH",      0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (209, "Ntilde",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (210, "Ograve",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (211, "Oacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (212, "Ocircu",   0 | V11                        ),
+    ENTRY (212, "Ocirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (213, "Otilde",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (214, "Odiaer",   0 | V11                        ),
+    ENTRY (214, "Ouml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (215, "MULT",     0 | V11                        ),
+    ENTRY (215, "times",    0            | V27 | V32 | V40),
+    ENTRY (216, "Ostroke",  0 | V11                        ),
+    ENTRY (216, "Oslash",   0      | V20 | V27 | V32 | V40),
+    ENTRY (217, "Ugrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (218, "Uacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (219, "Ucircu",   0 | V11                        ),
+    ENTRY (219, "Ucirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (220, "Udiaer",   0 | V11                        ),
+    ENTRY (220, "Uuml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (221, "Yacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (222, "THORN",    0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (223, "ssharp",   0 | V11                        ),
+    ENTRY (223, "szlig",    0      | V20 | V27 | V32 | V40),
+    ENTRY (224, "agrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (225, "aacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (226, "acircu",   0 | V11                        ),
+    ENTRY (226, "acirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (227, "atilde",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (228, "adiaer",   0 | V11                        ),
+    ENTRY (228, "auml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (229, "aring",    0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (230, "ae",       0 | V11                        ),
+    ENTRY (230, "aelig",    0      | V20 | V27 | V32 | V40),
+    ENTRY (231, "ccedil",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (232, "egrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (233, "eacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (234, "ecircu",   0 | V11                        ),
+    ENTRY (234, "ecirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (235, "ediaer",   0 | V11                        ),
+    ENTRY (235, "euml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (236, "igrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (237, "iacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (238, "icircu",   0 | V11                        ),
+    ENTRY (238, "icirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (239, "idiaer",   0 | V11                        ),
+    ENTRY (239, "iuml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (240, "eth",      0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (241, "ntilde",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (242, "ograve",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (243, "oacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (244, "ocircu",   0 | V11                        ),
+    ENTRY (244, "ocirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (245, "otilde",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (246, "odiaer",   0 | V11                        ),
+    ENTRY (246, "ouml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (247, "DIVIS",    0 | V11                        ),
+    ENTRY (247, "divide",   0            | V27 | V32 | V40),
+    ENTRY (248, "ostroke",  0 | V11                        ),
+    ENTRY (248, "oslash",   0      | V20 | V27 | V32 | V40),
+    ENTRY (249, "ugrave",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (250, "uacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (251, "ucircu",   0 | V11                        ),
+    ENTRY (251, "ucirc",    0      | V20 | V27 | V32 | V40),
+    ENTRY (252, "udiaer",   0 | V11                        ),
+    ENTRY (252, "uuml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (253, "yacute",   0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (254, "thorn",    0 | V11 | V20 | V27 | V32 | V40),
+    ENTRY (255, "ydiaer",   0 | V11                        ),
+    ENTRY (255, "yuml",     0      | V20 | V27 | V32 | V40),
+    ENTRY (338, "OElig",    0                        | V40),
+    ENTRY (339, "oelig",    0                        | V40),
+    ENTRY (352, "Scaron",   0                        | V40),
+    ENTRY (353, "scaron",   0                        | V40),
+    ENTRY (376, "Yuml",     0                        | V40),
+    ENTRY (402, "fnof",     0                        | V40),
+    ENTRY (710, "circ",     0                        | V40),
+    ENTRY (732, "tilde",    0                        | V40),
+    ENTRY (913, "Alpha",    0                        | V40),
+    ENTRY (914, "Beta",     0                        | V40),
+    ENTRY (915, "Gamma",    0                        | V40),
+    ENTRY (916, "Delta",    0                        | V40),
+    ENTRY (917, "Epsilon",  0                        | V40),
+    ENTRY (918, "Zeta",     0                        | V40),
+    ENTRY (919, "Eta",      0                        | V40),
+    ENTRY (920, "Theta",    0                        | V40),
+    ENTRY (921, "Iota",     0                        | V40),
+    ENTRY (922, "Kappa",    0                        | V40),
+    ENTRY (923, "Lambda",   0                        | V40),
+    ENTRY (924, "Mu",       0                        | V40),
+    ENTRY (925, "Nu",       0                        | V40),
+    ENTRY (926, "Xi",       0                        | V40),
+    ENTRY (927, "Omicron",  0                        | V40),
+    ENTRY (928, "Pi",       0                        | V40),
+    ENTRY (929, "Rho",      0                        | V40),
+    ENTRY (931, "Sigma",    0                        | V40),
+    ENTRY (932, "Tau",      0                        | V40),
+    ENTRY (933, "Upsilon",  0                        | V40),
+    ENTRY (934, "Phi",      0                        | V40),
+    ENTRY (935, "Chi",      0                        | V40),
+    ENTRY (936, "Psi",      0                        | V40),
+    ENTRY (937, "Omega",    0                        | V40),
+    ENTRY (945, "alpha",    0                        | V40),
+    ENTRY (946, "beta",     0                        | V40),
+    ENTRY (947, "gamma",    0                        | V40),
+    ENTRY (948, "delta",    0                        | V40),
+    ENTRY (949, "epsilon",  0                        | V40),
+    ENTRY (950, "zeta",     0                        | V40),
+    ENTRY (951, "eta",      0                        | V40),
+    ENTRY (952, "theta",    0                        | V40),
+    ENTRY (953, "iota",     0                        | V40),
+    ENTRY (954, "kappa",    0                        | V40),
+    ENTRY (955, "lambda",   0                        | V40),
+    ENTRY (956, "mu",       0                        | V40),
+    ENTRY (957, "nu",       0                        | V40),
+    ENTRY (958, "xi",       0                        | V40),
+    ENTRY (959, "omicron",  0                        | V40),
+    ENTRY (960, "pi",       0                        | V40),
+    ENTRY (961, "rho",      0                        | V40),
+    ENTRY (962, "sigmaf",   0                        | V40),
+    ENTRY (963, "sigma",    0                        | V40),
+    ENTRY (964, "tau",      0                        | V40),
+    ENTRY (965, "upsilon",  0                        | V40),
+    ENTRY (966, "phi",      0                        | V40),
+    ENTRY (967, "chi",      0                        | V40),
+    ENTRY (968, "psi",      0                        | V40),
+    ENTRY (969, "omega",    0                        | V40),
+    ENTRY (977, "thetasym", 0                        | V40),
+    ENTRY (978, "upsih",    0                        | V40),
+    ENTRY (982, "piv",      0                        | V40),
+    ENTRY (8194, "ensp",    0                        | V40),
+    ENTRY (8195, "emsp",    0                        | V40),
+    ENTRY (8201, "thinsp",  0                        | V40),
+    ENTRY (8204, "zwnj",    0            | V27       | V40),
+    ENTRY (8205, "zwj",     0            | V27       | V40),
+    ENTRY (8206, "lrm",     0            | V27       | V40),
+    ENTRY (8207, "rlm",     0            | V27       | V40),
+    ENTRY (8211, "ndash",   0                        | V40),
+    ENTRY (8212, "mdash",   0                        | V40),
+    ENTRY (8216, "lsquo",   0                        | V40),
+    ENTRY (8217, "rsquo",   0                        | V40),
+    ENTRY (8218, "sbquo",   0                        | V40),
+    ENTRY (8220, "ldquo",   0                        | V40),
+    ENTRY (8221, "rdquo",   0                        | V40),
+    ENTRY (8222, "bdquo",   0                        | V40),
+    ENTRY (8224, "dagger",  0                        | V40),
+    ENTRY (8225, "Dagger",  0                        | V40),
+    ENTRY (8226, "bull",    0                        | V40),
+    ENTRY (8230, "hellip",  0                        | V40),
+    ENTRY (8240, "permil",  0                        | V40),
+    ENTRY (8242, "prime",   0                        | V40),
+    ENTRY (8243, "Prime",   0                        | V40),
+    ENTRY (8249, "lsaquo",  0                        | V40),
+    ENTRY (8250, "rsaquo",  0                        | V40),
+    ENTRY (8254, "oline",   0                        | V40),
+    ENTRY (8260, "frasl",   0                        | V40),
+    ENTRY (8364, "euro",    0                        | V40),
+    ENTRY (8465, "image",   0                        | V40),
+    ENTRY (8472, "weierp",  0                        | V40),
+    ENTRY (8476, "real",    0                        | V40),
+    ENTRY (8482, "trade",   0                        | V40),
+    ENTRY (8501, "alefsym", 0                        | V40),
+    ENTRY (8592, "larr",    0                        | V40),
+    ENTRY (8593, "uarr",    0                        | V40),
+    ENTRY (8594, "rarr",    0                        | V40),
+    ENTRY (8595, "darr",    0                        | V40),
+    ENTRY (8596, "harr",    0                        | V40),
+    ENTRY (8629, "crarr",   0                        | V40),
+    ENTRY (8656, "lArr",    0                        | V40),
+    ENTRY (8657, "uArr",    0                        | V40),
+    ENTRY (8658, "rArr",    0                        | V40),
+    ENTRY (8659, "dArr",    0                        | V40),
+    ENTRY (8660, "hArr",    0                        | V40),
+    ENTRY (8704, "forall",  0                        | V40),
+    ENTRY (8706, "part",    0                        | V40),
+    ENTRY (8707, "exist",   0                        | V40),
+    ENTRY (8709, "empty",   0                        | V40),
+    ENTRY (8711, "nabla",   0                        | V40),
+    ENTRY (8712, "isin",    0                        | V40),
+    ENTRY (8713, "notin",   0                        | V40),
+    ENTRY (8715, "ni",      0                        | V40),
+    ENTRY (8719, "prod",    0                        | V40),
+    ENTRY (8721, "sum",     0                        | V40),
+    ENTRY (8722, "minus",   0                        | V40),
+    ENTRY (8727, "lowast",  0                        | V40),
+    ENTRY (8730, "radic",   0                        | V40),
+    ENTRY (8733, "prop",    0                        | V40),
+    ENTRY (8734, "infin",   0                        | V40),
+    ENTRY (8736, "ang",     0                        | V40),
+    ENTRY (8743, "and",     0                        | V40),
+    ENTRY (8744, "or",      0                        | V40),
+    ENTRY (8745, "cap",     0                        | V40),
+    ENTRY (8746, "cup",     0                        | V40),
+    ENTRY (8747, "int",     0                        | V40),
+    ENTRY (8756, "there4",  0                        | V40),
+    ENTRY (8764, "sim",     0                        | V40),
+    ENTRY (8773, "cong",    0                        | V40),
+    ENTRY (8776, "asymp",   0                        | V40),
+    ENTRY (8800, "ne",      0                        | V40),
+    ENTRY (8801, "equiv",   0                        | V40),
+    ENTRY (8804, "le",      0                        | V40),
+    ENTRY (8805, "ge",      0                        | V40),
+    ENTRY (8834, "sub",     0                        | V40),
+    ENTRY (8835, "sup",     0                        | V40),
+    ENTRY (8836, "nsub",    0                        | V40),
+    ENTRY (8838, "sube",    0                        | V40),
+    ENTRY (8839, "supe",    0                        | V40),
+    ENTRY (8853, "oplus",   0                        | V40),
+    ENTRY (8855, "otimes",  0                        | V40),
+    ENTRY (8869, "perp",    0                        | V40),
+    ENTRY (8901, "sdot",    0                        | V40),
+    ENTRY (8968, "lceil",   0                        | V40),
+    ENTRY (8969, "rceil",   0                        | V40),
+    ENTRY (8970, "lfloor",  0                        | V40),
+    ENTRY (8971, "rfloor",  0                        | V40),
+    ENTRY (9001, "lang",    0                        | V40),
+    ENTRY (9002, "rang",    0                        | V40),
+    ENTRY (9674, "loz",     0                        | V40),
+    ENTRY (9824, "spades",  0                        | V40),
+    ENTRY (9827, "clubs",   0                        | V40),
+    ENTRY (9829, "hearts",  0                        | V40),
+    ENTRY (9830, "diams",   0                        | V40),
+    ENTRY (0,    NULL,      0                              )
   };
 
 #undef ENTRY
@@ -439,12 +430,9 @@ init_ucs2_html (RECODE_STEP step,
   if (!table)
     return false;
 
-  for (cursor = main_translations; cursor->code; cursor++)
-    if (cursor->code > 128 && cursor->flags & mask)
-      if (!hash_insert (table, cursor))
-       return false;
-  if (!request->diacritics_only)
-    for (cursor = other_translations; cursor->code; cursor++)
+  for (cursor = translations; cursor->code; cursor++)
+    if (cursor->flags & mask
+       && (!request->diacritics_only || cursor->code > 128))
       if (!hash_insert (table, cursor))
        return false;
 
@@ -453,10 +441,6 @@ init_ucs2_html (RECODE_STEP step,
   return true;
 }
 
-/*-----------------.
-| Initialisation.  |
-`-----------------*/
-
 static bool
 init_ucs2_html_v11 (RECODE_STEP step,
                    RECODE_CONST_REQUEST request,
@@ -502,6 +486,10 @@ init_ucs2_html_v40 (RECODE_STEP step,
   init_ucs2_html (step, request, before_options, after_options, V40);
 }
 
+/*-----------------.
+| Transformation.  |
+`-----------------*/
+
 static bool
 transform_ucs2_html (RECODE_CONST_STEP step, RECODE_TASK task)
 {
@@ -527,7 +515,7 @@ transform_ucs2_html (RECODE_CONST_STEP step, RECODE_TASK task)
            }
          put_byte (';', task);
        }
-      else if ((value < 32 || value >= 127) && value != '\n')
+      else if (value < 32 && value != '\n' && value != '\t' || value >= 127)
        {
          unsigned divider = 10000;
 
@@ -608,12 +596,9 @@ init_html_ucs2 (RECODE_STEP step,
   if (!table)
     return false;
 
-  for (cursor = main_translations; cursor->code; cursor++)
-    if (cursor->flags & mask)
-      if (!hash_insert (table, cursor))
-       return false;
-  if (!request->diacritics_only)
-    for (cursor = other_translations; cursor->code; cursor++)
+  for (cursor = translations; cursor->code; cursor++)
+    if (cursor->flags & mask
+       && (!request->diacritics_only || cursor->code > 128))
       if (!hash_insert (table, cursor))
        return false;
 
@@ -678,6 +663,9 @@ transform_html_ucs2 (RECODE_CONST_STEP step, RECODE_TASK task)
   int input_char;
 
   input_char = get_byte (task);
+  if (input_char != EOF)
+    put_ucs2 (BYTE_ORDER_MARK, task);  /* FIXME: experimental */
+
   while (input_char != EOF)
 
     if (input_char == '&')
@@ -703,18 +691,18 @@ transform_html_ucs2 (RECODE_CONST_STEP step, RECODE_TASK task)
 
                while (valid)
                  {
-                   if (input_char >= '0' && input_char < '9')
+                   if (input_char >= '0' && input_char <= '9')
                      value = 16 * value + input_char - '0';
-                   else if (input_char >= 'A' && input_char < 'Z')
+                   else if (input_char >= 'A' && input_char <= 'F')
                      value = 16 * value + input_char - 'A' + 10;
-                   else if (input_char >= 'a' && input_char < 'z')
+                   else if (input_char >= 'a' && input_char <= 'f')
                      value = 16 * value + input_char - 'a' + 10;
                    else
                      break;
 
                    if (value >= 65535)
                      valid = false;
-                   else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 1)
+                   else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2)
                      valid = false;
                    else
                      {
@@ -725,7 +713,10 @@ transform_html_ucs2 (RECODE_CONST_STEP step, RECODE_TASK task)
 
                if (valid)
                  if (request->diacritics_only)
-                   echo = true;
+                   {
+                     echo = true;
+                     *cursor = '\0';
+                   }
                  else
                    {
                      put_ucs2 (value, task);
@@ -741,16 +732,18 @@ transform_html_ucs2 (RECODE_CONST_STEP step, RECODE_TASK task)
 
                /* Scan &#[0-9]+; notation.  */
 
+               *cursor++ = '#';
+
                while (valid)
                  {
-                   if (input_char >= '0' && input_char < '9')
+                   if (input_char >= '0' && input_char <= '9')
                      value = 10 * value + input_char - '0';
                    else
                      break;
 
                    if (value >= 65535)
                      valid = false;
-                   else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 1)
+                   else if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2)
                      valid = false;
                    else
                      {
@@ -761,7 +754,10 @@ transform_html_ucs2 (RECODE_CONST_STEP step, RECODE_TASK task)
 
                if (valid)
                  if (request->diacritics_only)
-                   echo = true;
+                   {
+                     echo = true;
+                     *cursor = '\0';
+                   }
                  else
                    {
                      put_ucs2 (value, task);
@@ -785,7 +781,7 @@ transform_html_ucs2 (RECODE_CONST_STEP step, RECODE_TASK task)
                   && ((input_char >= 'A' && input_char <= 'Z')
                       || (input_char >= 'a' && input_char <= 'z')
                       || (input_char >= '0' && input_char <= '9')))
-             if (cursor == buffer + ENTITY_BUFFER_LENGTH - 1)
+             if (cursor == buffer + ENTITY_BUFFER_LENGTH - 2)
                valid = false;
              else
                {
index 0756987bddb40613d7f342d9b5ec3260d50b8dfe..3ed21d7904e9f98ddeaa291783eaa3038e03c40b 100644 (file)
@@ -16,6 +16,7 @@
   if (!module_utf7 (outer)) return false;
   if (!module_utf8 (outer)) return false;
   if (!module_varia (outer)) return false;
+  if (!module_viet (outer)) return false;
   if (!module_flat (outer)) return false;
   if (!module_html (outer)) return false;
   if (!module_latin1_latex (outer)) return false;
index 5983b6e70f4a71c13bcf4d1b98dfafea82466eea..082e70d076647c925f70d5a6f76802e769e49178 100644 (file)
@@ -835,11 +835,9 @@ Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"),
              if (file = fopen (input_name, "r+"), file == NULL)
                error (EXIT_FAILURE, errno, "fopen (%s)", input_name);
 
-             /* Save the input file time stamp.  */
-
-             if (!touch_option)
-               fstat (fileno (file), &file_stat);
+             /* Save the input file attrobites.  */
 
+             fstat (fileno (file), &file_stat);
              fclose (file);
 
              {
@@ -847,6 +845,9 @@ Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"),
 
                /* Choose an output file in the same directory.  */
 
+               /* FIXME: Scott Schwartz <schwartz@bio.cse.psu.edu> writes:
+                  "There's no reason to think that that name is unique."  */
+
                strcpy (output_name, input_name);
 #if DOSWIN_OR_OS2
                for (cursor = output_name + strlen (output_name);
@@ -893,6 +894,11 @@ Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"),
 
                  if (unlink (input_name) < 0)
                    error (EXIT_FAILURE, errno, "unlink (%s)", input_name);
+
+                 /* Preserve the file permissions.  */
+
+                 if (chmod (output_name, file_stat.st_mode & 07777) < 0)
+                   error (EXIT_FAILURE, errno, "chmod (%s)", output_name);
 #if HAVE_RENAME
                  if (rename (output_name, input_name) < 0)
                    error (EXIT_FAILURE, errno, "rename (%s, %s)",
@@ -921,15 +927,15 @@ Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"),
                  success = false;
                  if (verbose_flag)
                    {
-                     fprintf (stderr, _(" failed: %s in %s..%s\n"),
+                     fprintf (stderr, _(" failed: %s in step `%s..%s'\n"),
                               task_perror (task),
                               task->error_at_step->before->name,
                               task->error_at_step->after->name);
                      fflush (stderr);
                    }
                  else if (!quiet_flag)
-                   error (0, 0, _("%s failed: %s in %s..%s"), input_name,
-                          task_perror (task),
+                   error (0, 0, _("%s failed: %s in step `%s..%s'"),
+                          input_name, task_perror (task),
                           task->error_at_step->before->name,
                           task->error_at_step->after->name);
 
@@ -951,7 +957,7 @@ Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.\n"),
          {
            success = false;
            if (!quiet_flag)
-             error (0, 0, _("%s in %s..%s"),
+             error (0, 0, _("%s in step `%s..%s'"),
                     task_perror (task),
                     task->error_at_step->before->name,
                     task->error_at_step->after->name);
index 966da879a20fca126fed6858c861eff434d9c16f..ccc7e4586b56277474fdee83930931de73740b25 100644 (file)
@@ -1,7 +1,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.84 95/04/20 12:46:03 vern Exp $
+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
  */
 
 #define FLEX_SCANNER
@@ -126,6 +126,7 @@ extern FILE *yyin, *yyout;
                { \
                /* Undo effects of setting up yytext. */ \
                *yy_cp = yy_hold_char; \
+               YY_RESTORE_YY_MORE_OFFSET \
                yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
@@ -235,7 +236,7 @@ void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
 
 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 
 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
@@ -780,9 +781,10 @@ static char *yy_last_accepting_cpos;
 #define REJECT reject_used_but_not_detected
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #define INITIAL 0
-/* This file is generated automatically by mergelex.awk.  */
+/* This file is generated automatically by `mergelex.py'.  */
 #include "common.h"
 static RECODE_CONST_REQUEST request;
 static RECODE_TASK task;
@@ -814,6 +816,10 @@ static void yyunput YY_PROTO(( int c, char *buf_ptr ));
 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
 #endif
 
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+#endif
+
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
 static int yyinput YY_PROTO(( void ));
@@ -1954,6 +1960,7 @@ ECHO;
 
                /* Undo the effects of YY_DO_BEFORE_ACTION. */
                *yy_cp = yy_hold_char;
+               YY_RESTORE_YY_MORE_OFFSET
 
                if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
                        {
@@ -2099,7 +2106,7 @@ static int yy_get_next_buffer()
                { /* Don't try to fill the buffer, so this is an EOF. */
                if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
                        {
-                       /* We matched a singled characater, the EOB, so
+                       /* We matched a single character, the EOB, so
                         * treat this as a final EOF.
                         */
                        return EOB_ACT_END_OF_FILE;
@@ -2126,7 +2133,7 @@ static int yy_get_next_buffer()
                /* don't do the read, it's not guaranteed to return an EOF,
                 * just force an EOF
                 */
-               yy_n_chars = 0;
+               yy_current_buffer->yy_n_chars = yy_n_chars = 0;
 
        else
                {
@@ -2181,6 +2188,8 @@ static int yy_get_next_buffer()
                /* Read in more data. */
                YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
                        yy_n_chars, num_to_read );
+
+               yy_current_buffer->yy_n_chars = yy_n_chars;
                }
 
        if ( yy_n_chars == 0 )
@@ -2305,7 +2314,8 @@ register char *yy_bp;
 
                yy_cp += (int) (dest - source);
                yy_bp += (int) (dest - source);
-               yy_n_chars = yy_current_buffer->yy_buf_size;
+               yy_current_buffer->yy_n_chars =
+                       yy_n_chars = yy_current_buffer->yy_buf_size;
 
                if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
@@ -2343,19 +2353,31 @@ static int input()
 
                else
                        { /* need more input */
-                       yytext_ptr = yy_c_buf_p;
+                       int offset = yy_c_buf_p - yytext_ptr;
                        ++yy_c_buf_p;
 
                        switch ( yy_get_next_buffer() )
                                {
+                               case EOB_ACT_LAST_MATCH:
+                                       /* This happens because yy_g_n_b()
+                                        * sees that we've accumulated a
+                                        * token and flags that we need to
+                                        * try matching the token before
+                                        * proceeding.  But for input(),
+                                        * there's no matching to consider.
+                                        * So convert the EOB_ACT_LAST_MATCH
+                                        * to EOB_ACT_END_OF_FILE.
+                                        */
+
+                                       /* Reset buffer status. */
+                                       yyrestart( yyin );
+
+                                       /* fall through */
+
                                case EOB_ACT_END_OF_FILE:
                                        {
                                        if ( yywrap() )
-                                               {
-                                               yy_c_buf_p =
-                                               yytext_ptr + YY_MORE_ADJ;
                                                return EOF;
-                                               }
 
                                        if ( ! yy_did_buffer_switch_on_eof )
                                                YY_NEW_FILE;
@@ -2367,17 +2389,8 @@ static int input()
                                        }
 
                                case EOB_ACT_CONTINUE_SCAN:
-                                       yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+                                       yy_c_buf_p = yytext_ptr + offset;
                                        break;
-
-                               case EOB_ACT_LAST_MATCH:
-#ifdef __cplusplus
-                                       YY_FATAL_ERROR(
-                                       "unexpected last match in yyinput()" );
-#else
-                                       YY_FATAL_ERROR(
-                                       "unexpected last match in input()" );
-#endif
                                }
                        }
                }
@@ -2541,6 +2554,9 @@ YY_BUFFER_STATE b;
 #endif
 
        {
+       if ( ! b )
+               return;
+
        b->yy_n_chars = 0;
 
        /* We always need two end-of-buffer characters.  The first causes
@@ -2600,17 +2616,17 @@ yy_size_t size;
 
 #ifndef YY_NO_SCAN_STRING
 #ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *str )
+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
 #else
-YY_BUFFER_STATE yy_scan_string( str )
-yyconst char *str;
+YY_BUFFER_STATE yy_scan_string( yy_str )
+yyconst char *yy_str;
 #endif
        {
        int len;
-       for ( len = 0; str[len]; ++len )
+       for ( len = 0; yy_str[len]; ++len )
                ;
 
-       return yy_scan_bytes( str, len );
+       return yy_scan_bytes( yy_str, len );
        }
 #endif
 
@@ -2731,7 +2747,7 @@ char msg[];
                { \
                /* Undo effects of setting up yytext. */ \
                yytext[yyleng] = yy_hold_char; \
-               yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
+               yy_c_buf_p = yytext + n; \
                yy_hold_char = *yy_c_buf_p; \
                *yy_c_buf_p = '\0'; \
                yyleng = n; \
@@ -2757,6 +2773,22 @@ int n;
        }
 #endif
 
+#ifdef YY_NEED_STRLEN
+#ifdef YY_USE_PROTOS
+static int yy_flex_strlen( yyconst char *s )
+#else
+static int yy_flex_strlen( s )
+yyconst char *s;
+#endif
+       {
+       register int n;
+       for ( n = 0; s[n]; ++n )
+               ;
+
+       return n;
+       }
+#endif
+
 
 #ifdef YY_USE_PROTOS
 static void *yy_flex_alloc( yy_size_t size )
@@ -2776,7 +2808,14 @@ void *ptr;
 yy_size_t size;
 #endif
        {
-       return (void *) realloc( ptr, size );
+       /* The cast to (char *) in the following accommodates both
+        * implementations that use char* generic pointers, and those
+        * that use void* generic pointers.  It works with the latter
+        * because both ANSI C and C++ allow castless assignment from
+        * any pointer type to void*, and deal with argument conversions
+        * as though doing an assignment.
+        */
+       return (void *) realloc( (char *) ptr, size );
        }
 
 #ifdef YY_USE_PROTOS
@@ -2797,6 +2836,26 @@ int main()
        }
 #endif
 
+/* Conversion of files between different charsets and surfaces.
+   Copyright © 1990, 93, 94, 97, 98, 99 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by François Pinard <pinard@iro.umontreal.ca>, 1988.
+
+   The `recode' 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 `recode' 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 `recode' 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.  */
+
 
 static bool
 transform_ascii_latin1 (RECODE_CONST_STEP step, RECODE_TASK task_argument)
diff --git a/src/mergelex.awk b/src/mergelex.awk
deleted file mode 100644 (file)
index 6bbf3e5..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-# Conversion of files between different charsets and surfaces.
-# Copyright © 1990, 1993, 1994, 1995, 1997, 1999 Free Software Foundation, Inc.
-# François Pinard <pinard@iro.umontreal.ca>, 1990.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program 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
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# This awk script merges several lex sources intended for `recode'.
-# It requires Flex 2.5 or later.
-
-# At beginning, one temporary file is initialized for each section.
-
-BEGIN {
-  SECTION1 = "merged1.tmp"
-  SECTION2 = "merged2.tmp"
-  SECTION3 = "merged3.tmp"
-
-  print "/* This file is generated automatically by mergelex.awk.  */"
-
-  print ""                                             >SECTION1
-  print "%option noyywrap"                             >SECTION1
-  print "%{"                                           >SECTION1
-  print "#include \"common.h\""                                >SECTION1
-  print "static RECODE_CONST_REQUEST request;"         >SECTION1
-  print "static RECODE_TASK task;"                     >SECTION1
-  print "%}"                                           >SECTION1
-
-  print "%%"                                           >SECTION2
-  print "<<EOF>>                       { return 1; }"  >SECTION2
-
-  print "%%"                                           >SECTION3
-}
-
-# A `/* Step name: NAME.  */' line indicates the start of a new file.
-# Generate an interface routine.  The step name is saved for broketed
-# prefixes in rules.
-
-$1 == "/*" && $2 == "Step" && $3 == "name:" && $5 == "*/" {
-  section = 1
-  step_name = $4
-  sub ("\.$", "", step_name)
-  print ""                                             >SECTION3
-  print "static bool"                                  >SECTION3
-  print "transform_" step_name \
-        " (RECODE_CONST_STEP step," \
-       " RECODE_TASK task_argument)"                   >SECTION3
-  print "{"                                            >SECTION3
-  print "  task = task_argument;"                      >SECTION3
-  print "  request = task->request;"                   >SECTION3
-  print "  yy_init = 1;"                               >SECTION3
-  print "  yyin = task->input.file;"                   >SECTION3
-  print "  yyout = task->output.file;"                 >SECTION3
-  print "  BEGIN " step_name ";"                       >SECTION3
-  print "  return yylex ();"                           >SECTION3
-  print "}"                                            >SECTION3
-  next
-}
-
-# Remove block C comments in section 1, except the very first.  It is
-# assumed that, when a /* comment starts in column 1, there is no code
-# following the closing */ on its line.  Also, remove all white lines.
-
-/^\/\*/ && section == 1 {
-  while (!match ($0, /\*\//)) {
-    if (!comment_done) {
-      print
-    }
-    getline
-  }
-  if (!comment_done) {
-    print
-  }
-  comment_done = 1
-  next
-}
-
-/^[    ]*$/ && section == 1 {
-  next
-}
-
-# A %% in column 1 signals the beginning of lex rules.
-
-/^%%/ && section == 1 {
-  print "%x " step_name                                        >SECTION1
-  section = 2
-  print ""                                             >SECTION2
-  print "<" step_name ">{"                             >SECTION2
-  next
-}
-
-# A %{ comment in column 1 signals the start of a C code section ended
-# by a %} line.
-
-/^%\{/ {
-  c_code = 1
-  print ""                                             >SECTION1
-  print                                                        >SECTION1
-  next
-}
-
-/^%\}/ {
-  print                                                        >SECTION1
-  print ""                                             >SECTION1
-  c_code = 0
-  next
-}
-
-c_code {
-  print                                                        >SECTION1
-  next
-}
-
-# Section 1 declarations are studied and copied, once each.
-# Conflicting declaractions are reported at beginning of output.
-
-/^[^   ]/ && section == 1 {
-  if ($1 in rules) {
-    if ($0 != rules[$1]) {
-      print "** Conflicting definition: " $0
-    }
-  }
-  else {
-    rules[$1] = $0
-    print                                              >SECTION1
-  }
-  next
-}
-
-# In section 2, a %% in column 1 starts section 3, which contains pure
-# C code, which is copied verbatim.
-
-/^%%/ && section == 2 {
-  print "}"                                            >SECTION2
-  section = 3
-  next
-}
-
-section == 2 {
-  print                                                        >SECTION2
-  next
-}
-
-section == 3 {
-  print                                                        >SECTION3
-  next
-}
-
-# At end, all three temporary files are reread and output, followed by
-# the generated interfaces: one routine for each step name.
-
-END {
-  if (section == 2)
-    print "}"                                          >SECTION2
-
-  close (SECTION1)
-  close (SECTION2)
-  close (SECTION3)
-
-  while (getline <SECTION1)
-    print
-  close (SECTION1)
-
-  while (getline <SECTION2)
-    print
-  close (SECTION2)
-
-  while (getline <SECTION3)
-    print
-  close (SECTION3)
-}
diff --git a/src/mergelex.py b/src/mergelex.py
new file mode 100644 (file)
index 0000000..4383b89
--- /dev/null
@@ -0,0 +1,144 @@
+# Conversion of files between different charsets and surfaces.
+# Copyright © 1990, 1993, 1994, 1995, 1997, 1999 Free Software Foundation, Inc.
+# François Pinard <pinard@iro.umontreal.ca>, 1990.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# This Python script merges several Flex sources intended for `recode'.
+# It requires Flex 2.5 or later.
+
+import re, string, sys
+
+# Initial comments.
+section0 = ["/* This file is generated automatically by `mergelex.py'.  */\n"]
+# Flex and C declarations.
+section1 = ["\n"
+            "%option noyywrap\n"
+            "%{\n"
+            '#include "common.h"\n'
+            "static RECODE_CONST_REQUEST request;\n"
+            "static RECODE_TASK task;\n"
+            "%}\n"]
+# Flex rules.
+section2 = ["%%\n"
+            "<<EOF>>                   { return 1; }\n"]
+# Rest of C code.
+section3 = ["%%\n"]
+
+comment_done = 0
+within_C_code = 0
+definitions = {}
+section = 3
+
+while 1:
+    line = sys.stdin.readline()
+    if not line:
+        break
+
+    # A `/* Step name: NAME.  */' line indicates the start of a new file.
+    # Generate an interface routine.  The step name is saved for broketed
+    # prefixes in rules.
+
+    match = re.match(r'/\* Step name: (.*)\.  \*/', line)
+    if match:
+        section = 1
+        step_name = match.group(1)
+        section3.append(
+            '\n'
+            'static bool\n'
+            'transform_%s'
+            ' (RECODE_CONST_STEP step, RECODE_TASK task_argument)\n'
+            '{\n'
+            '  task = task_argument;\n'
+            '  request = task->request;\n'
+            '  yy_init = 1;\n'
+            '  yyin = task->input.file;\n'
+            '  yyout = task->output.file;\n'
+            '  BEGIN %s;\n'
+            '  return yylex ();\n'
+            '}\n'
+            % (step_name, step_name))
+        continue
+
+    # In section 1, any %% in column 1 signals the beginning of lex rules.
+    # Remove all white lines.
+
+    if section == 1:
+        if re.match('^[ \t]*$', line):
+            continue
+        if line[:2] == '%%':
+            section1.append('%%x %s\n' % step_name)
+            section = 2
+            section2.append('\n'
+                            '<%s>{\n'
+                            % step_name)
+            continue
+
+    # A %{ comment in column 1 signals the start of a C code section ended
+    # by a %} line.
+
+    if line[:2] == '%{':
+        within_C_code = 1
+        section1.append('\n')
+        section1.append(line)
+        continue
+    if line[:2] == '%}':
+        section1.append(line)
+        section1.append('\n')
+        within_C_code = 0
+        continue
+    if within_C_code:
+        section1.append(line)
+        continue
+
+    # Section 1 declarations are studied and copied, once each.
+    # Conflicting declaractions are reported at beginning of output.
+
+    if section == 1 and line[0] not in (' ', '\t', '\n'):
+        key, rest = string.split(line, None, 1)
+        if definitions.has_key(key):
+            if definitions[key] != line:
+                sys.stderr.write("** Conflicting definition: %s" % line)
+        else:
+            definitions[key] = line
+            section1.append(line)
+        continue
+
+    # In section 2, a %% in column 1 starts section 3.
+
+    if section == 2:
+        if line[:2] == '%%':
+            section2.append('}\n')
+            section = 3
+        else:
+            section2.append(line)
+        continue
+
+    # Section 3 contains C code, all copied verbatim.
+
+    if section == 3:
+        section3.append(line)
+        continue
+
+# At end, output all temporary buffers.  This produces the generated
+# interfaces: one routine for each step name.
+
+if section == 2:
+    section2.append('}\n')
+
+sys.stdout.writelines(section0)
+sys.stdout.writelines(section1)
+sys.stdout.writelines(section2)
+sys.stdout.writelines(section3)
index bfd4be748f1aaef3b07b4a4133dc43d022e4b061..bbab7152976532e0953b571a8a166509d9dfadf9 100644 (file)
@@ -144,11 +144,11 @@ register_explode_data (RECODE_OUTER outer,
 
 #endif
 
-/*----------------------------------------------------------------------------.
-| Associate an explode format DATA structure with charset NAME_COMBINED.  If  |
-| NAME_EXPLODED is not NULL, it should be the name of a 8-bit based charset.  |
-| A NULL value for NAME_EXPLODED implies UCS-2.                               |
-`----------------------------------------------------------------------------*/
+/*--------------------------------------------------------------------------.
+| Associate an explode format DATA structure with charset NAME_COMBINED, an |
+| 8-bit charset.  A NULL value for NAME_EXPLODED implies UCS-2.  Otherwise, |
+| NAME_EXPLODED should be the name of a 8-bit based charset.                |
+`--------------------------------------------------------------------------*/
 
 bool
 declare_explode_data (RECODE_OUTER outer, const unsigned short *data,
@@ -461,6 +461,9 @@ recode_new_outer (bool auto_abort)
 bool
 recode_delete_outer (RECODE_OUTER outer)
 {
+  /* FIXME: Pawel Krawczyk reports that calling new_outer ... delete_outer
+     20000 times in a program has the effect of consuming all virtual memory.
+     So there might be memory leaks should to track down and resolve.  */
   while (outer->number_of_charsets > 0)
     {
       RECODE_CHARSET charset = outer->charset_list;
index b4f9eb7dccfafe8557936e1c290928de744f6b84..5ef93ea090133916674be707abfbb8ee9f35e9fa 100644 (file)
@@ -26,7 +26,7 @@ static const bool bitnet_flag = false;
 
 /* Characters from 33 to 60 inclusive and from 62 to 126 inclusive do not
    need be quoted.  */
-static const char safe_char_usual[128] =
+static const char safe_char_usual[1 << 7] =
 {
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*   0- 15 */
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  16- 31 */
@@ -39,7 +39,7 @@ static const char safe_char_usual[128] =
 };
 
 /* In a Bitnet environment, also quote: ! " # $ @ [ \ ] ^ ` { | } ~ */
-static const char safe_char_bitnet[128] =
+static const char safe_char_bitnet[1 << 7] =
 {
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*   0- 15 */
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*  16- 31 */
@@ -66,20 +66,16 @@ static bool
 transform_data_quoted_printable (RECODE_CONST_STEP step,
                                 RECODE_TASK task)
 {
-  const char *safe_char;
-  unsigned available;
-  int character;
+  const char *safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual;
+  unsigned available = MIME_LINE_LENGTH;
+  int character = get_byte (task);
   int next_character;
 
-  safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual;
+  /* Proper maximum filling of quoted-printable lines, avoiding a line buffer
+     nor much look-ahead, is a bit trickier than I initially expected.  */
 
-  /* Proper maximum filling of quoted-printable lines is a bit trickier than
-     I initially expected, avoiding a line buffer nor much look-ahead.  */
-
-  available = MIME_LINE_LENGTH;
-  character = get_byte (task);
   while (character != EOF)
-    if (character < 128 && safe_char[character])
+    if (!(character & (1 << 7)) && safe_char[character])
 
       /* Case of a safe character.  */
 
@@ -219,130 +215,130 @@ transform_data_quoted_printable (RECODE_CONST_STEP step,
 }
 
 static bool
-transform_quoted_printable_byte (RECODE_CONST_STEP step,
+transform_quoted_printable_data (RECODE_CONST_STEP step,
                                 RECODE_TASK task)
 {
-  const char *safe_char;
-  bool status;
-  unsigned counter;
-  int character;
-  unsigned last_length;
-  enum {SPACE_TYPE, SAFE_TYPE, QUOTED_TYPE} last_type;
+  const char *safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual;
+  unsigned counter = 0;
+  int character = get_byte (task);
+  char buffer[MIME_LINE_LENGTH + 1];
+  char *cursor;
   unsigned value;
 
-  /* FIXME: reversibility validation is not really implemented.  To be
-     completed at some later time.  */
-
-  safe_char = bitnet_flag ? safe_char_bitnet : safe_char_usual;
-
-  status = true;
-  counter = 0;
-  character = get_byte (task);
-  last_length = MIME_LINE_LENGTH;
-  last_type = SAFE_TYPE;
   while (character != EOF)
-    {
-      switch (character)
-       {
-       case '\n':
-
-         /* Process hard line break.  */
-
-         last_length = counter;
-         counter = 0;
-         if (last_type == SPACE_TYPE)
-           status = false;
-         put_byte ('\n', task);
-         character = get_byte (task);
-         last_type = SAFE_TYPE;
-         break;
-
-       case ' ':
-       case '\t':
-
-         /* Process white space.  */
-
-         counter++;
-#if 0
-         if (available == 0)
-           status = false;
-#endif
-           put_byte (character, task);
+    switch (character)
+      {
+      case '\n':
+       /* Process hard line break.  */
+
+       if (counter > MIME_LINE_LENGTH)
+         RETURN_IF_NOGO (RECODE_NOT_CANONICAL, step, task);
+       counter = 0;
+       put_byte ('\n', task);
+       character = get_byte (task);
+       break;
+
+      case ' ':
+      case '\t':
+       /* Process white space.  */
+
+       cursor = buffer;
+       while (character == ' ' || character == '\t')
+         {
+           if (cursor == buffer + MIME_LINE_LENGTH)
+             {
+               RETURN_IF_NOGO (RECODE_INVALID_INPUT, step, task);
+               for (cursor = buffer;
+                    cursor < buffer + MIME_LINE_LENGTH;
+                    cursor++)
+                 put_byte (*cursor, task);
+             }
+           counter++;
+           *cursor++ = character;
            character = get_byte (task);
-           last_type = SPACE_TYPE;
+         }
+       if (character == '\n' || character == EOF)
+         {
+           RETURN_IF_NOGO (RECODE_NOT_CANONICAL, step, task);
+           counter = 0;
            break;
+         }
+       *cursor = '\0';
+       for (cursor = buffer; *cursor; cursor++)
+         put_byte (*cursor, task);
+       break;
+
+      case '=':
+       counter++;
+       character = get_byte (task);
+       if (character == ' ' || character == '\t' || character == '\n')
+         {
+           /* Process soft line break.  */
+
+           if (character == ' ' || character == '\t')
+             {
+               RETURN_IF_NOGO (RECODE_NOT_CANONICAL, step, task);
+               while (character == ' ' || character == '\t')
+                 {
+                   counter++;
+                   character = get_byte (task);
+                 }
+             }
+           if (character != '\n')
+             {
+               RETURN_IF_NOGO (RECODE_INVALID_INPUT, step, task);
+               break;
+             }
+           if (counter > MIME_LINE_LENGTH)
+             RETURN_IF_NOGO (RECODE_NOT_CANONICAL, step, task);
+           counter = 0;
+           character = get_byte (task);
+           break;
+         }
 
-       case '=':
-         character = get_byte (task);
-         if (character == ' ' || character == '\t' || character == '\n')
-           {
-             /* Process soft line break.  */
-
-             while (character == ' ' || character == '\t')
-               character = get_byte (task);
-             if (character != '\n')
-               {
-                 status = false;
-                 break;
-               }
-             counter = 0;
-             character = get_byte (task);
-             break;
-           }
-
-         /* Process quoted value.  */
-
-         if (character >= '0' && character <= '9')
-           value = (character - '0') << 4;
-         else if (character >= 'a' && character <= 'f')
-           value = (character - 'a' + 10) << 4;
-         else if (character >= 'A' && character <= 'F')
-           value = (character - 'A' + 10) << 4;
-         else
-           {
-             counter++;
-             status = false;
-             break;
-           }
-         character = get_byte (task);
-         if (character >= '0' && character <= '9')
-           value |= character - '0';
-         else if (character >= 'a' && character <= 'f')
-           value |= character - 'a' + 10;
-         else if (character >= 'A' && character <= 'F')
-           value |= character - 'A' + 10;
-         else
-           {
-             counter += 2;
-             status = false;
-             break;
-           }
-         counter += 3;
-         put_byte (value, task);
-         character = get_byte (task);
-         last_type = QUOTED_TYPE;
-         break;
+       /* Process quoted value.  */
 
-       default:
-
-         /* Process safe character.  */
+       counter++;
+       if (character >= '0' && character <= '9')
+         value = (character - '0') << 4;
+       else if (character >= 'a' && character <= 'f')
+         value = (character - 'a' + 10) << 4;
+       else if (character >= 'A' && character <= 'F')
+         value = (character - 'A' + 10) << 4;
+       else
+         {
+           RETURN_IF_NOGO (RECODE_INVALID_INPUT, step, task);
+           break;
+         }
+       character = get_byte (task);
+       counter++;
+       if (character >= '0' && character <= '9')
+         value |= character - '0';
+       else if (character >= 'a' && character <= 'f')
+         value |= character - 'a' + 10;
+       else if (character >= 'A' && character <= 'F')
+         value |= character - 'A' + 10;
+       else
+         {
+           RETURN_IF_NOGO (RECODE_INVALID_INPUT, step, task);
+           break;
+         }
+       if (!(value & (1 << 7)) && safe_char[value])
+         RETURN_IF_NOGO (RECODE_NOT_CANONICAL, step, task);
 
-         counter++;
-         put_byte (character, task);
-         character = get_byte (task);
-         last_type = SAFE_TYPE;
-       }
+       put_byte (value, task);
+       character = get_byte (task);
+       break;
 
-      /* Truncate longer lines, ensuring it is white space.  */
+      default:
+       /* Process safe character.  */
 
-      if (counter >= MIME_LINE_LENGTH)
-       while (character != '\n' && character != EOF)
-         {
-           if (character != ' ' && character != '\t')
-             status = false;
-           character = get_byte (task);
-         }
-    }
+       counter++;
+       if (character & (1 << 7) || !safe_char[character])
+         RETURN_IF_NOGO (RECODE_INVALID_INPUT, step, task);
+       put_byte (character, task);
+       character = get_byte (task);
+      }
 
   if (counter != 0)
     /* Last line is not terminated.  */
@@ -360,7 +356,7 @@ module_quoted_printable (RECODE_OUTER outer)
                    NULL, transform_data_quoted_printable)
     && declare_single (outer, "Quoted-Printable", "data",
                       outer->quality_variable_to_variable,
-                      NULL, transform_quoted_printable_byte)
+                      NULL, transform_quoted_printable_data)
     && declare_alias (outer, "quote-printable", "Quoted-Printable")
     && declare_alias (outer, "QP", "Quoted-Printable");
 }
similarity index 88%
rename from doc/recode.1
rename to src/recode.1
index 92f3fc14a3e9cb4ac6b7456cab0a317e7d951c1c..3c2194f1eb158169d2cf43335a0b37c575e317ab 100644 (file)
@@ -1,10 +1,10 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.010.
-.TH RECODE 1 "May 1999" "Free recode 3.4r" "FSF"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.019.
+.TH RECODE "1" "December 1999" "Free recode 3.5a" FSF
 .SH NAME
-recode \- manual page for recode 3.4r
+recode \- manual page for recode 3.5a
 .SH SYNOPSIS
-.B recode
-[\fIOPTION\fR]... [ [\fICHARSET\fR]\fI | REQUEST \fR[\fIFILE\fR]... ]
+.B lt-recode
+[\fIOPTION\fR]... [ [\fICHARSET\fR] \fI| REQUEST \fR[\fIFILE\fR]... ]
 .SH DESCRIPTION
 Free `recode' converts files between various character sets and surfaces.
 .PP
@@ -77,9 +77,9 @@ approximate IBMPC rulers by ASCII graphics
 \fB\-x\fR, \fB\-\-ignore\fR=\fICHARSET\fR
 ignore CHARSET while choosing a recoding path
 .PP
-Option -l with no FORMAT nor CHARSET list available charsets and surfaces.
+Option \fB\-l\fR with no FORMAT nor CHARSET list available charsets and surfaces.
 FORMAT is `decimal', `octal', `hexadecimal' or `full' (or one of `dohf').
-Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `Latin-1'.
+Unless DEFAULT_CHARSET is set in environment, CHARSET defaults to `ISO-8859-1'.
 LN is some language, it may be `c', `perl' or `po'; `c' is the default.
 .PP
 REQUEST is SUBREQUEST[,SUBREQUEST]...; SUBREQUEST is ENCODING[..ENCODING]...
@@ -88,11 +88,18 @@ with BEFORE and AFTER being charsets.  An omitted CHARSET implies the usual
 charset; an omitted [/SURFACE]... means the implied surfaces for CHARSET; a /
 with an empty surface name means no surfaces at all.  See the manual.
 .PP
-If none of -i and -p are given, presume -p if no FILE, else -i.
+If none of \fB\-i\fR and \fB\-p\fR are given, presume \fB\-p\fR if no FILE, else \fB\-i\fR.
 Each FILE is recoded over itself, destroying the original.  If no
 FILE is specified, then act as a filter and recode stdin to stdout.
+.SH AUTHOR
+Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.
 .SH "REPORTING BUGS"
 Report bugs to <recode-bugs@iro.umontreal.ca>.
+.SH COPYRIGHT
+Copyright \(co 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 .SH "SEE ALSO"
 The full documentation for
 .B recode
@@ -105,10 +112,3 @@ programs are properly installed at your site, the command
 .B info recode
 .PP
 should give you access to the complete manual.
-.SH COPYRIGHT
-Copyright \(co 1990, 92, 93, 94, 96, 97, 99 Free Software Foundation, Inc.
-.br
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-.SH AUTHOR
-Written by Franc,ois Pinard <pinard@iro.umontreal.ca>.
index 74ddeed818c9ca347e91692dcf004bddadaf28c9..9607975bd52811be50785764bd1b0d5a475d7031 100644 (file)
@@ -57,7 +57,7 @@ recode_error (RECODE_OUTER outer, const char *format, ...)
 #else
 recode_error (outer, format, va_alist)
      RECODE_OUTER outer;
-     char *format;
+     const char *format;
      va_dcl
 #endif
 {
@@ -84,7 +84,7 @@ recode_perror (RECODE_OUTER outer, const char *format, ...)
 #else
 recode_perror (outer, format, va_alist)
      RECODE_OUTER outer;
-     char *format;
+     const char *format;
      va_dcl
 #endif
 {
index 8c6eea159fc94be0f059ab8ec2dd934680393f57..6717030bc199617360aab6205f05f60ebe7aaf48 100644 (file)
@@ -55,6 +55,10 @@ enum recode_programming_language
 \f
 /* Function prototypes.  */
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /*--------------------------------.
 | Recode library at OUTER level.  |
 `--------------------------------*/
@@ -109,3 +113,7 @@ bool recode_delete_task PARAMS ((RECODE_TASK));
 bool recode_perform_task PARAMS ((RECODE_TASK));
 /* FILE *recode_filter_open PARAMS ((RECODE_TASK, FILE *)); */
 /* bool recode_filter_close PARAMS ((RECODE_TASK)); */
+
+#ifdef __cplusplus
+}
+#endif
index 22494b711033b1e9023955a3426b004960856322..80df7689bea80670161cbb469c1d54646b1df274 100644 (file)
@@ -513,6 +513,12 @@ struct ucs2_to_string
     const char *string;                /* corresponding string */
   };
 \f
+/* Per module declarations.  */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* recode.c.  */
 
 #define ALLOC_SIZE(Variable, Size, Type) \
@@ -540,7 +546,7 @@ bool init_ucs2_to_byte PARAMS ((RECODE_STEP, RECODE_CONST_REQUEST,
                                RECODE_CONST_OPTION_LIST,
                                RECODE_CONST_OPTION_LIST));
 bool transform_ucs2_to_byte PARAMS ((RECODE_CONST_STEP, RECODE_TASK));
-\f
+
 /* charname.c and fr-charname.c.  */
 
 const char *ucs2_to_charname PARAMS ((int));
@@ -657,6 +663,10 @@ bool get_ucs2 PARAMS ((unsigned *, RECODE_CONST_STEP, RECODE_TASK));
 bool get_ucs4 PARAMS ((unsigned *, RECODE_CONST_STEP, RECODE_TASK));
 bool put_ucs2 PARAMS ((unsigned, RECODE_TASK));
 bool put_ucs4 PARAMS ((unsigned, RECODE_TASK));
+
+#ifdef __cplusplus
+}
+#endif
 \f
 /* Global macros specifically for `recode'.  */
 
index 1ac44359b41a74b53ea6f00b07db904c5a574f94..e2474a6015aa36e4311b5bf839bd3c40f4696e1c 100644 (file)
@@ -1,4 +1,4 @@
-/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.pl'.  */
+/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.py'.  */
 
 /* Conversion of files between different charsets and surfaces.
    Copyright © 1999 Free Software Foundation, Inc.
index cb30164518c5cd058223a88d127dfc625f721fd7..448da167e07971d83b38c52327548ec7d32cbdc3 100644 (file)
@@ -1,4 +1,4 @@
-/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.pl'.  */
+/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.py'.  */
 
 /* Conversion of files between different charsets and surfaces.
    Copyright © 1999 Free Software Foundation, Inc.
index f99b271f0160f7d78ef1fc576f5f6f965bffec79..0b94f242bb34905c21c567f454e60d39d8fc88b1 100644 (file)
@@ -1,4 +1,4 @@
-/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.pl'.  */
+/* DO NOT MODIFY THIS FILE!  It was generated by `recode/doc/tables.py'.  */
 
 /* Conversion of files between different charsets and surfaces.
    Copyright © 1999 Free Software Foundation, Inc.
diff --git a/src/vn.c b/src/vn.c
new file mode 100644 (file)
index 0000000..4f2c7b1
--- /dev/null
+++ b/src/vn.c
@@ -0,0 +1,434 @@
+/* Vietnamese charset processing.
+   Copyright © 1999 Progiciels Bourbeau-Pinard inc.
+   François Pinard <pinard@iro.umontreal.ca>, 1999.  */
+
+#include "common.h"
+
+static const recode_ucs2 tcvn_pool[256] =
+  {
+    /*   0 */ 0x0000, 0x00DA, 0x1EE4, 0x0003, 0x1EEA, 0x1EEC, 0x1EEE, 0x0007,
+    /*   8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
+    /*  16 */ 0x0010, 0x1EE8, 0x1EF0, 0x1EF2, 0x1EF6, 0x1EF8, 0x00DD, 0x1EF4,
+    /*  24 */ 0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
+    /*  32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    /*  40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+    /*  48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    /*  56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+    /*  64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    /*  72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+    /*  80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    /*  88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
+    /*  96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+    /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
+    /* 128 */ 0x00C0, 0x1EA2, 0x00C3, 0x00C1, 0x1EA0, 0x1EB6, 0x1EAC, 0x00C8,
+    /* 136 */ 0x1EBA, 0x1EBC, 0x00C9, 0x1EB8, 0x1EC6, 0x00CC, 0x1EC8, 0x0128,
+    /* 144 */ 0x00CD, 0x1ECA, 0x00D2, 0x1ECE, 0x00D5, 0x00D3, 0x1ECC, 0x1ED8,
+    /* 152 */ 0x1EDC, 0x1EDE, 0x1EE0, 0x1EDA, 0x1EE2, 0x00D9, 0x1EE6, 0x0168,
+    /* 160 */ 0xFFFF, 0x0102, 0x00C2, 0x00CA, 0x00D4, 0x01A0, 0x01AF, 0x0110,
+    /* 168 */ 0x0103, 0x00E2, 0x00EA, 0x00F4, 0x01A1, 0x01B0, 0x0111, 0x1EB0,
+    /* 176 */ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00E0, 0x1EA3, 0x00E3,
+    /* 184 */ 0x00E1, 0x1EA1, 0x1EB2, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EAF, 0x1EB4,
+    /* 192 */ 0x1EAE, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EA4, 0x1EC0, 0x1EB7, 0x1EA7,
+    /* 200 */ 0x1EA9, 0x1EAB, 0x1EA5, 0x1EAD, 0x00E8, 0x1EC2, 0x1EBB, 0x1EBD,
+    /* 208 */ 0x00E9, 0x1EB9, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EBF, 0x1EC7, 0x00EC,
+    /* 216 */ 0x1EC9, 0x1EC4, 0x1EBE, 0x1ED2, 0x0129, 0x00ED, 0x1ECB, 0x00F2,
+    /* 224 */ 0x1ED4, 0x1ECF, 0x00F5, 0x00F3, 0x1ECD, 0x1ED3, 0x1ED5, 0x1ED7,
+    /* 232 */ 0x1ED1, 0x1ED9, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EDB, 0x1EE3, 0x00F9,
+    /* 240 */ 0x1ED6, 0x1EE7, 0x0169, 0x00FA, 0x1EE5, 0x1EEB, 0x1EED, 0x1EEF,
+    /* 248 */ 0x1EE9, 0x1EF1, 0x1EF3, 0x1EF7, 0x1EF9, 0x00FD, 0x1EF5, 0x1ED0,
+  };
+
+static struct strip_data tcvn_strip_data =
+  {
+    tcvn_pool,
+    {
+      0,    8,   16,   24,   32,   40,   48,   56,   64,   72,   80,   88,
+      96,  104,  112,  120,  128,  136,  144,  152,  160,  168,  176,  184,
+      192, 200,  208,  216,  224,  232,  240,  248
+    }
+  };
+
+static const recode_ucs2 viscii_pool[256] =
+  {
+    /*   0 */ 0x0000, 0x0001, 0x1EB2, 0x0003, 0x0004, 0x1EB4, 0x1EAA, 0x0007,
+    /*   8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
+    /*  16 */ 0x0010, 0x0011, 0x0012, 0x0013, 0x1EF6, 0x0015, 0x0016, 0x0017,
+    /*  24 */ 0x0018, 0x1EF8, 0x001A, 0x001B, 0x001C, 0x001D, 0x1EF4, 0x001F,
+    /*  32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    /*  40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+    /*  48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    /*  56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+    /*  64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    /*  72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+    /*  80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    /*  88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
+    /*  96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+    /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
+    /* 128 */ 0x1EA0, 0x1EAE, 0x1EB0, 0x1EB6, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAC,
+    /* 136 */ 0x1EBC, 0x1EB8, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1ED0,
+    /* 144 */ 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EE2, 0x1EDA, 0x1EDC, 0x1EDE,
+    /* 152 */ 0x1ECA, 0x1ECE, 0x1ECC, 0x1EC8, 0x1EE6, 0x0168, 0x1EE4, 0x1EF2,
+    /* 160 */ 0x00D5, 0x1EAF, 0x1EB1, 0x1EB7, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAD,
+    /* 168 */ 0x1EBD, 0x1EB9, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1ED1,
+    /* 176 */ 0x1ED3, 0x1ED5, 0x1ED7, 0x1EE0, 0x01A0, 0x1ED9, 0x1EDD, 0x1EDF,
+    /* 184 */ 0x1ECB, 0x1EF0, 0x1EE8, 0x1EEA, 0x1EEC, 0x01A1, 0x1EDB, 0x01AF,
+    /* 192 */ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x1EA2, 0x0102, 0x1EB3, 0x1EB5,
+    /* 200 */ 0x00C8, 0x00C9, 0x00CA, 0x1EBA, 0x00CC, 0x00CD, 0x0128, 0x1EF3,
+    /* 208 */ 0x0110, 0x1EE9, 0x00D2, 0x00D3, 0x00D4, 0x1EA1, 0x1EF7, 0x1EEB,
+    /* 216 */ 0x1EED, 0x00D9, 0x00DA, 0x1EF9, 0x1EF5, 0x00DD, 0x1EE1, 0x01B0,
+    /* 224 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x0103, 0x1EEF, 0x1EAB,
+    /* 232 */ 0x00E8, 0x00E9, 0x00EA, 0x1EBB, 0x00EC, 0x00ED, 0x0129, 0x1EC9,
+    /* 240 */ 0x0111, 0x1EF1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x1ECF, 0x1ECD,
+    /* 248 */ 0x1EE5, 0x00F9, 0x00FA, 0x0169, 0x1EE7, 0x00FD, 0x1EE3, 0x1EEE,
+  };
+
+static struct strip_data viscii_strip_data =
+  {
+    viscii_pool,
+    {
+      0,    8,   16,   24,   32,   40,   48,   56,   64,   72,   80,   88,
+      96,  104,  112,  120,  128,  136,  144,  152,  160,  168,  176,  184,
+      192, 200,  208,  216,  224,  232,  240,  248
+    }
+  };
+
+static const recode_ucs2 vps_pool[256] =
+  {
+    /*   0 */ 0x0000, 0x0001, 0x1EA0, 0x1EAC, 0x1EB6, 0x1EB8, 0x1EC6, 0x0007,
+    /*   8 */ 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
+    /*  16 */ 0x1ECA, 0x1ECC, 0x1ED8, 0x1EE2, 0x1EE4, 0x1EF0, 0x0016, 0x0017,
+    /*  24 */ 0x0018, 0x1EF4, 0x001A, 0x001B, 0x1EAA, 0x1EEE, 0x001E, 0x001F,
+    /*  32 */ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+    /*  40 */ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+    /*  48 */ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+    /*  56 */ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+    /*  64 */ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    /*  72 */ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+    /*  80 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+    /*  88 */ 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
+    /*  96 */ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+    /* 104 */ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+    /* 112 */ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+    /* 120 */ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
+    /* 128 */ 0x00C0, 0x1EA2, 0x00C3, 0x1EA4, 0x1EA6, 0x1EA8, 0x1ECD, 0x1ED7,
+    /* 136 */ 0x0102, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC7, 0x1EAE, 0x1EB0, 0x1EB2,
+    /* 144 */ 0x1EBE, 0xFFFF, 0xFFFF, 0x1EC0, 0x1EC2, 0x1EC4, 0x1ED0, 0x1ED2,
+    /* 152 */ 0x1ED4, 0xFFFF, 0x00FD, 0x1EF7, 0x1EF5, 0x1EDA, 0x1EDC, 0x1EDE,
+    /* 160 */ 0xFFFF, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EE0, 0x1EDB,
+    /* 168 */ 0x00D9, 0x1EDD, 0x1EDF, 0x1EE1, 0x0168, 0x1EE8, 0x1EE3, 0x1EEA,
+    /* 176 */ 0x1ED5, 0x1EEC, 0x1EF2, 0x1EF8, 0x00CD, 0x00CC, 0x1ED9, 0x1EC8,
+    /* 184 */ 0x0128, 0x00D3, 0x1EED, 0x1EEF, 0x00D2, 0x1ECE, 0x00D5, 0x1EF1,
+    /* 192 */ 0x1EA7, 0x00C1, 0x00C2, 0x1EA5, 0x1EA9, 0x1EAB, 0x1EAD, 0x0111,
+    /* 200 */ 0x1EBB, 0x00C9, 0x00CA, 0x1EB9, 0x1EC9, 0x1EC5, 0x1ECB, 0x1EF9,
+    /* 208 */ 0x01AF, 0x1EE6, 0x1ED3, 0x1ED1, 0x00D4, 0x1ECF, 0x01A1, 0x00C8,
+    /* 216 */ 0x1EEB, 0x1EE9, 0x00DA, 0x0169, 0x01B0, 0x00DD, 0x1EBA, 0xFFFF,
+    /* 224 */ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x1EA3, 0x1EA1, 0x0103, 0xFFFF,
+    /* 232 */ 0x00E8, 0x00E9, 0x00EA, 0x1EBD, 0x00EC, 0x00ED, 0xFFFF, 0x0129,
+    /* 240 */ 0x1EB4, 0x0110, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0xFFFF, 0x01A0,
+    /* 248 */ 0x1EE5, 0x00F9, 0x00FA, 0x1EE7, 0xFFFF, 0x1EF6, 0x1EBC, 0x1EF3,
+  };
+
+static struct strip_data vps_strip_data =
+  {
+    vps_pool,
+    {
+      0,    8,   16,   24,   32,   40,   48,   56,   64,   72,   80,   88,
+      96,  104,  112,  120,  128,  136,  144,  152,  160,  168,  176,  184,
+      192, 200,  208,  216,  224,  232,  240,  248
+    }
+  };
+
+static const unsigned short viscii_viqr_data[] =
+  {
+    2, 'A', '(', '?', DONE,
+    5, 'A', '(', '~', DONE,
+    6, 'A', '^', '~', DONE,
+    20, 'Y', '?', DONE,
+    25, 'Y', '~', DONE,
+    30, 'Y', '.', DONE,
+    128, 'A', '.', DONE,
+    129, 'A', '(', '\'', DONE,
+    130, 'A', '(', '`', DONE,
+    131, 'A', '(', '.', DONE,
+    132, 'A', '^', '\'', DONE,
+    133, 'A', '^', '`', DONE,
+    134, 'A', '^', '?', DONE,
+    135, 'A', '^', '.', DONE,
+    136, 'E', '~', DONE,
+    137, 'E', '.', DONE,
+    138, 'E', '^', '\'', DONE,
+    139, 'E', '^', '`', DONE,
+    140, 'E', '^', '?', DONE,
+    141, 'E', '^', '~', DONE,
+    142, 'E', '^', '.', DONE,
+    143, 'O', '^', '\'', DONE,
+    144, 'O', '^', '`', DONE,
+    145, 'O', '^', '?', DONE,
+    146, 'O', '^', '~', DONE,
+    147, 'O', '^', '.', DONE,
+    148, 'O', '+', '.', DONE,
+    149, 'O', '+', '\'', DONE,
+    150, 'O', '+', '`', DONE,
+    151, 'O', '+', '?', DONE,
+    152, 'I', '.', DONE,
+    153, 'O', '?', DONE,
+    154, 'O', '.', DONE,
+    155, 'I', '?', DONE,
+    156, 'U', '?', DONE,
+    157, 'U', '~', DONE,
+    158, 'U', '.', DONE,
+    159, 'Y', '`', DONE,
+    160, 'O', '~', DONE,
+    161, 'a', '(', '\'', DONE,
+    162, 'a', '(', '`', DONE,
+    163, 'a', '(', '.', DONE,
+    164, 'a', '^', '\'', DONE,
+    165, 'a', '^', '`', DONE,
+    166, 'a', '^', '?', DONE,
+    167, 'a', '^', '.', DONE,
+    168, 'e', '~', DONE,
+    169, 'e', '.', DONE,
+    170, 'e', '^', '\'', DONE,
+    171, 'e', '^', '`', DONE,
+    172, 'e', '^', '?', DONE,
+    173, 'e', '^', '~', DONE,
+    174, 'e', '^', '.', DONE,
+    175, 'o', '^', '\'', DONE,
+    176, 'o', '^', '`', DONE,
+    177, 'o', '^', '?', DONE,
+    178, 'o', '^', '~', DONE,
+    179, 'O', '+', '~', DONE,
+    180, 'O', '+', DONE,
+    181, 'o', '^', '.', DONE,
+    182, 'o', '+', '`', DONE,
+    183, 'o', '+', '?', DONE,
+    184, 'i', '.', DONE,
+    185, 'U', '+', '.', DONE,
+    186, 'U', '+', '\'', DONE,
+    187, 'U', '+', '`', DONE,
+    188, 'U', '+', '?', DONE,
+    189, 'o', '+', DONE,
+    190, 'o', '+', '\'', DONE,
+    191, 'U', '+', DONE,
+    192, 'A', '`', DONE,
+    193, 'A', '\'', DONE,
+    194, 'A', '^', DONE,
+    195, 'A', '~', DONE,
+    196, 'A', '?', DONE,
+    197, 'A', '(', DONE,
+    198, 'a', '(', '?', DONE,
+    199, 'a', '(', '~', DONE,
+    200, 'E', '`', DONE,
+    201, 'E', '\'', DONE,
+    202, 'E', '^', DONE,
+    203, 'E', '?', DONE,
+    204, 'I', '`', DONE,
+    205, 'I', '\'', DONE,
+    206, 'I', '~', DONE,
+    207, 'y', '`', DONE,
+    208, 'D', 'D', ELSE, 'D', 'd', ELSE, 'd', 'D', DONE,
+    209, 'u', '+', '\'', DONE,
+    210, 'O', '`', DONE,
+    211, 'O', '\'', DONE,
+    212, 'O', '^', DONE,
+    213, 'a', '.', DONE,
+    214, 'y', '?', DONE,
+    215, 'u', '+', '`', DONE,
+    216, 'u', '+', '?', DONE,
+    217, 'U', '`', DONE,
+    218, 'U', '\'', DONE,
+    219, 'y', '~', DONE,
+    220, 'y', '.', DONE,
+    221, 'Y', '\'', DONE,
+    222, 'o', '+', '~', DONE,
+    223, 'u', '+', DONE,
+    224, 'a', '`', DONE,
+    225, 'a', '\'', DONE,
+    226, 'a', '^', DONE,
+    227, 'a', '~', DONE,
+    228, 'a', '?', DONE,
+    229, 'a', '(', DONE,
+    230, 'u', '+', '~', DONE,
+    231, 'a', '^', '~', DONE,
+    232, 'e', '`', DONE,
+    233, 'e', '\'', DONE,
+    234, 'e', '^', DONE,
+    235, 'e', '?', DONE,
+    236, 'i', '`', DONE,
+    237, 'i', '\'', DONE,
+    238, 'i', '~', DONE,
+    239, 'i', '?', DONE,
+    240, 'd', 'd', DONE,
+    241, 'u', '+', '.', DONE,
+    242, 'o', '`', DONE,
+    243, 'o', '\'', DONE,
+    244, 'o', '^', DONE,
+    245, 'o', '~', DONE,
+    246, 'o', '?', DONE,
+    247, 'o', '.', DONE,
+    248, 'u', '.', DONE,
+    249, 'u', '`', DONE,
+    250, 'u', '\'', DONE,
+    251, 'u', '~', DONE,
+    252, 'u', '?', DONE,
+    253, 'y', '\'', DONE,
+    254, 'o', '+', '.', DONE,
+    255, 'U', '+', '~', DONE,
+  };
+
+static const unsigned short viscii_vni_data[] =
+  {
+    2, 'A', 'Ú', DONE,
+    5, 'A', 'Ü', DONE,
+    6, 'A', 'Ã', DONE,
+    20, 'Y', 'Û', DONE,
+    25, 'Y', 'Õ', DONE,
+    30, 'Î', DONE,
+    128, 'A', 'Ï', DONE,
+    129, 'A', 'É', DONE,
+    130, 'A', 'É', DONE,
+    131, 'A', 'Ë', DONE,
+    132, 'A', 'Á', DONE,
+    133, 'A', 'À', DONE,
+    134, 'A', 'Å', DONE,
+    135, 'A', 'Ä', DONE,
+    136, 'E', 'Õ', DONE,
+    137, 'E', 'Ï', DONE,
+    138, 'E', 'Á', DONE,
+    139, 'E', 'À', DONE,
+    140, 'E', 'Å', DONE,
+    141, 'E', 'Ã', DONE,
+    142, 'E', 'Ä', DONE,
+    143, 'O', 'Á', DONE,
+    144, 'O', 'À', DONE,
+    145, 'O', 'Å', DONE,
+    146, 'O', 'Ã', DONE,
+    147, 'O', 'Ä', DONE,
+    148, 'Ô', 'Ï', DONE,
+    149, 'Ô', 'Ù', DONE,
+    150, 'Ô', 'Ø', DONE,
+    151, 'Ô', 'Û', DONE,
+    152, 'Ò', DONE,
+    153, 'O', 'Û', DONE,
+    154, 'O', 'Ï', DONE,
+    155, 'Æ', DONE,
+    156, 'U', 'Û', DONE,
+    157, 'U', 'Õ', DONE,
+    158, 'U', 'Ï', DONE,
+    159, 'Y', 'Ø', DONE,
+    160, 'O', 'Õ', DONE,
+    161, 'a', 'é', DONE,
+    162, 'a', 'è', DONE,
+    163, 'a', 'ë', DONE,
+    164, 'a', 'á', DONE,
+    165, 'a', 'à', DONE,
+    166, 'a', 'å', DONE,
+    167, 'a', 'ä', DONE,
+    168, 'e', 'õ', DONE,
+    169, 'e', 'ï', DONE,
+    170, 'e', 'á', DONE,
+    171, 'e', 'à', DONE,
+    172, 'e', 'å', DONE,
+    173, 'e', 'ã', DONE,
+    174, 'e', 'ä', DONE,
+    175, 'o', 'á', DONE,
+    176, 'o', 'à', DONE,
+    177, 'o', 'å', DONE,
+    178, 'o', 'ã', DONE,
+    179, 'Ô', 'Õ', DONE,
+    180, 'Ô', DONE,
+    181, 'o', 'ä', DONE,
+    182, 'ô', 'ø', DONE,
+    183, 'ô', 'û', DONE,
+    184, 'ò', DONE,
+    185, 'Ö', 'Ï', DONE,
+    186, 'Ö', 'Ù', DONE,
+    187, 'Ö', 'Ø', DONE,
+    188, 'Ö', 'Û', DONE,
+    189, 'ô', DONE,
+    190, 'ô', 'ù', DONE,
+    191, 'Ö', DONE,
+    192, 'A', 'Ø', DONE,
+    193, 'A', 'Ù', DONE,
+    194, 'A', 'Â', DONE,
+    195, 'A', 'Õ', DONE,
+    196, 'A', 'Û', DONE,
+    197, 'A', 'Ê', DONE,
+    198, 'a', 'ú', DONE,
+    199, 'a', 'ü', DONE,
+    200, 'E', 'Ø', DONE,
+    201, 'E', 'Ù', DONE,
+    202, 'E', 'Â', DONE,
+    203, 'E', 'Û', DONE,
+    204, 'Ì', DONE,
+    205, 'Í', DONE,
+    206, 'Ó', DONE,
+    207, 'y', 'ø', DONE,
+    208, 'Ñ', DONE,
+    209, 'ö', 'ù', DONE,
+    210, 'O', 'Ø', DONE,
+    211, 'O', 'Ù', DONE,
+    212, 'O', 'Â', DONE,
+    213, 'a', 'ï', DONE,
+    214, 'y', 'û', DONE,
+    215, 'ö', 'ø', DONE,
+    216, 'ö', 'û', DONE,
+    217, 'U', 'Ø', DONE,
+    218, 'U', 'Ù', DONE,
+    219, 'y', 'õ', DONE,
+    220, 'î', DONE,
+    221, 'Y', 'Ù', DONE,
+    222, 'ô', 'õ', DONE,
+    223, 'ö', DONE,
+    224, 'a', 'ø', DONE,
+    225, 'a', 'ù', DONE,
+    226, 'a', 'â', DONE,
+    227, 'a', 'õ', DONE,
+    228, 'a', 'û', DONE,
+    229, 'a', 'ê', DONE,
+    230, 'ö', 'õ', DONE,
+    231, 'a', 'ã', DONE,
+    232, 'e', 'ø', DONE,
+    233, 'e', 'ù', DONE,
+    234, 'e', 'â', DONE,
+    235, 'e', 'û', DONE,
+    236, 'ì', DONE,
+    237, 'í', DONE,
+    238, 'ó', DONE,
+    239, 'æ', DONE,
+    240, 'ñ', DONE,
+    241, 'ö', 'ï', DONE,
+    242, 'o', 'ø', DONE,
+    243, 'o', 'ù', DONE,
+    244, 'o', 'â', DONE,
+    245, 'o', 'õ', DONE,
+    246, 'o', 'û', DONE,
+    247, 'o', 'ï', DONE,
+    248, 'u', 'ï', DONE,
+    249, 'u', 'ø', DONE,
+    250, 'u', 'ù', DONE,
+    251, 'u', 'õ', DONE,
+    252, 'u', 'û', DONE,
+    253, 'y', 'ù', DONE,
+    254, 'ô', 'ï', DONE,
+    255, 'Ö', 'Õ', DONE,
+  };
+
+bool
+module_viet (RECODE_OUTER outer)
+{
+  if (!declare_strip_data (outer, &tcvn_strip_data, "TCVN"))
+    return false;
+  if (!declare_strip_data (outer, &viscii_strip_data, "VISCII"))
+    return false;
+  if (!declare_strip_data (outer, &vps_strip_data, "VPS"))
+    return false;
+  if (!declare_explode_data (outer, viscii_viqr_data, "VISCII", "VIQR"))
+    return false;
+  if (!declare_explode_data (outer, viscii_vni_data, "VISCII", "VNI"))
+    return false;
+}
index fc1dea1852873df1a003385b2c34fc9a849218ab..ef5935b7f0cb9efeb003df1c92a7a850b86d28ee 100644 (file)
@@ -1,6 +1,39 @@
-1999-05-31  François Pinard  <pinard@iro.umontreal.ca>
+1999-12-19  François Pinard  <pinard@iro.umontreal.ca>
 
-       * Makefile.am:
+       * names.m4: Adjusted for vietnamese charsets.
+
+1999-12-15  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am (clean-local): Get rid of at-check-line, stderr,
+       stdout, input and output.
+
+1999-12-13  François Pinard  <pinard@iro.umontreal.ca>
+
+       * bigauto.sh: Protect against locale.
+
+1999-12-11  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * suite.m4: Add Latin-1 coding tag.
+       * atgeneral.m4: Use `diff' over `cmp' for DOSWIN.
+       * african.m4, base64.m4, dumps.m4, utf7.m4: Make the test suite
+       less Unix-chauvinist, so it could run on DOS/Windows in the DJGPP
+       environment.
+
+1999-11-16  François Pinard  <pinard@iro.umontreal.ca>
+
+       * atgeneral.m4: Increase the verbosity of verbose option.  Better
+       protect real exit status.  Add capability to ignore stdout or stderr.
+       Rewrite AT_CHECK so it is more legible.  Define and use AT_CASE.
+       Reported by Akim Demaille.
+
+1999-06-02  François Pinard  <pinard@iro.umontreal.ca>
+
+       * atgeneral.m4 (at_usage): Typo.
+\f
+1999-06-01  François Pinard  <pinard@iro.umontreal.ca>
+
+       * Makefile.am (check-local): Do not warn for installed library, as
+       we now use a newer and better libtool.
 
 1999-04-02  François Pinard  <pinard@iro.umontreal.ca>
 
index 258c4e887e8be263fe4949fc0d6455b20b04fc74..e2841e82c69c60006814f9d75b2ca7381917dab0 100644 (file)
@@ -54,4 +54,5 @@ bigtest-strict:
        $(PERL) $(srcdir)/bigauto.pl big-s-on.res
 
 clean-local:
-       rm -f debug-*.sh big-s-off.res big-s-on.res
+       rm -f at-check-line debug-*.sh stderr stdout
+       rm -f input output big-s-off.res big-s-on.res
index f07b615b4459e3b78728d6c0fbfa7f33217870b9..697307bcb8d7d52d82d278fa7ad4b78d61f784e5 100644 (file)
@@ -78,9 +78,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 host_alias = @host_alias@
 host_triplet = @host@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_MOFILES = @ALL_MOFILES@
+ALL_POFILES = @ALL_POFILES@
 AS = @AS@
 AT_TESTPATH = @AT_TESTPATH@
-AWK = @AWK@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -99,16 +101,16 @@ INSTOBJEXT = @INSTOBJEXT@
 INTLDEPS = @INTLDEPS@
 INTLLIBS = @INTLLIBS@
 INTLOBJS = @INTLOBJS@
-LD = @LD@
 LEX = @LEX@
+LIBOBJS = @LIBOBJS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
 LTALLOCA = @LTALLOCA@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKINSTALLDIRS = @MKINSTALLDIRS@
+MOFILES = @MOFILES@
 MSGFMT = @MSGFMT@
-NM = @NM@
 OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 POFILES = @POFILES@
@@ -259,7 +261,8 @@ bigtest-strict:
        $(PERL) $(srcdir)/bigauto.pl big-s-on.res
 
 clean-local:
-       rm -f debug-*.sh big-s-off.res big-s-on.res
+       rm -f at-check-line debug-*.sh stderr stdout
+       rm -f input output big-s-off.res big-s-on.res
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 1ed3d74e3ba14c370644224fd9074b0c5be1370e..f728c02c558d5e88f380aef97f798e46eebc10c2 100644 (file)
@@ -27,12 +27,12 @@ EOF
 
 AT_CHECK(
 [cp transcript expout
-recode bambara/qp..t-bambara/64 < example
+recode ../,bambara/qp..t-bambara/64 < example
 ], 0, expout)
 
 AT_CHECK(
 [cp example expout
-recode t-bambara/64..bambara/qp < transcript
+recode ../,t-bambara/64..bambara/qp < transcript
 ], 0, expout)
 
 AT_CLEANUP(expout example transcript)
@@ -58,12 +58,12 @@ EOF
 
 AT_CHECK(
 [cp transcript expout
-recode fulfulde/qp..t-fulfulde/64 < example
+recode ../,fulfulde/qp..t-fulfulde/64 < example
 ], 0, expout)
 
 AT_CHECK(
 [cp example expout
-recode t-fulfulde/64..fulfulde/qp < transcript
+recode ../,t-fulfulde/64..fulfulde/qp < transcript
 ], 0, expout)
 
 AT_CLEANUP(expout example transcript)
@@ -97,12 +97,12 @@ EOF
 
 AT_CHECK(
 [cp transcript expout
-recode lingala/qp..t-lingala/64 < example
+recode ../,lingala/qp..t-lingala/64 < example
 ], 0, expout)
 
 AT_CHECK(
 [cp example expout
-recode t-lingala/64..lingala/qp < transcript
+recode ../,t-lingala/64..lingala/qp < transcript
 ], 0, expout)
 
 AT_CLEANUP(expout example transcript)
@@ -130,12 +130,12 @@ EOF
 
 AT_CHECK(
 [cp transcript expout
-recode sango/qp..t-sango/64 < example
+recode ../,sango/qp..t-sango/64 < example
 ], 0, expout)
 
 AT_CHECK(
 [cp example expout
-recode t-sango/64..sango/qp < transcript
+recode ../,t-sango/64..sango/qp < transcript
 ], 0, expout)
 
 AT_CLEANUP(expout example transcript)
@@ -158,12 +158,12 @@ EOF
 
 AT_CHECK(
 [cp transcript expout
-recode wolof/qp..t-wolof/64 < example
+recode ../,wolof/qp..t-wolof/64 < example
 ], 0, expout)
 
 AT_CHECK(
 [cp example expout
-recode t-wolof/64..wolof/qp < transcript
+recode ../,t-wolof/64..wolof/qp < transcript
 ], 0, expout)
 
 AT_CLEANUP(expout example transcript)
index 6c28843c5d114824dc745800b15dc88af540633d..b9323e6f09ed6cd0259f561f84a1a61ed12b4af3 100644 (file)
@@ -1,10 +1,53 @@
 # @configure_input@                                    -*- shell-script -*-
 # Configurable variable values for building test suites.
-# Copyright © 1998 Progiciels Bourbeau-Pinard inc.
+# Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc.
 # François Pinard <pinard@iro.umontreal.ca>, 1998.
 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# This script is part of Autotest.  I, François Pinard, the author of
+# Autotest, give unlimited permission to copy, distribute and modify
+# the testing scripts that are the output of that Autotest script.
+# You need not follow the terms of the GNU General Public License when
+# using or distributing such scripts, even though portions of the text
+# of Autotest appear in them.  The GNU General Public License (GPL) does
+# govern all other use of the material that constitutes the Autotest.
+#
+# Certain portions of the Autotest source text are designed to be copied
+# (in certain cases, depending on the input) into the output of
+# Autotest.  We call these the "data" portions.  The rest of the Autotest
+# source text consists of comments plus executable code that decides which
+# of the data portions to output in any given case.  We call these
+# comments and executable code the "non-data" portions.  Autotest never
+# copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of Autotest
+# released by the Free Software Foundation.  When you make and
+# distribute a modified version of Autotest, you may extend this special
+# exception to the GPL to apply to your modified version as well, *unless*
+# your modified version has the potential to copy into its output some
+# of the text that was the non-data portion of the version that you started
+# with.  (In other words, unless your change moves or copies text from
+# the non-data portions to the data portions.)  If your modification has
+# such potential, you must delete any notice of this special exception
+# to the GPL from your modified version.
+
 # Snippet (1
 # This debugging script has been automatically generated from `make check'.
+# Call it with `--help' to get a quick usage summary.
 
 at_package=@PACKAGE@
 at_version=@VERSION@
@@ -28,5 +71,9 @@ top_srcdir=@top_srcdir@
 # Use absolute file notations, as the test might change directories.
 at_srcdir=`cd @srcdir@ && pwd`
 at_top_srcdir=`cd @top_srcdir@ && pwd`
-export PATH; PATH=`pwd`:`cd @AT_TESTPATH@ && pwd`:$PATH
+if test -n "@AT_TESTPATH@"; then
+  export PATH; PATH=`pwd`:`cd @AT_TESTPATH@ && pwd`:$PATH
+else
+  export PATH; PATH=`pwd`:$PATH
+fi
 # Snippet )2
index 3955be2a7a426323c777b89fbab2bdfe8c548b75..74752fea76cd3ece79405d0ccea165c73ed26e4e 100644 (file)
@@ -1,8 +1,50 @@
-divert(-1)                                             -*- shell-script -*-
+divert(-1)                                             -*- Autoconf -*-
 # `m4' macros used in building test suites.
 # Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc.
 # François Pinard <pinard@iro.umontreal.ca>, 1998.
 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# This script is part of Autotest.  I, François Pinard, the author of
+# Autotest, give unlimited permission to copy, distribute and modify
+# the testing scripts that are the output of that Autotest script.
+# You need not follow the terms of the GNU General Public License when
+# using or distributing such scripts, even though portions of the text
+# of Autotest appear in them.  The GNU General Public License (GPL) does
+# govern all other use of the material that constitutes the Autotest.
+#
+# Certain portions of the Autotest source text are designed to be copied
+# (in certain cases, depending on the input) into the output of
+# Autotest.  We call these the "data" portions.  The rest of the Autotest
+# source text consists of comments plus executable code that decides which
+# of the data portions to output in any given case.  We call these
+# comments and executable code the "non-data" portions.  Autotest never
+# copies any of the non-data portions into its output.
+#
+# This special exception to the GPL applies to versions of Autotest
+# released by the Free Software Foundation.  When you make and
+# distribute a modified version of Autotest, you may extend this special
+# exception to the GPL to apply to your modified version as well, *unless*
+# your modified version has the potential to copy into its output some
+# of the text that was the non-data portion of the version that you started
+# with.  (In other words, unless your change moves or copies text from
+# the non-data portions to the data portions.)  If your modification has
+# such potential, you must delete any notice of this special exception
+# to the GPL from your modified version.
+
 changequote([, ])
 
 define(AT_DEFINE, defn([define]))
@@ -19,6 +61,38 @@ undefine([include])
 undefine([shift])
 undefine([undefine])
 
+# AT_CASE(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT)
+
+# m4 equivalent of
+# switch (SWITCH)
+# {
+#   case VAL1:
+#     IF-VAL1;
+#     break;
+#   case VAL2:
+#     IF-VAL2;
+#     break;
+#   ...
+#   default:
+#     DEFAULT;
+#     break;
+# }.
+# All the values are optional, and the macro is robust to active
+# symbols properly quoted.
+AT_DEFINE(AT_CASE,
+[ifelse([$#], 0, [],
+       [$#], 1, [],
+       [$#], 2, [$2],
+        [$1], [$2], [$3],
+        [AT_CASE([$1], AT_SHIFT(AT_SHIFT(AT_SHIFT($@))))])])
+
+
+# Use of diversions:
+#  0 - overall initialization; for each test group: skipping and cleanups;
+#  1 - for each test group: proper code, to reinsert between cleanups;
+#  2 - overall wrap up: generation of debugging scripts and statistics.
+
+
 # AT_LINE
 
 # Return the current file sans directory, a colon, and the current line.
@@ -26,11 +100,10 @@ undefine([undefine])
 AT_DEFINE(AT_LINE,
 [patsubst(__file__, ^.*/\(.*\), \1):__line__])
 
-# AT_INIT(PROGRAM, RELPATH)
+# AT_INIT(PROGRAM)
 
-# Begin testing suite, using PROGRAM to check version, and RELPATH as a
-# relative path (usually `../src') to find executable binaries to test.
-# RELPATH may be omitted; `.' is always added in front of the search path.
+# Begin testing suite, using PROGRAM to check version.  The search path
+# should be already preset so the proper executable will be selected.
 
 AT_DEFINE(AT_INIT,
 [AT_DEFINE(AT_ordinal, 0)
@@ -39,32 +112,38 @@ AT_DEFINE(AT_INIT,
 
 at_usage="Usage: [$]0 [OPTION]...
 
-  -e  Stop and inhibit normal clean up if a test of the full test suite fails
+  -e  Abort the full suite and inhibit normal clean up if a test fails
   -n  Do not redirect stdout and stderr and do not test their contents
-  -s  Inhibit verbosity in debugging scripts, at generation or at execution
+  -s  Inhibit verbosity while generating or executing debugging scripts
   -v  Force more detailed output, default for debugging scripts unless -s
-  -x  Have the shell to trace command execution; implies options -a"
+  -x  Have the shell to trace command execution; also implies option -n"
 
 while test [$][#] -gt 0; do
   case "[$]1" in
+    --help) echo "$at_usage"; exit 0 ;;
+    --version) echo "[$]0 ($at_package) $at_version"; exit 0 ;;
     -e) at_stop_on_error=1; shift ;;
     -n) at_no_redirs=1; shift ;;
     -s) at_verbose=; at_silent=1; shift ;;
     -v) at_verbose=1; at_silent=; shift ;;
-    -x) at_tracex=1; at_no_redirs=1; shift ;;
-    *) echo 1>&2 "$at_usage"; exit 1 ;;
+    -x) at_traceon='set -vx'; at_traceoff='set +vx'; at_no_redirs=1; shift ;;
+    *) echo 1>&2 "Try \`[$]0 --help' for more information."; exit 1 ;;
   esac
 done
 
 # In the testing suite, we only want to know if the test succeeded or failed.
 # But in debugging scripts, we want more information, so we prefer `diff -u'
-# to silent `cmp', even if it may happen that we compare binary files.
+# to the silent `cmp', even if it may happen that we compare binary files.
 # Option `-u' might be less portable, so either change it or use GNU `diff'.
 
 if test -n "$at_verbose"; then
   at_diff='diff -u'
 else
-  at_diff='cmp -s'
+  if test -n "$COMSPEC$ComSpec"; then
+    at_diff='diff -u'
+  else
+    at_diff='cmp -s'
+  fi
 fi
 
 # Each generated debugging script, containing a single test group, cleans
@@ -109,13 +188,24 @@ else
   for at_group in $at_failed_list; do
     echo $at_n " $at_group$at_c"
     ( echo '#!/bin/sh'
-      sed -n "/^[#] Snippet (1/,/^[#] Snippet )1/p" atconfig
+      sed -n '/^[#] Snippet (1/,/^[#] Snippet )1/p' atconfig
       test -z "$at_silent" && echo 'at_verbose=1'
-      sed -n "/^[#] Snippet (2/,/^[#] Snippet )2/p" atconfig
+      sed -n '/^[#] Snippet (2/,/^[#] Snippet )2/p' atconfig
       sed -n "/^[#] Snippet (3/,/^[#] Snippet )3/p" [$]0
       sed -n "/^[#] Snippet (c$at_group(/,/^[#] Snippet )c$at_group)/p" [$]0
-      echo 'test -n "$at_verbose" \
-        && echo "[$]0:1: =================================================="'
+      at_desc="`sed -n \
+        '/^[#] Snippet (d'$at_group'(/,/^[#] Snippet )d'$at_group')/p' [$]0 \
+        | sed -n '2s/^[#] //p'`"
+      echo 'if test -n "$at_verbose"; then'
+      echo '  at_banner="[$]0: '$at_desc'"'
+      echo '  at_dashes=`echo $at_banner | sed s/./=/g`'
+      echo '  echo'
+      echo '  echo "$at_dashes"'
+      echo '  echo "$at_banner"'
+      echo '  echo "$at_dashes"'
+      echo 'fi'
+      echo
+      sed -n "/^[#] Snippet (d$at_group(/,/^[#] Snippet )d$at_group)/p" [$]0
       sed -n "/^[#] Snippet (s$at_group(/,/^[#] Snippet )s$at_group)/p" [$]0
       echo 'exit 0'
     ) | grep -v '^[#] Snippet' > debug-$at_group.sh
@@ -124,7 +214,7 @@ else
   done
   echo ', done'
   if test -n "$at_stop_on_error"; then
-    at_banner="ERROR: One of the tests failed, inhibiting subsequent tests"
+    at_banner='ERROR: One of the tests failed, inhibiting subsequent tests'
   else
     at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed"
   fi
@@ -138,8 +228,13 @@ echo "$at_dashes"
 if test -n "$at_failed_list"; then
   if test -z "$at_silent"; then
     echo
-    echo "Now, failed tests will be executed again, with more details..."
-    echo
+    echo 'When reporting failed tests to maintainers, do not merely list test'
+    echo 'numbers, as the numbering changes between releases and pretests.'
+    echo 'Be careful to give at least all the information you got about them.'
+    echo 'You may investigate any problem if you feel able to do so, in which'
+    echo 'case the generated debugging scripts provide good starting points.'
+    echo "Go on and modify them at will.  \`./debug-NN --help' gives usage"
+    echo 'information.  Now, failed tests will be executed again, verbosely.'
     for at_group in $at_failed_list; do
       ./debug-$at_group.sh
     done
@@ -170,13 +265,17 @@ divert(1)[]dnl
     echo $at_n "     $at_c"
   fi
   echo $at_n "substr(AT_ordinal. $srcdir/AT_LINE                            , 0, 30)[]$at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+[#] Snippet (d[]AT_ordinal[](
+[#] Testing AT_group_description
+[#] Snippet )d[]AT_ordinal[])
 [#] Snippet (s[]AT_ordinal[](
-
-[#] The test group starts at `AT_LINE'.  An error occurred while
-[#] testing AT_group_description.
+[#] starting from `AT_LINE'.
+$at_traceon
 ])
 
+
 # AT_CLEANUP(FILES)
 
 # Complete a group of related tests, recursively remove those FILES
@@ -184,18 +283,23 @@ divert(1)[]dnl
 # nor files created with AT_DATA.
 
 AT_DEFINE(AT_CLEANUP,
+$at_traceoff
 [[#] Snippet )s[]AT_ordinal[])
-  )
-  case [$]? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list AT_ordinal"
-       ;;
-  esac
+    )
+    case [$]? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list AT_ordinal"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=AT_ordinal
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
 divert(0)[]dnl
@@ -212,10 +316,13 @@ popdef([AT_data_expout])
 popdef([AT_data_files])
 popdef([AT_group_description])])
 
+
 # AT_DATA(FILE, CONTENTS)
 
 # Initialize an input data FILE with given CONTENTS, which should end with
 # an end of line.
+# This macro is not robust to active symbols in CONTENTS *on purpose*.
+# If you don't want CONTENT to be evaluated, quote it twice.
 
 AT_DEFINE(AT_DATA,
 [AT_DEFINE([AT_data_files], AT_data_files[ ]$1)
@@ -223,39 +330,53 @@ cat > $1 <<'EOF'
 $2[]EOF
 ])
 
-# AT_CHECK(COMMANDS, STATUS, STDOUT, STDERR)
+
+# AT_CHECK(COMMANDS, [STATUS], STDOUT, STDERR)
 
 # Execute a test by performing given shell COMMANDS.  These commands
 # should normally exit with STATUS, while producing expected STDOUT and
 # STDERR contents.  The special word `expout' for STDOUT means that file
 # `expout' contents has been set to the expected stdout.  The special word
 # `experr' for STDERR means that file `experr' contents has been set to
-# the expected stderr.  STATUS is not checked if it is empty.
+# the expected stderr.
+# STATUS is not checked if it is empty.
+# STDOUT and STDERR can be the special value `ignore', in which case
+# their content is not checked.
 
 AT_DEFINE(AT_CHECK,
-[test -n "$at_verbose" \
-  && echo $srcdir'/AT_LINE: Testing AT_group_description'
+[$at_traceoff
+test -n "$at_verbose" \
+  && echo "$srcdir/AT_LINE: testing..."
 echo AT_LINE > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 $1
-ifelse([$2], , , [test $? = $2 || exit 1])
-test -n "$at_tracex" && set +x
+ifelse([$2],,,
+[at_status=$?
+if test $at_status != $2; then
+dnl Maybe there was an important message to read before it died.
+  test -n "$at_verbose" && cat stderr >&6
+dnl Exit with the same code, at least to preserve 77.
+  exit $at_status
+fi
+])dnl
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  ifelse([$3], , [test ! -s stdout || exit 1
-], [$3], expout, [AT_DEFINE([AT_data_expout], [ expout])dnl
-$at_diff expout stdout || exit 1
-], [changequote({{, }})dnl
-echo $at_n "patsubst({{$3}}, \([\"`$]\), \\\1)$at_c" | $at_diff - stdout || exit 1
-changequote([, ])])dnl
-  ifelse([$4], , [test ! -s stderr || exit 1
-], [$4], experr, [AT_DEFINE([AT_data_experr], [ experr])dnl
-$at_diff experr stderr || exit 1
-], [changequote({{, }})dnl
-echo $at_n "patsubst({{$4}}, \([\"`$]\), \\\1)$at_c" | $at_diff - stderr || exit 1
-changequote([, ])])dnl
+  AT_CASE([$3],
+          ignore, [test -n "$at_verbose" && cat stdout;:],
+          expout, [AT_DEFINE([AT_data_expout], [ expout])dnl
+$at_diff expout stdout || exit 1],
+          [], [$at_diff /dev/null stdout || exit 1],
+          [echo $at_n "patsubst([$3], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stdout || exit 1])
+  AT_CASE([$4],
+          ignore, [test -n "$at_verbose" && cat stderr;:],
+          experr, [AT_DEFINE([AT_data_experr], [ experr])dnl
+$at_diff experr stderr || exit 1],
+          [], [$at_diff /dev/null stderr || exit 1],
+          [echo $at_n "patsubst([$4], [\([\"`$]\)], \\\1)$at_c" | $at_diff - stderr || exit 1])
 fi
+$at_traceon
 ])
 
-divert[]dnl
+divert(0)dnl
index f07975126e997896094a22b9e00762ae57a450a4..62f4cb6232e88d5324e32ce9487014c21ab0d171 100644 (file)
@@ -27,7 +27,7 @@ AT_SETUP(block of lines to Base64)
 dnl      ------------------------
 
 AT_CHECK(
-[recode ../64 < $at_srcdir/dumps-data
+[recode /../64 < $at_srcdir/dumps-data
 ], 0,
 [CmEKYWIKYWJjCmFiY2QKYWJjZGVmZ2hpCmFiY2RlZmdoaWprbG1ub3BxcnMKYWJjZGVmZ2hpamts
 bW5vcHFyc3R1dnd6eXpBQkMKYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xN
@@ -45,8 +45,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../64 output
-  recode /64 output
+  recode /../64 output
+  recode /64../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -61,8 +61,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../64 output
-recode /64 output
+recode /../64 output
+recode /64../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
index 178acc5ad6fd936d1047c7782773999e1cc9f312..00bfc939421f1922d5aa92b0e5055303ab00edce 100755 (executable)
@@ -2,9 +2,13 @@
 # Let recode do its huge autoconsistency check.
 
 echo 1>&2 '==============================================='
-echo 1>&2 'The "bigauto" test may take hours.  Be patient.'
+echo 1>&2 "The \`bigauto' test may take hours.  Be patient."
 echo 1>&2 '==============================================='
 
+export LANGUAGE; LANGUAGE=C
+export LANG; LANG=C
+export LC_ALL; LC_ALL=C
+
 recode -l | sed 's/ .*//' | egrep -v '^(/|flat)' > namelist
 
 while read before; do
index 06de3e1e48b9599093885548ef33595690178cc3..c735d66fd0c900382d732e6ea775858026ef1925 100644 (file)
@@ -36,7 +36,7 @@ AT_SETUP(block of lines to Decimal-1)
 dnl      ---------------------------
 
 AT_CHECK(
-[recode ../d1 < $at_srcdir/dumps-data
+[recode /../d1 < $at_srcdir/dumps-data
 ], 0,
 [ 10,  97,  10,  97,  98,  10,  97,  98,  99,  10,  97,  98,  99, 100,  10,
  97,  98,  99, 100, 101, 102, 103, 104, 105,  10,  97,  98,  99, 100, 101,
@@ -65,8 +65,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../d1 output
-  recode /d1 output
+  recode /../d1 output
+  recode /d1../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -81,8 +81,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../d1 output
-recode /d1 output
+recode /../d1 output
+recode /d1../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -121,7 +121,7 @@ AT_SETUP(block of lines to Decimal-2)
 dnl      ---------------------------
 
 AT_CHECK(
-[recode ../d2 < $at_srcdir/dumps-data
+[recode /../d2 < $at_srcdir/dumps-data
 ], 0,
 [ 2657,  2657, 25098, 24930, 25354, 24930, 25444,  2657, 25187, 25701,
 26215, 26729,  2657, 25187, 25701, 26215, 26729, 27243, 27757, 28271,
@@ -147,8 +147,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../d2 output
-  recode /d2 output
+  recode /../d2 output
+  recode /d2../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -163,8 +163,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../d2 output
-recode /d2 output
+recode /../d2 output
+recode /d2../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -203,7 +203,7 @@ AT_SETUP(block of lines to Decimal-4)
 dnl      ---------------------------
 
 AT_CHECK(
-[recode ../d4 < $at_srcdir/dumps-data
+[recode /../d4 < $at_srcdir/dumps-data
 ], 0,
 [ 174131809, 1644847458, 1661624674, 1667500641, 1650680933,
 1718052969,  174154339, 1684366951, 1751738987, 1819111023,
@@ -229,8 +229,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../d4 output
-  recode /d4 output
+  recode /../d4 output
+  recode /d4../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -245,8 +245,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../d4 output
-recode /d4 output
+recode /../d4 output
+recode /d4../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -293,7 +293,7 @@ AT_SETUP(block of lines to Hexadecimal-1)
 dnl      -------------------------------
 
 AT_CHECK(
-[recode ../x1 < $at_srcdir/dumps-data
+[recode /../x1 < $at_srcdir/dumps-data
 ], 0,
 [0x0A, 0x61, 0x0A, 0x61, 0x62, 0x0A, 0x61, 0x62, 0x63, 0x0A, 0x61, 0x62,
 0x63, 0x64, 0x0A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
@@ -326,8 +326,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../x1 output
-  recode /x1 output
+  recode /../x1 output
+  recode /x1../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -342,8 +342,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../x1 output
-recode /x1 output
+recode /../x1 output
+recode /x1../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -386,7 +386,7 @@ AT_SETUP(block of lines to Hexadecimal-2)
 dnl      -------------------------------
 
 AT_CHECK(
-[recode ../x2 < $at_srcdir/dumps-data
+[recode /../x2 < $at_srcdir/dumps-data
 ], 0,
 [0x0A61, 0x0A61, 0x620A, 0x6162, 0x630A, 0x6162, 0x6364, 0x0A61,
 0x6263, 0x6465, 0x6667, 0x6869, 0x0A61, 0x6263, 0x6465, 0x6667,
@@ -415,8 +415,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../x2 output
-  recode /x2 output
+  recode /../x2 output
+  recode /x2../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -431,8 +431,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../x2 output
-recode /x2 output
+recode /../x2 output
+recode /x2../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -471,7 +471,7 @@ AT_SETUP(block of lines to Hexadecimal-4)
 dnl      -------------------------------
 
 AT_CHECK(
-[recode ../x4 < $at_srcdir/dumps-data
+[recode /../x4 < $at_srcdir/dumps-data
 ], 0,
 [0x0A610A61, 0x620A6162, 0x630A6162, 0x63640A61, 0x62636465, 0x66676869,
 0x0A616263, 0x64656667, 0x68696A6B, 0x6C6D6E6F, 0x70717273, 0x0A616263,
@@ -495,8 +495,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../x4 output
-  recode /x4 output
+  recode /../x4 output
+  recode /x4../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -511,8 +511,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../x4 output
-recode /x4 output
+recode /../x4 output
+recode /x4../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -559,7 +559,7 @@ AT_SETUP(block of lines to Octal-1)
 dnl      -------------------------
 
 AT_CHECK(
-[recode ../o1 < $at_srcdir/dumps-data
+[recode /../o1 < $at_srcdir/dumps-data
 ], 0,
 [0012, 0141, 0012, 0141, 0142, 0012, 0141, 0142, 0143, 0012, 0141, 0142,
 0143, 0144, 0012, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 0150, 0151,
@@ -592,8 +592,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../o1 output
-  recode /o1 output
+  recode /../o1 output
+  recode /o1../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -608,8 +608,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../o1 output
-recode /o1 output
+recode /../o1 output
+recode /o1../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -652,7 +652,7 @@ AT_SETUP(block of lines to Octal-2)
 dnl      -------------------------
 
 AT_CHECK(
-[recode ../o2 < $at_srcdir/dumps-data
+[recode /../o2 < $at_srcdir/dumps-data
 ], 0,
 [0005141, 0005141, 0061012, 0060542, 0061412, 0060542, 0061544, 0005141,
 0061143, 0062145, 0063147, 0064151, 0005141, 0061143, 0062145, 0063147,
@@ -681,8 +681,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../o2 output
-  recode /o2 output
+  recode /../o2 output
+  recode /o2../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -697,8 +697,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../o2 output
-recode /o2 output
+recode /../o2 output
+recode /o2../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
@@ -741,7 +741,7 @@ AT_SETUP(block of lines to Octal-4)
 dnl      -------------------------
 
 AT_CHECK(
-[recode ../o4 < $at_srcdir/dumps-data
+[recode /../o4 < $at_srcdir/dumps-data
 ], 0,
 [001230205141, 014202460542, 014302460542, 014331005141,
 014230662145, 014631664151, 001230261143, 014431263147,
@@ -770,8 +770,8 @@ AT_CHECK(
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../o4 output
-  recode /o4 output
+  recode /../o4 output
+  recode /o4../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
@@ -786,8 +786,8 @@ AT_CHECK(
 [set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../o4 output
-recode /o4 output
+recode /../o4 output
+recode /o4../ output
 diff $at_srcdir/dumps-data output
 set +e
 ])
index 3da8d91844047fbb9a5d7272a99bd93a0c0b47cd..74dd48c542c19fd6612114edba65bd95f52e83ee 100644 (file)
@@ -214,11 +214,16 @@ sami iso-ir-158 lap latin-lap
 SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127
 SEN_850200_C ISO646-SE2 iso-ir-11 se2
 T.61-7bit iso-ir-102
+TCVN
 Texinfo texi ti
 Texte txte
 UNICODE-1-1-UTF-7 TF-7 u7 UTF-7
 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS
 UTF-16 TF-16 u6 Unicode
+VIQR
+VISCII
+VNI
+VPS
 EOF
 
 AT_CHECK(recode -l, 0, expout)
@@ -627,11 +632,13 @@ cat >expout <<'EOF'
 [158] ISO_646.basic < DEC-MCS
 [164] ISO_646.basic < IBM1004
 [164] ISO_646.basic < IBM869
+[164] ISO_646.basic < VPS
 [166] ISO_646.basic < CP1254
 [166] ISO_646.basic < ISO-8859-3
 [166] ISO_646.basic < NeXTSTEP
 [167] ISO_646.basic < ISO-8859-7
 [167] ISO_646.basic < ISO_8859-supp
+[167] ISO_646.basic < TCVN
 [168] ISO_646.basic < CP1250
 [168] ISO_646.basic < CP1252
 [168] ISO_646.basic < IBM864
@@ -668,6 +675,7 @@ cat >expout <<'EOF'
 [173] ISO_646.basic < ISO-8859-9
 [173] ISO_646.basic < KOI8-R
 [173] ISO_646.basic < KOI8-RU
+[173] ISO_646.basic < VISCII
 [173] ISO_646.basic < baltic
 [173] ISO_646.basic < macintosh_ce
 EOF
index 61d48ac4c1720e84257bd8cb84f977359e2030b2..9cdf4257c77639c7dfd0303f6c7cd43194f676dc 100644 (file)
@@ -1,4 +1,5 @@
 #!/bin/sh
+#                                                      -*- coding: latin-1 -*-
 # Validation suite for the Free `recode' program and library.
 # Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc.
 # François Pinard <pinard@iro.umontreal.ca>, 1998.
@@ -38,7 +39,7 @@ echo
 echo 'Individual charsets.'
 echo
 
-# FIXME: tests for atarist, next, ebcdic, tables, applemac, ibmpc iconqnx,
+# FIXME: tests for atarist, next, ebcdic, tables, applemac, ibmpc, iconqnx,
 # cdcnos, bangbang, ascii, flat, html, latex, texinfo, texte and utf16.
 
 AT_INCLUDE(african.m4)
index ce5ddc795563eac54c19cf7f4d4dc72318965eae..b3bc9e03a3617a8de52dac9a87701c255938ab85 100644 (file)
@@ -1,4 +1,5 @@
 #!/bin/sh
+#                                                      -*- coding: latin-1 -*-
 # Validation suite for the Free `recode' program and library.
 # Copyright © 1998, 1999 Progiciels Bourbeau-Pinard inc.
 # François Pinard <pinard@iro.umontreal.ca>, 1998.
 
 at_usage="Usage: $0 OPTION...
 
-  -e  Stop and inhibit normal clean up if a test of the full test suite fails
+  -e  Abort the full suite and inhibit normal clean up if a test fails
   -n  Do not redirect stdout and stderr and do not test their contents
-  -s  Inhibit verbosity in debugging scripts, at generation or at execution
+  -s  Inhibit verbosity while generating or executing debugging scripts
   -v  Force more detailed output, default for debugging scripts unless -s
-  -x  Have the shell to trace command execution; implies options -a"
+  -x  Have the shell to trace command execution; also implies option -n"
 
 while test $# -gt 0; do
   case "$1" in
+    --help) echo "$at_usage"; exit 0 ;;
+    --version) echo "$0 ($at_package) $at_version"; exit 0 ;;
     -e) at_stop_on_error=1; shift ;;
     -n) at_no_redirs=1; shift ;;
     -s) at_verbose=; at_silent=1; shift ;;
     -v) at_verbose=1; at_silent=; shift ;;
-    -x) at_tracex=1; at_no_redirs=1; shift ;;
-    *) echo 1>&2 "$at_usage"; exit 1 ;;
+    -x) at_traceon='set -vx'; at_traceoff='set +vx'; at_no_redirs=1; shift ;;
+    *) echo 1>&2 "Try \`$0 --help' for more information."; exit 1 ;;
   esac
 done
 
 # In the testing suite, we only want to know if the test succeeded or failed.
 # But in debugging scripts, we want more information, so we prefer `diff -u'
-# to silent `cmp', even if it may happen that we compare binary files.
+# to the silent `cmp', even if it may happen that we compare binary files.
 # Option `-u' might be less portable, so either change it or use GNU `diff'.
 
 if test -n "$at_verbose"; then
   at_diff='diff -u'
 else
-  at_diff='cmp -s'
+  if test -n "$COMSPEC$ComSpec"; then
+    at_diff='diff -u'
+  else
+    at_diff='cmp -s'
+  fi
 fi
 
 # Each generated debugging script, containing a single test group, cleans
@@ -90,11 +97,14 @@ rm -rf stdout stderr expout
     echo $at_n "     $at_c"
   fi
   echo $at_n "1. $srcdir/names.m4:3         $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d1(
+# Testing list of charsets and surfaces
+# Snippet )d1)
 # Snippet (s1(
-
-# The test group starts at `names.m4:3'.  An error occurred while
-# testing list of charsets and surfaces.
+# starting from `names.m4:3'.
+$at_traceon
 
 cat >expout <<'EOF'
 /21-Permutation swabytes
@@ -307,39 +317,55 @@ sami iso-ir-158 lap latin-lap
 SEN_850200_B FI ISO646-FI ISO646-SE iso-ir-10 se SS636127
 SEN_850200_C ISO646-SE2 iso-ir-11 se2
 T.61-7bit iso-ir-102
+TCVN
 Texinfo texi ti
 Texte txte
 UNICODE-1-1-UTF-7 TF-7 u7 UTF-7
 UTF-8 FSS_UTF TF-8 u8 UTF-2 UTF-FSS
 UTF-16 TF-16 u6 Unicode
+VIQR
+VISCII
+VNI
+VPS
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/names.m4:224: Testing list of charsets and surfaces'
-echo names.m4:224 > at-check-line
+  && echo "$srcdir/names.m4:229: testing..."
+echo names.m4:229 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode -l
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s1)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 1"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 1"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=1
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr expout
@@ -351,17 +377,20 @@ if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
 
 rm -rf stdout stderr expout
 # Snippet )c2)
-  echo names.m4:228 > at-check-line
+  echo names.m4:233 > at-check-line
   if test -n "$at_verbose"; then
     echo 'testing the --find-subsets option'
     echo $at_n "     $at_c"
   fi
-  echo $at_n "2. $srcdir/names.m4:228       $at_c"
-  (
+  echo $at_n "2. $srcdir/names.m4:233       $at_c"
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d2(
+# Testing the --find-subsets option
+# Snippet )d2)
 # Snippet (s2(
-
-# The test group starts at `names.m4:228'.  An error occurred while
-# testing the --find-subsets option.
+# starting from `names.m4:233'.
+$at_traceon
 
 cat >expout <<'EOF'
 [  0] ANSI_X3.4-1968 == IBM891
@@ -761,11 +790,13 @@ cat >expout <<'EOF'
 [158] ISO_646.basic < DEC-MCS
 [164] ISO_646.basic < IBM1004
 [164] ISO_646.basic < IBM869
+[164] ISO_646.basic < VPS
 [166] ISO_646.basic < CP1254
 [166] ISO_646.basic < ISO-8859-3
 [166] ISO_646.basic < NeXTSTEP
 [167] ISO_646.basic < ISO-8859-7
 [167] ISO_646.basic < ISO_8859-supp
+[167] ISO_646.basic < TCVN
 [168] ISO_646.basic < CP1250
 [168] ISO_646.basic < CP1252
 [168] ISO_646.basic < IBM864
@@ -802,36 +833,48 @@ cat >expout <<'EOF'
 [173] ISO_646.basic < ISO-8859-9
 [173] ISO_646.basic < KOI8-R
 [173] ISO_646.basic < KOI8-RU
+[173] ISO_646.basic < VISCII
 [173] ISO_646.basic < baltic
 [173] ISO_646.basic < macintosh_ce
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/names.m4:676: Testing the --find-subsets option'
-echo names.m4:676 > at-check-line
+  && echo "$srcdir/names.m4:684: testing..."
+echo names.m4:684 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode -T | sort
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s2)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 2"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 2"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=2
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr expout
@@ -851,11 +894,14 @@ rm -rf expect stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "3. $srcdir/lists.m4:3         $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d3(
+# Testing decimal listing of a charset
+# Snippet )d3)
 # Snippet (s3(
-
-# The test group starts at `lists.m4:3'.  An error occurred while
-# testing decimal listing of a charset.
+# starting from `lists.m4:3'.
+$at_traceon
 
 cat > expect <<'EOF'
 ISO-8859-1
@@ -895,32 +941,43 @@ ISO-8859-1
 143 S3   159 AC   175 'm   191 ?I   207 I:   223 ss   239 i:   255 y:
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/lists.m4:44: Testing decimal listing of a charset'
+  && echo "$srcdir/lists.m4:44: testing..."
 echo lists.m4:44 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode -ld latin-1 | cmp -s - expect
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s3)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 3"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 3"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=3
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expect stdout stderr
@@ -938,11 +995,14 @@ rm -rf expect stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "4. $srcdir/lists.m4:48        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d4(
+# Testing hexadecimal listing of a charset
+# Snippet )d4)
 # Snippet (s4(
-
-# The test group starts at `lists.m4:48'.  An error occurred while
-# testing hexadecimal listing of a charset.
+# starting from `lists.m4:48'.
+$at_traceon
 
 cat > expect <<'EOF'
 ISO-8859-1
@@ -982,32 +1042,43 @@ ISO-8859-1
 8f S3   9f AC   af 'm   bf ?I   cf I:   df ss   ef i:   ff y:
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/lists.m4:89: Testing hexadecimal listing of a charset'
+  && echo "$srcdir/lists.m4:89: testing..."
 echo lists.m4:89 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode -lh latin-1 | cmp -s - expect
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s4)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 4"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 4"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=4
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expect stdout stderr
@@ -1025,11 +1096,14 @@ rm -rf expect stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "5. $srcdir/lists.m4:93        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d5(
+# Testing octal listing of a charset
+# Snippet )d5)
 # Snippet (s5(
-
-# The test group starts at `lists.m4:93'.  An error occurred while
-# testing octal listing of a charset.
+# starting from `lists.m4:93'.
+$at_traceon
 
 cat > expect <<'EOF'
 ISO-8859-1
@@ -1069,32 +1143,43 @@ ISO-8859-1
 217 S3   237 AC   257 'm   277 ?I   317 I:   337 ss   357 i:   377 y:
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/lists.m4:134: Testing octal listing of a charset'
+  && echo "$srcdir/lists.m4:134: testing..."
 echo lists.m4:134 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode -lo latin-1 | cmp -s - expect
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s5)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 5"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 5"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=5
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expect stdout stderr
@@ -1112,11 +1197,14 @@ rm -rf expect stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "6. $srcdir/lists.m4:138       $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d6(
+# Testing full listing of a charset
+# Snippet )d6)
 # Snippet (s6(
-
-# The test group starts at `lists.m4:138'.  An error occurred while
-# testing full listing of a charset.
+# starting from `lists.m4:138'.
+$at_traceon
 
 cat > expect <<'EOF'
 Dec  Oct Hex   UCS2  Mne  ISO-8859-1
@@ -1379,32 +1467,43 @@ Dec  Oct Hex   UCS2  Mne  ISO-8859-1
 255  377  ff   00FF  y:   latin small letter y with diaeresis
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/lists.m4:402: Testing full listing of a charset'
+  && echo "$srcdir/lists.m4:402: testing..."
 echo lists.m4:402 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode -lf latin-1 | cmp -s - expect
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s6)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 6"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 6"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=6
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expect stdout stderr
@@ -1430,22 +1529,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "7. $srcdir/dumps.m4:3         $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d7(
+# Testing single lines to Decimal-1
+# Snippet )d7)
 # Snippet (s7(
+# starting from `dumps.m4:3'.
+$at_traceon
 
-# The test group starts at `dumps.m4:3'.  An error occurred while
-# testing single lines to Decimal-1.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:31: Testing single lines to Decimal-1'
+  && echo "$srcdir/dumps.m4:31: testing..."
 echo dumps.m4:31 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../d1 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 10
@@ -1470,21 +1577,27 @@ if test -z "$at_no_redirs"; then
  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,  83,
  84,  85,  86,  87,  88,  89,  90,  48,  49,  50,  51,  52,  53,  54,  10
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s7)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 7"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 7"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=7
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1502,21 +1615,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "8. $srcdir/dumps.m4:35        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d8(
+# Testing block of lines to Decimal-1
+# Snippet )d8)
 # Snippet (s8(
+# starting from `dumps.m4:35'.
+$at_traceon
 
-# The test group starts at `dumps.m4:35'.  An error occurred while
-# testing block of lines to Decimal-1.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:56: Testing block of lines to Decimal-1'
+  && echo "$srcdir/dumps.m4:56: testing..."
 echo dumps.m4:56 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../d1 < $at_srcdir/dumps-data
+$at_traceon
+recode /../d1 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 10,  97,  10,  97,  98,  10,  97,  98,  99,  10,  97,  98,  99, 100,  10,
@@ -1535,21 +1656,27 @@ if test -z "$at_no_redirs"; then
  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,  82,  83,
  84,  85,  86,  87,  88,  89,  90,  48,  49,  50,  51,  52,  53,  54,  10
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s8)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 8"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 8"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=8
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1567,46 +1694,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "9. $srcdir/dumps.m4:60        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d9(
+# Testing single lines to Decimal-1 and back
+# Snippet )d9)
 # Snippet (s9(
+# starting from `dumps.m4:60'.
+$at_traceon
 
-# The test group starts at `dumps.m4:60'.  An error occurred while
-# testing single lines to Decimal-1 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:73: Testing single lines to Decimal-1 and back'
+  && echo "$srcdir/dumps.m4:73: testing..."
 echo dumps.m4:73 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../d1 output
-  recode /d1 output
+  recode /../d1 output
+  recode /d1../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s9)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 9"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 9"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=9
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1624,44 +1761,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "10. $srcdir/dumps.m4:77       $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d10(
+# Testing block of lines to Decimal-1 and back
+# Snippet )d10)
 # Snippet (s10(
+# starting from `dumps.m4:77'.
+$at_traceon
 
-# The test group starts at `dumps.m4:77'.  An error occurred while
-# testing block of lines to Decimal-1 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:88: Testing block of lines to Decimal-1 and back'
+  && echo "$srcdir/dumps.m4:88: testing..."
 echo dumps.m4:88 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../d1 output
-recode /d1 output
+recode /../d1 output
+recode /d1../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s10)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 10"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 10"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=10
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -1679,22 +1826,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "11. $srcdir/dumps.m4:92       $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d11(
+# Testing single lines to Decimal-2
+# Snippet )d11)
 # Snippet (s11(
+# starting from `dumps.m4:92'.
+$at_traceon
 
-# The test group starts at `dumps.m4:92'.  An error occurred while
-# testing single lines to Decimal-2.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:116: Testing single lines to Decimal-2'
+  && echo "$srcdir/dumps.m4:116: testing..."
 echo dumps.m4:116 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../d2 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 10
@@ -1715,21 +1870,27 @@ if test -z "$at_no_redirs"; then
 30070, 30586, 31098, 16706, 17220, 17734, 18248, 18762, 19276, 19790,
 20304, 20818, 21332, 21846, 22360, 22874, 12337, 12851, 13365, 13834
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s11)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 11"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 11"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=11
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1747,21 +1908,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "12. $srcdir/dumps.m4:120      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d12(
+# Testing block of lines to Decimal-2
+# Snippet )d12)
 # Snippet (s12(
+# starting from `dumps.m4:120'.
+$at_traceon
 
-# The test group starts at `dumps.m4:120'.  An error occurred while
-# testing block of lines to Decimal-2.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:138: Testing block of lines to Decimal-2'
+  && echo "$srcdir/dumps.m4:138: testing..."
 echo dumps.m4:138 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../d2 < $at_srcdir/dumps-data
+$at_traceon
+recode /../d2 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 2657,  2657, 25098, 24930, 25354, 24930, 25444,  2657, 25187, 25701,
@@ -1777,21 +1946,27 @@ if test -z "$at_no_redirs"; then
 19019, 19533, 20047, 20561, 21075, 21589, 22103, 22617, 23088, 12594,
 13108, 13622,  10
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s12)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 12"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 12"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=12
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1809,46 +1984,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "13. $srcdir/dumps.m4:142      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d13(
+# Testing single lines to Decimal-2 and back
+# Snippet )d13)
 # Snippet (s13(
+# starting from `dumps.m4:142'.
+$at_traceon
 
-# The test group starts at `dumps.m4:142'.  An error occurred while
-# testing single lines to Decimal-2 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:155: Testing single lines to Decimal-2 and back'
+  && echo "$srcdir/dumps.m4:155: testing..."
 echo dumps.m4:155 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../d2 output
-  recode /d2 output
+  recode /../d2 output
+  recode /d2../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s13)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 13"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 13"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=13
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1866,44 +2051,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "14. $srcdir/dumps.m4:159      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d14(
+# Testing block of lines to Decimal-2 and back
+# Snippet )d14)
 # Snippet (s14(
+# starting from `dumps.m4:159'.
+$at_traceon
 
-# The test group starts at `dumps.m4:159'.  An error occurred while
-# testing block of lines to Decimal-2 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:170: Testing block of lines to Decimal-2 and back'
+  && echo "$srcdir/dumps.m4:170: testing..."
 echo dumps.m4:170 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../d2 output
-recode /d2 output
+recode /../d2 output
+recode /d2../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s14)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 14"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 14"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=14
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -1921,22 +2116,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "15. $srcdir/dumps.m4:174      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d15(
+# Testing single lines to Decimal-4
+# Snippet )d15)
 # Snippet (s15(
+# starting from `dumps.m4:174'.
+$at_traceon
 
-# The test group starts at `dumps.m4:174'.  An error occurred while
-# testing single lines to Decimal-4.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:198: Testing single lines to Decimal-4'
+  && echo "$srcdir/dumps.m4:198: testing..."
 echo dumps.m4:198 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../d4 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 10
@@ -1957,21 +2160,27 @@ if test -z "$at_no_redirs"; then
 1970698106, 2038055234, 1128547654, 1195919690, 1263291726,
 1330663762, 1398035798, 1465407834,  808530483,  875902474
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s15)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 15"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 15"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=15
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -1989,21 +2198,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "16. $srcdir/dumps.m4:202      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d16(
+# Testing block of lines to Decimal-4
+# Snippet )d16)
 # Snippet (s16(
+# starting from `dumps.m4:202'.
+$at_traceon
 
-# The test group starts at `dumps.m4:202'.  An error occurred while
-# testing block of lines to Decimal-4.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:220: Testing block of lines to Decimal-4'
+  && echo "$srcdir/dumps.m4:220: testing..."
 echo dumps.m4:220 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../d4 < $at_srcdir/dumps-data
+$at_traceon
+recode /../d4 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 174131809, 1644847458, 1661624674, 1667500641, 1650680933,
@@ -2019,21 +2236,27 @@ if test -z "$at_no_redirs"; then
 1246448717, 1313820753, 1381192789, 1448564825, 1513107762,
  859059510,  10
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s16)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 16"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 16"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=16
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2051,46 +2274,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "17. $srcdir/dumps.m4:224      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d17(
+# Testing single lines to Decimal-4 and back
+# Snippet )d17)
 # Snippet (s17(
+# starting from `dumps.m4:224'.
+$at_traceon
 
-# The test group starts at `dumps.m4:224'.  An error occurred while
-# testing single lines to Decimal-4 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:237: Testing single lines to Decimal-4 and back'
+  && echo "$srcdir/dumps.m4:237: testing..."
 echo dumps.m4:237 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../d4 output
-  recode /d4 output
+  recode /../d4 output
+  recode /d4../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s17)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 17"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 17"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=17
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2108,44 +2341,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "18. $srcdir/dumps.m4:241      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d18(
+# Testing block of lines to Decimal-4 and back
+# Snippet )d18)
 # Snippet (s18(
+# starting from `dumps.m4:241'.
+$at_traceon
 
-# The test group starts at `dumps.m4:241'.  An error occurred while
-# testing block of lines to Decimal-4 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:252: Testing block of lines to Decimal-4 and back'
+  && echo "$srcdir/dumps.m4:252: testing..."
 echo dumps.m4:252 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../d4 output
-recode /d4 output
+recode /../d4 output
+recode /d4../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s18)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 18"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 18"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=18
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -2163,22 +2406,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "19. $srcdir/dumps.m4:256      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d19(
+# Testing single lines to Hexadecimal-1
+# Snippet )d19)
 # Snippet (s19(
+# starting from `dumps.m4:256'.
+$at_traceon
 
-# The test group starts at `dumps.m4:256'.  An error occurred while
-# testing single lines to Hexadecimal-1.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:288: Testing single lines to Hexadecimal-1'
+  && echo "$srcdir/dumps.m4:288: testing..."
 echo dumps.m4:288 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../x1 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x0A
@@ -2207,21 +2458,27 @@ if test -z "$at_no_redirs"; then
 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
 0x57, 0x58, 0x59, 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s19)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 19"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 19"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=19
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2239,21 +2496,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "20. $srcdir/dumps.m4:292      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d20(
+# Testing block of lines to Hexadecimal-1
+# Snippet )d20)
 # Snippet (s20(
+# starting from `dumps.m4:292'.
+$at_traceon
 
-# The test group starts at `dumps.m4:292'.  An error occurred while
-# testing block of lines to Hexadecimal-1.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:317: Testing block of lines to Hexadecimal-1'
+  && echo "$srcdir/dumps.m4:317: testing..."
 echo dumps.m4:317 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../x1 < $at_srcdir/dumps-data
+$at_traceon
+recode /../x1 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x0A, 0x61, 0x0A, 0x61, 0x62, 0x0A, 0x61, 0x62, 0x63, 0x0A, 0x61, 0x62,
@@ -2276,21 +2541,27 @@ if test -z "$at_no_redirs"; then
 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
 0x5A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x0A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s20)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 20"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 20"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=20
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2308,46 +2579,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "21. $srcdir/dumps.m4:321      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d21(
+# Testing single lines to Hexadecimal-1 and back
+# Snippet )d21)
 # Snippet (s21(
+# starting from `dumps.m4:321'.
+$at_traceon
 
-# The test group starts at `dumps.m4:321'.  An error occurred while
-# testing single lines to Hexadecimal-1 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:334: Testing single lines to Hexadecimal-1 and back'
+  && echo "$srcdir/dumps.m4:334: testing..."
 echo dumps.m4:334 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../x1 output
-  recode /x1 output
+  recode /../x1 output
+  recode /x1../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s21)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 21"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 21"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=21
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2365,44 +2646,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "22. $srcdir/dumps.m4:338      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d22(
+# Testing block of lines to Hexadecimal-1 and back
+# Snippet )d22)
 # Snippet (s22(
+# starting from `dumps.m4:338'.
+$at_traceon
 
-# The test group starts at `dumps.m4:338'.  An error occurred while
-# testing block of lines to Hexadecimal-1 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:349: Testing block of lines to Hexadecimal-1 and back'
+  && echo "$srcdir/dumps.m4:349: testing..."
 echo dumps.m4:349 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../x1 output
-recode /x1 output
+recode /../x1 output
+recode /x1../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s22)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 22"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 22"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=22
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -2420,22 +2711,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "23. $srcdir/dumps.m4:353      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d23(
+# Testing single lines to Hexadecimal-2
+# Snippet )d23)
 # Snippet (s23(
+# starting from `dumps.m4:353'.
+$at_traceon
 
-# The test group starts at `dumps.m4:353'.  An error occurred while
-# testing single lines to Hexadecimal-2.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:381: Testing single lines to Hexadecimal-2'
+  && echo "$srcdir/dumps.m4:381: testing..."
 echo dumps.m4:381 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../x2 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x0A
@@ -2460,21 +2759,27 @@ if test -z "$at_no_redirs"; then
 0x4748, 0x494A, 0x4B4C, 0x4D4E, 0x4F50, 0x5152, 0x5354, 0x5556,
 0x5758, 0x595A, 0x3031, 0x3233, 0x3435, 0x360A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s23)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 23"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 23"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=23
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2492,21 +2797,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "24. $srcdir/dumps.m4:385      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d24(
+# Testing block of lines to Hexadecimal-2
+# Snippet )d24)
 # Snippet (s24(
+# starting from `dumps.m4:385'.
+$at_traceon
 
-# The test group starts at `dumps.m4:385'.  An error occurred while
-# testing block of lines to Hexadecimal-2.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:406: Testing block of lines to Hexadecimal-2'
+  && echo "$srcdir/dumps.m4:406: testing..."
 echo dumps.m4:406 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../x2 < $at_srcdir/dumps-data
+$at_traceon
+recode /../x2 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x0A61, 0x0A61, 0x620A, 0x6162, 0x630A, 0x6162, 0x6364, 0x0A61,
@@ -2525,21 +2838,27 @@ if test -z "$at_no_redirs"; then
 0x5253, 0x5455, 0x5657, 0x5859, 0x5A30, 0x3132, 0x3334, 0x3536,
 0x0A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s24)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 24"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 24"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=24
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2557,46 +2876,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "25. $srcdir/dumps.m4:410      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d25(
+# Testing single lines to Hexadecimal-2 and back
+# Snippet )d25)
 # Snippet (s25(
+# starting from `dumps.m4:410'.
+$at_traceon
 
-# The test group starts at `dumps.m4:410'.  An error occurred while
-# testing single lines to Hexadecimal-2 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:423: Testing single lines to Hexadecimal-2 and back'
+  && echo "$srcdir/dumps.m4:423: testing..."
 echo dumps.m4:423 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../x2 output
-  recode /x2 output
+  recode /../x2 output
+  recode /x2../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s25)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 25"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 25"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=25
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2614,44 +2943,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "26. $srcdir/dumps.m4:427      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d26(
+# Testing block of lines to Hexadecimal-2 and back
+# Snippet )d26)
 # Snippet (s26(
+# starting from `dumps.m4:427'.
+$at_traceon
 
-# The test group starts at `dumps.m4:427'.  An error occurred while
-# testing block of lines to Hexadecimal-2 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:438: Testing block of lines to Hexadecimal-2 and back'
+  && echo "$srcdir/dumps.m4:438: testing..."
 echo dumps.m4:438 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../x2 output
-recode /x2 output
+recode /../x2 output
+recode /x2../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s26)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 26"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 26"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=26
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -2669,22 +3008,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "27. $srcdir/dumps.m4:442      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d27(
+# Testing single lines to Hexadecimal-4
+# Snippet )d27)
 # Snippet (s27(
+# starting from `dumps.m4:442'.
+$at_traceon
 
-# The test group starts at `dumps.m4:442'.  An error occurred while
-# testing single lines to Hexadecimal-4.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:466: Testing single lines to Hexadecimal-4'
+  && echo "$srcdir/dumps.m4:466: testing..."
 echo dumps.m4:466 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../x4 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x0A
@@ -2705,21 +3052,27 @@ if test -z "$at_no_redirs"; then
 0x797A4142, 0x43444546, 0x4748494A, 0x4B4C4D4E, 0x4F505152, 0x53545556,
 0x5758595A, 0x30313233, 0x3435360A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s27)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 27"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 27"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=27
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2737,21 +3090,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "28. $srcdir/dumps.m4:470      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d28(
+# Testing block of lines to Hexadecimal-4
+# Snippet )d28)
 # Snippet (s28(
+# starting from `dumps.m4:470'.
+$at_traceon
 
-# The test group starts at `dumps.m4:470'.  An error occurred while
-# testing block of lines to Hexadecimal-4.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:486: Testing block of lines to Hexadecimal-4'
+  && echo "$srcdir/dumps.m4:486: testing..."
 echo dumps.m4:486 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../x4 < $at_srcdir/dumps-data
+$at_traceon
+recode /../x4 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x0A610A61, 0x620A6162, 0x630A6162, 0x63640A61, 0x62636465, 0x66676869,
@@ -2765,21 +3126,27 @@ if test -z "$at_no_redirs"; then
 0x42434445, 0x46474849, 0x4A4B4C4D, 0x4E4F5051, 0x52535455, 0x56575859,
 0x5A303132, 0x33343536, 0x0A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s28)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 28"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 28"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=28
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2797,46 +3164,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "29. $srcdir/dumps.m4:490      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d29(
+# Testing single lines to Hexadecimal-4 and back
+# Snippet )d29)
 # Snippet (s29(
+# starting from `dumps.m4:490'.
+$at_traceon
 
-# The test group starts at `dumps.m4:490'.  An error occurred while
-# testing single lines to Hexadecimal-4 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:503: Testing single lines to Hexadecimal-4 and back'
+  && echo "$srcdir/dumps.m4:503: testing..."
 echo dumps.m4:503 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../x4 output
-  recode /x4 output
+  recode /../x4 output
+  recode /x4../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s29)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 29"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 29"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=29
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2854,44 +3231,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "30. $srcdir/dumps.m4:507      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d30(
+# Testing block of lines to Hexadecimal-4 and back
+# Snippet )d30)
 # Snippet (s30(
+# starting from `dumps.m4:507'.
+$at_traceon
 
-# The test group starts at `dumps.m4:507'.  An error occurred while
-# testing block of lines to Hexadecimal-4 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:518: Testing block of lines to Hexadecimal-4 and back'
+  && echo "$srcdir/dumps.m4:518: testing..."
 echo dumps.m4:518 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../x4 output
-recode /x4 output
+recode /../x4 output
+recode /x4../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s30)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 30"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 30"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=30
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -2909,22 +3296,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "31. $srcdir/dumps.m4:522      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d31(
+# Testing single lines to Octal-1
+# Snippet )d31)
 # Snippet (s31(
+# starting from `dumps.m4:522'.
+$at_traceon
 
-# The test group starts at `dumps.m4:522'.  An error occurred while
-# testing single lines to Octal-1.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:554: Testing single lines to Octal-1'
+  && echo "$srcdir/dumps.m4:554: testing..."
 echo dumps.m4:554 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../o1 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0012
@@ -2953,21 +3348,27 @@ if test -z "$at_no_redirs"; then
 0113, 0114, 0115, 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126,
 0127, 0130, 0131, 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s31)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 31"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 31"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=31
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -2985,21 +3386,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "32. $srcdir/dumps.m4:558      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d32(
+# Testing block of lines to Octal-1
+# Snippet )d32)
 # Snippet (s32(
+# starting from `dumps.m4:558'.
+$at_traceon
 
-# The test group starts at `dumps.m4:558'.  An error occurred while
-# testing block of lines to Octal-1.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:583: Testing block of lines to Octal-1'
+  && echo "$srcdir/dumps.m4:583: testing..."
 echo dumps.m4:583 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../o1 < $at_srcdir/dumps-data
+$at_traceon
+recode /../o1 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0012, 0141, 0012, 0141, 0142, 0012, 0141, 0142, 0143, 0012, 0141, 0142,
@@ -3022,21 +3431,27 @@ if test -z "$at_no_redirs"; then
 0116, 0117, 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 0130, 0131,
 0132, 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0012
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s32)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 32"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 32"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=32
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3054,46 +3469,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "33. $srcdir/dumps.m4:587      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d33(
+# Testing single lines to Octal-1 and back
+# Snippet )d33)
 # Snippet (s33(
+# starting from `dumps.m4:587'.
+$at_traceon
 
-# The test group starts at `dumps.m4:587'.  An error occurred while
-# testing single lines to Octal-1 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:600: Testing single lines to Octal-1 and back'
+  && echo "$srcdir/dumps.m4:600: testing..."
 echo dumps.m4:600 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../o1 output
-  recode /o1 output
+  recode /../o1 output
+  recode /o1../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s33)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 33"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 33"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=33
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3111,44 +3536,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "34. $srcdir/dumps.m4:604      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d34(
+# Testing block of lines to Octal-1 and back
+# Snippet )d34)
 # Snippet (s34(
+# starting from `dumps.m4:604'.
+$at_traceon
 
-# The test group starts at `dumps.m4:604'.  An error occurred while
-# testing block of lines to Octal-1 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:615: Testing block of lines to Octal-1 and back'
+  && echo "$srcdir/dumps.m4:615: testing..."
 echo dumps.m4:615 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../o1 output
-recode /o1 output
+recode /../o1 output
+recode /o1../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s34)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 34"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 34"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=34
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -3166,22 +3601,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "35. $srcdir/dumps.m4:619      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d35(
+# Testing single lines to Octal-2
+# Snippet )d35)
 # Snippet (s35(
+# starting from `dumps.m4:619'.
+$at_traceon
 
-# The test group starts at `dumps.m4:619'.  An error occurred while
-# testing single lines to Octal-2.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:647: Testing single lines to Octal-2'
+  && echo "$srcdir/dumps.m4:647: testing..."
 echo dumps.m4:647 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../o2 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0012
@@ -3206,21 +3649,27 @@ if test -z "$at_no_redirs"; then
 0043510, 0044512, 0045514, 0046516, 0047520, 0050522, 0051524, 0052526,
 0053530, 0054532, 0030061, 0031063, 0032065, 0033012
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s35)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 35"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 35"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=35
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3238,21 +3687,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "36. $srcdir/dumps.m4:651      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d36(
+# Testing block of lines to Octal-2
+# Snippet )d36)
 # Snippet (s36(
+# starting from `dumps.m4:651'.
+$at_traceon
 
-# The test group starts at `dumps.m4:651'.  An error occurred while
-# testing block of lines to Octal-2.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:672: Testing block of lines to Octal-2'
+  && echo "$srcdir/dumps.m4:672: testing..."
 echo dumps.m4:672 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../o2 < $at_srcdir/dumps-data
+$at_traceon
+recode /../o2 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0005141, 0005141, 0061012, 0060542, 0061412, 0060542, 0061544, 0005141,
@@ -3271,21 +3728,27 @@ if test -z "$at_no_redirs"; then
 0051123, 0052125, 0053127, 0054131, 0055060, 0030462, 0031464, 0032466,
 0012
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s36)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 36"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 36"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=36
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3303,46 +3766,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "37. $srcdir/dumps.m4:676      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d37(
+# Testing single lines to Octal-2 and back
+# Snippet )d37)
 # Snippet (s37(
+# starting from `dumps.m4:676'.
+$at_traceon
 
-# The test group starts at `dumps.m4:676'.  An error occurred while
-# testing single lines to Octal-2 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:689: Testing single lines to Octal-2 and back'
+  && echo "$srcdir/dumps.m4:689: testing..."
 echo dumps.m4:689 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../o2 output
-  recode /o2 output
+  recode /../o2 output
+  recode /o2../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s37)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 37"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 37"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=37
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3360,44 +3833,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "38. $srcdir/dumps.m4:693      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d38(
+# Testing block of lines to Octal-2 and back
+# Snippet )d38)
 # Snippet (s38(
+# starting from `dumps.m4:693'.
+$at_traceon
 
-# The test group starts at `dumps.m4:693'.  An error occurred while
-# testing block of lines to Octal-2 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:704: Testing block of lines to Octal-2 and back'
+  && echo "$srcdir/dumps.m4:704: testing..."
 echo dumps.m4:704 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../o2 output
-recode /o2 output
+recode /../o2 output
+recode /o2../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s38)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 38"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 38"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=38
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -3415,22 +3898,30 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "39. $srcdir/dumps.m4:708      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d39(
+# Testing single lines to Octal-4
+# Snippet )d39)
 # Snippet (s39(
+# starting from `dumps.m4:708'.
+$at_traceon
 
-# The test group starts at `dumps.m4:708'.  An error occurred while
-# testing single lines to Octal-4.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:736: Testing single lines to Octal-4'
+  && echo "$srcdir/dumps.m4:736: testing..."
 echo dumps.m4:736 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../o4 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0012
@@ -3455,21 +3946,27 @@ if test -z "$at_no_redirs"; then
 010722044512, 011323046516, 011724050522, 012325052526,
 012726054532, 006014231063, 006415233012
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s39)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 39"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 39"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=39
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3487,21 +3984,29 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "40. $srcdir/dumps.m4:740      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d40(
+# Testing block of lines to Octal-4
+# Snippet )d40)
 # Snippet (s40(
+# starting from `dumps.m4:740'.
+$at_traceon
 
-# The test group starts at `dumps.m4:740'.  An error occurred while
-# testing block of lines to Octal-4.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:761: Testing block of lines to Octal-4'
+  && echo "$srcdir/dumps.m4:761: testing..."
 echo dumps.m4:761 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../o4 < $at_srcdir/dumps-data
+$at_traceon
+recode /../o4 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "001230205141, 014202460542, 014302460542, 014331005141,
@@ -3520,21 +4025,27 @@ if test -z "$at_no_redirs"; then
 012224652125, 012625654131, 013214030462, 006315032466,
 0012
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s40)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 40"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 40"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=40
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3552,46 +4063,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "41. $srcdir/dumps.m4:765      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d41(
+# Testing single lines to Octal-4 and back
+# Snippet )d41)
 # Snippet (s41(
+# starting from `dumps.m4:765'.
+$at_traceon
 
-# The test group starts at `dumps.m4:765'.  An error occurred while
-# testing single lines to Octal-4 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:778: Testing single lines to Octal-4 and back'
+  && echo "$srcdir/dumps.m4:778: testing..."
 echo dumps.m4:778 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../o4 output
-  recode /o4 output
+  recode /../o4 output
+  recode /o4../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s41)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 41"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 41"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=41
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3609,44 +4130,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "42. $srcdir/dumps.m4:782      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d42(
+# Testing block of lines to Octal-4 and back
+# Snippet )d42)
 # Snippet (s42(
+# starting from `dumps.m4:782'.
+$at_traceon
 
-# The test group starts at `dumps.m4:782'.  An error occurred while
-# testing block of lines to Octal-4 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/dumps.m4:793: Testing block of lines to Octal-4 and back'
+  && echo "$srcdir/dumps.m4:793: testing..."
 echo dumps.m4:793 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../o4 output
-recode /o4 output
+recode /../o4 output
+recode /o4../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s42)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 42"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 42"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=42
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -3666,22 +4197,30 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "43. $srcdir/base64.m4:3       $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d43(
+# Testing single lines to Base64
+# Snippet )d43)
 # Snippet (s43(
+# starting from `base64.m4:3'.
+$at_traceon
 
-# The test group starts at `base64.m4:3'.  An error occurred while
-# testing single lines to Base64.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/base64.m4:22: Testing single lines to Base64'
+  && echo "$srcdir/base64.m4:22: testing..."
 echo base64.m4:22 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 ( while read line; do echo $line | recode ../64 || exit 1; done
 ) < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "Cg==
@@ -3697,21 +4236,27 @@ YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWVwo=
 YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0
 NTYK
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s43)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 43"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 43"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=43
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -3729,21 +4274,29 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "44. $srcdir/base64.m4:26      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d44(
+# Testing block of lines to Base64
+# Snippet )d44)
 # Snippet (s44(
+# starting from `base64.m4:26'.
+$at_traceon
 
-# The test group starts at `base64.m4:26'.  An error occurred while
-# testing block of lines to Base64.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/base64.m4:36: Testing block of lines to Base64'
+  && echo "$srcdir/base64.m4:36: testing..."
 echo base64.m4:36 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
-recode ../64 < $at_srcdir/dumps-data
+$at_traceon
+recode /../64 < $at_srcdir/dumps-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "CmEKYWIKYWJjCmFiY2QKYWJjZGVmZ2hpCmFiY2RlZmdoaWprbG1ub3BxcnMKYWJjZGVmZ2hpamts
@@ -3751,21 +4304,27 @@ bW5vcHFyc3R1dnd6eXpBQkMKYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xN
 CmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3enl6QUJDREVGR0hJSktMTU5PUFFSU1RVVlcKYWJjZGVm
 Z2hpamtsbW5vcHFyc3R1dnd6eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTYK
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s44)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 44"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 44"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=44
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -3783,46 +4342,56 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "45. $srcdir/base64.m4:40      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d45(
+# Testing single lines to Base64 and back
+# Snippet )d45)
 # Snippet (s45(
+# starting from `base64.m4:40'.
+$at_traceon
 
-# The test group starts at `base64.m4:40'.  An error occurred while
-# testing single lines to Base64 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/base64.m4:53: Testing single lines to Base64 and back'
+  && echo "$srcdir/base64.m4:53: testing..."
 echo base64.m4:53 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo $line > input
   echo $line > output
-  recode ../64 output
-  recode /64 output
+  recode /../64 output
+  recode /64../ output
   diff input output
 done < $at_srcdir/dumps-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s45)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 45"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 45"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=45
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -3840,44 +4409,54 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "46. $srcdir/base64.m4:57      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d46(
+# Testing block of lines to Base64 and back
+# Snippet )d46)
 # Snippet (s46(
+# starting from `base64.m4:57'.
+$at_traceon
 
-# The test group starts at `base64.m4:57'.  An error occurred while
-# testing block of lines to Base64 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/base64.m4:68: Testing block of lines to Base64 and back'
+  && echo "$srcdir/base64.m4:68: testing..."
 echo base64.m4:68 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/dumps-data output
 chmod +w output
-recode ../64 output
-recode /64 output
+recode /../64 output
+recode /64../ output
 diff $at_srcdir/dumps-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s46)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 46"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 46"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=46
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -3897,21 +4476,29 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "47. $srcdir/quoted.m4:3       $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d47(
+# Testing block of lines from Quoted Printable
+# Snippet )d47)
 # Snippet (s47(
+# starting from `quoted.m4:3'.
+$at_traceon
 
-# The test group starts at `quoted.m4:3'.  An error occurred while
-# testing block of lines from Quoted Printable.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/quoted.m4:24: Testing block of lines from Quoted Printable'
+  && echo "$srcdir/quoted.m4:24: testing..."
 echo quoted.m4:24 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode qp..x1 < $at_srcdir/quoted-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x44, 0x65, 0x61, 0x72, 0x20, 0xDE, 0x6F, 0x72, 0x76, 0x61, 0x72, 0x64,
@@ -3930,21 +4517,27 @@ if test -z "$at_no_redirs"; then
 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x6C, 0x61, 0x73,
 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s47)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 47"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 47"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=47
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -3962,17 +4555,21 @@ rm -rf output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "48. $srcdir/quoted.m4:28      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d48(
+# Testing block of lines from Quoted Printable and back
+# Snippet )d48)
 # Snippet (s48(
+# starting from `quoted.m4:28'.
+$at_traceon
 
-# The test group starts at `quoted.m4:28'.  An error occurred while
-# testing block of lines from Quoted Printable and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/quoted.m4:39: Testing block of lines from Quoted Printable and back'
+  && echo "$srcdir/quoted.m4:39: testing..."
 echo quoted.m4:39 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/quoted-data output
 chmod +w output
@@ -3981,25 +4578,31 @@ recode x1..qp output
 diff $at_srcdir/quoted-data output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s48)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 48"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 48"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=48
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf output stdout stderr
@@ -4010,7 +4613,7 @@ echo
 echo 'Individual charsets.'
 echo
 
-# FIXME: tests for atarist, next, ebcdic, tables, applemac, ibmpc iconqnx,
+# FIXME: tests for atarist, next, ebcdic, tables, applemac, ibmpc, iconqnx,
 # cdcnos, bangbang, ascii, flat, html, latex, texinfo, texte and utf16.
 
 #                                                      -*- shell-script -*-
@@ -4026,11 +4629,14 @@ rm -rf expout example transcript stdout stderr expout
     echo $at_n "     $at_c"
   fi
   echo $at_n "49. $srcdir/african.m4:3      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d49(
+# Testing Bambara
+# Snippet )d49)
 # Snippet (s49(
-
-# The test group starts at `african.m4:3'.  An error occurred while
-# testing Bambara.
+# starting from `african.m4:3'.
+$at_traceon
 
 cat <<'EOF' >example
 N ye n ka nsiirin nin da Amadu Tara la.  Jamanatigi d=F2 tun b=E8 yen muso
@@ -4054,50 +4660,67 @@ dW4geWUgQW1hZHUgVGFyYSB5ZS4KTyB0dW4geWUgamFtYW5hdGlnaSBuaW4ga2EgdGFyYW11c28g
 ZGVuIHllLgo=
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:31: Testing Bambara'
+  && echo "$srcdir/african.m4:31: testing..."
 echo african.m4:31 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp transcript expout
-recode bambara/qp..t-bambara/64 < example
+recode ../,bambara/qp..t-bambara/64 < example
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:36: Testing Bambara'
+  && echo "$srcdir/african.m4:36: testing..."
 echo african.m4:36 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp example expout
-recode t-bambara/64..bambara/qp < transcript
+recode ../,t-bambara/64..bambara/qp < transcript
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s49)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 49"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 49"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=49
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expout example transcript stdout stderr expout
@@ -4115,11 +4738,14 @@ rm -rf expout example transcript stdout stderr expout
     echo $at_n "     $at_c"
   fi
   echo $at_n "50. $srcdir/african.m4:40     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d50(
+# Testing Peul Fulfulde
+# Snippet )d50)
 # Snippet (s50(
-
-# The test group starts at `african.m4:40'.  An error occurred while
-# testing Peul Fulfulde.
+# starting from `african.m4:40'.
+$at_traceon
 
 cat <<'EOF' >example
 Woni =B2on haa =B1ooyi.  Oya mar=B2o jiwo kaanaro on maayi.  Suka no
@@ -4137,50 +4763,67 @@ aSwgbyB3b25pIHRvbiBoYWEgbmVlYltpIC0tLQp3YSBkdXViW2kgc2FwcG8gbyBrbyBmYXdpISAt
 LS0gWXVtbWEgbWFra28gbWFyYWEgYltpZFtkW28KZ28/Xm8gc2kgd29uYWEga2Fua28uCg==
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:62: Testing Peul Fulfulde'
+  && echo "$srcdir/african.m4:62: testing..."
 echo african.m4:62 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp transcript expout
-recode fulfulde/qp..t-fulfulde/64 < example
+recode ../,fulfulde/qp..t-fulfulde/64 < example
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:67: Testing Peul Fulfulde'
+  && echo "$srcdir/african.m4:67: testing..."
 echo african.m4:67 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp example expout
-recode t-fulfulde/64..fulfulde/qp < transcript
+recode ../,t-fulfulde/64..fulfulde/qp < transcript
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s50)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 50"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 50"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=50
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expout example transcript stdout stderr expout
@@ -4198,11 +4841,14 @@ rm -rf expout example transcript stdout stderr expout
     echo $at_n "     $at_c"
   fi
   echo $at_n "51. $srcdir/african.m4:71     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d51(
+# Testing Lingala
+# Snippet )d51)
 # Snippet (s51(
-
-# The test group starts at `african.m4:71'.  An error occurred while
-# testing Lingala.
+# starting from `african.m4:71'.
+$at_traceon
 
 cat <<'EOF' >example
 Mob=E1li m=B6k=B6, azal=E1k=ED s=E9 y=E9m=B6k=B6 n=E1 bil=B6k=F8 m=EDngi.
@@ -4228,50 +4874,67 @@ eWVcJy4gIE50YWJhIGFsb2JpXCc6IHppbGFcJyBuZ2FcJ2lcJyB0b1wna2VbbmRlWwplbG9bbmdv
 WycuCg==
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:101: Testing Lingala'
+  && echo "$srcdir/african.m4:101: testing..."
 echo african.m4:101 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp transcript expout
-recode lingala/qp..t-lingala/64 < example
+recode ../,lingala/qp..t-lingala/64 < example
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:106: Testing Lingala'
+  && echo "$srcdir/african.m4:106: testing..."
 echo african.m4:106 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp example expout
-recode t-lingala/64..lingala/qp < transcript
+recode ../,t-lingala/64..lingala/qp < transcript
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s51)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 51"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 51"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=51
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expout example transcript stdout stderr expout
@@ -4289,11 +4952,14 @@ rm -rf expout example transcript stdout stderr expout
     echo $at_n "     $at_c"
   fi
   echo $at_n "52. $srcdir/african.m4:110    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d52(
+# Testing Sango
+# Snippet )d52)
 # Snippet (s52(
-
-# The test group starts at `african.m4:110'.  An error occurred while
-# testing Sango.
+# starting from `african.m4:110'.
+$at_traceon
 
 cat <<'EOF' >example
 M=E2ley=F6mb=F6 ayeke mb=EAn=EE wakua t=EE let=E4a.  Lo yeke zo s=F4 lo y=
@@ -4313,50 +4979,67 @@ YW5nYSB0aV4gbnpvIm5pXiBkdXRpIiB0aV4gbG8gbmEgeWFebmdhXmRhIHRpXgpsbyBuYSBhXnNl
 IndhIiB0aV4gbG8uCg==
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:134: Testing Sango'
+  && echo "$srcdir/african.m4:134: testing..."
 echo african.m4:134 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp transcript expout
-recode sango/qp..t-sango/64 < example
+recode ../,sango/qp..t-sango/64 < example
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:139: Testing Sango'
+  && echo "$srcdir/african.m4:139: testing..."
 echo african.m4:139 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp example expout
-recode t-sango/64..sango/qp < transcript
+recode ../,t-sango/64..sango/qp < transcript
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s52)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 52"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 52"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=52
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expout example transcript stdout stderr expout
@@ -4374,11 +5057,14 @@ rm -rf expout example transcript stdout stderr expout
     echo $at_n "     $at_c"
   fi
   echo $at_n "53. $srcdir/african.m4:143    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d53(
+# Testing Wolof
+# Snippet )d53)
 # Snippet (s53(
-
-# The test group starts at `african.m4:143'.  An error occurred while
-# testing Wolof.
+# starting from `african.m4:143'.
+$at_traceon
 
 cat <<'EOF' >example
 Ca 1965 ba leegi, Suwaahili mooy l=E0kk r=E9=E9wum Tansani.  L=E0kk woowu
@@ -4393,50 +5079,67 @@ IHllbSB5aS4gIENpIG1vb20gbGEgbl51eQpqb3R0YWxlZSB4YWJhYXIgeWkgbl51eSB3YXggYWcg
 eWkgbl51eSBiaW5kLgo=
 EOF
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:162: Testing Wolof'
+  && echo "$srcdir/african.m4:162: testing..."
 echo african.m4:162 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp transcript expout
-recode wolof/qp..t-wolof/64 < example
+recode ../,wolof/qp..t-wolof/64 < example
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/african.m4:167: Testing Wolof'
+  && echo "$srcdir/african.m4:167: testing..."
 echo african.m4:167 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 cp example expout
-recode t-wolof/64..wolof/qp < transcript
+recode ../,t-wolof/64..wolof/qp < transcript
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   $at_diff expout stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s53)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 53"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 53"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=53
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf expout example transcript stdout stderr expout
@@ -4456,38 +5159,52 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "54. $srcdir/combine.m4:3      $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d54(
+# Testing that combine does not crash
+# Snippet )d54)
 # Snippet (s54(
+# starting from `combine.m4:3'.
+$at_traceon
 
-# The test group starts at `combine.m4:3'.  An error occurred while
-# testing that combine does not crash.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/combine.m4:6: Testing that combine does not crash'
+  && echo "$srcdir/combine.m4:6: testing..."
 echo combine.m4:6 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode co..l1 < /dev/null
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s54)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 54"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 54"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=54
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -4507,20 +5224,28 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "55. $srcdir/debug.m4:3        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d55(
+# Testing testing and counting
+# Snippet )d55)
 # Snippet (s55(
+# starting from `debug.m4:3'.
+$at_traceon
 
-# The test group starts at `debug.m4:3'.  An error occurred while
-# testing testing and counting.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/debug.m4:11: Testing testing and counting'
+  && echo "$srcdir/debug.m4:11: testing..."
 echo debug.m4:11 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode test7..x,us..count < /dev/null
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 11  000A LF   117  0020 SP   127  002C ,    152  0030 0     24  0031 1
@@ -4528,17 +5253,23 @@ if test -z "$at_no_redirs"; then
  24  0037 7      8  0038 8      8  0039 9      8  0041 A      8  0042 B
   8  0043 C      8  0044 D      8  0045 E      8  0046 F    128  0078 x
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/debug.m4:18: Testing testing and counting'
+  && echo "$srcdir/debug.m4:18: testing..."
 echo debug.m4:18 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode test8..x,us..count < /dev/null
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 22  000A LF   234  0020 SP   255  002C ,    288  0030 0     32  0031 1
@@ -4546,17 +5277,23 @@ if test -z "$at_no_redirs"; then
  32  0037 7     32  0038 8     32  0039 9     32  0041 A     32  0042 B
  32  0043 C     32  0044 D     32  0045 E     32  0046 F    256  0078 x
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/debug.m4:26: Testing testing and counting'
+  && echo "$srcdir/debug.m4:26: testing..."
 echo debug.m4:26 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode test15..x2,us..count < /dev/null
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 8064  000A LF   56445  0020 SP   64508  002C ,    80765  0030 0
@@ -4565,17 +5302,23 @@ if test -z "$at_no_redirs"; then
 16256  0039 9    16256  0041 A    16256  0042 B    16000  0043 C
 14975  0044 D    15999  0045 E    15990  0046 F    64509  0078 x
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/debug.m4:34: Testing testing and counting'
+  && echo "$srcdir/debug.m4:34: testing..."
 echo debug.m4:34 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode test16..x2,us..count < /dev/null
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n " 8192  000A LF   57344  0020 SP   65535  002C ,    81920  0030 0
@@ -4584,21 +5327,27 @@ if test -z "$at_no_redirs"; then
 16384  0039 9    16384  0041 A    16384  0042 B    16384  0043 C
 16384  0044 D    16384  0045 E    16384  0046 F    65536  0078 x
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s55)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 55"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 55"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=55
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -4618,24 +5367,28 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "56. $srcdir/utf7.m4:3         $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d56(
+# Testing single lines from UTF-7
+# Snippet )d56)
 # Snippet (s56(
+# starting from `utf7.m4:3'.
+$at_traceon
 
-# The test group starts at `utf7.m4:3'.  An error occurred while
-# testing single lines from UTF-7.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/utf7.m4:20: Testing single lines from UTF-7'
+  && echo "$srcdir/utf7.m4:20: testing..."
 echo utf7.m4:20 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
-  echo "$line" | recode u7..u6/x2
+  echo "$line" | recode ../,u7..u6/x2
 done < $at_srcdir/utf7-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0xFEFF, 0x000A
@@ -4646,21 +5399,27 @@ if test -z "$at_no_redirs"; then
 0xFEFF, 0x0049, 0x0074, 0x0065, 0x006D, 0x0020, 0x0033, 0x0020,
 0x0069, 0x0073, 0x0020, 0x00A3, 0x0031, 0x002E, 0x000A
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s56)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 56"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 56"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=56
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -4678,17 +5437,21 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "57. $srcdir/utf7.m4:24        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d57(
+# Testing single lines from UTF-7 and back
+# Snippet )d57)
 # Snippet (s57(
+# starting from `utf7.m4:24'.
+$at_traceon
 
-# The test group starts at `utf7.m4:24'.  An error occurred while
-# testing single lines from UTF-7 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/utf7.m4:37: Testing single lines from UTF-7 and back'
+  && echo "$srcdir/utf7.m4:37: testing..."
 echo utf7.m4:37 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 while read line; do
   echo "$line" > input
@@ -4699,25 +5462,31 @@ while read line; do
 done < $at_srcdir/utf7-data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s57)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 57"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 57"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=57
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -4737,21 +5506,29 @@ rm -rf stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "58. $srcdir/utf8.m4:3         $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d58(
+# Testing block of lines to UTF-8
+# Snippet )d58)
 # Snippet (s58(
+# starting from `utf8.m4:3'.
+$at_traceon
 
-# The test group starts at `utf8.m4:3'.  An error occurred while
-# testing block of lines to UTF-8.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/utf8.m4:25: Testing block of lines to UTF-8'
+  && echo "$srcdir/utf8.m4:25: testing..."
 echo utf8.m4:25 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 recode l1/qp..u8/x < $at_srcdir/quoted-data
 
-test $? = 0 || exit 1
-test -n "$at_tracex" && set +x
+at_status=$?
+if test $at_status != 0; then
+  test -n "$at_verbose" && cat stderr >&6
+  exit $at_status
+fi
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
   echo $at_n "0x44, 0x65, 0x61, 0x72, 0x20, 0xC3, 0x9E, 0x6F, 0x72, 0x76, 0x61, 0x72,
@@ -4771,21 +5548,27 @@ if test -z "$at_no_redirs"; then
 0xC2, 0xBB, 0x0A, 0x49, 0x6E, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74,
 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65
 $at_c" | $at_diff - stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s58)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 58"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 58"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=58
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf stdout stderr
@@ -4803,17 +5586,21 @@ rm -rf input output stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "59. $srcdir/utf8.m4:29        $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d59(
+# Testing block of lines to UTF-8 and back
+# Snippet )d59)
 # Snippet (s59(
+# starting from `utf8.m4:29'.
+$at_traceon
 
-# The test group starts at `utf8.m4:29'.  An error occurred while
-# testing block of lines to UTF-8 and back.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/utf8.m4:41: Testing block of lines to UTF-8 and back'
+  && echo "$srcdir/utf8.m4:41: testing..."
 echo utf8.m4:41 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_srcdir/quoted-data input
 cp $at_srcdir/quoted-data output
@@ -4823,25 +5610,31 @@ recode u8..l1/qp output
 diff input output
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s59)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 59"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 59"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=59
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf input output stdout stderr
@@ -4865,42 +5658,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "60. $srcdir/methods.m4:24     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d60(
+# Testing texte:texte through memory while filtering
+# Snippet )d60)
 # Snippet (s60(
+# starting from `methods.m4:24'.
+$at_traceon
 
-# The test group starts at `methods.m4:24'.  An error occurred while
-# testing texte:texte through memory while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:24: Testing texte:texte through memory while filtering'
+  && echo "$srcdir/methods.m4:24: testing..."
 echo methods.m4:24 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..texte \
 | recode --quiet --force --sequence=memory texte..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s60)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 60"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 60"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=60
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -4918,17 +5721,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "61. $srcdir/methods.m4:27     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d61(
+# Testing texte:texte through memory while squashing
+# Snippet )d61)
 # Snippet (s61(
+# starting from `methods.m4:27'.
+$at_traceon
 
-# The test group starts at `methods.m4:27'.  An error occurred while
-# testing texte:texte through memory while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:27: Testing texte:texte through memory while squashing'
+  && echo "$srcdir/methods.m4:27: testing..."
 echo methods.m4:27 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -4937,25 +5744,31 @@ recode --quiet --force --sequence=memory texte..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s61)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 61"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 61"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=61
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -4973,42 +5786,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "62. $srcdir/methods.m4:30     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d62(
+# Testing texte:texte through files while filtering
+# Snippet )d62)
 # Snippet (s62(
+# starting from `methods.m4:30'.
+$at_traceon
 
-# The test group starts at `methods.m4:30'.  An error occurred while
-# testing texte:texte through files while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:30: Testing texte:texte through files while filtering'
+  && echo "$srcdir/methods.m4:30: testing..."
 echo methods.m4:30 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..texte \
 | recode --quiet --force --sequence=files texte..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s62)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 62"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 62"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=62
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5026,17 +5849,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "63. $srcdir/methods.m4:33     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d63(
+# Testing texte:texte through files while squashing
+# Snippet )d63)
 # Snippet (s63(
+# starting from `methods.m4:33'.
+$at_traceon
 
-# The test group starts at `methods.m4:33'.  An error occurred while
-# testing texte:texte through files while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:33: Testing texte:texte through files while squashing'
+  && echo "$srcdir/methods.m4:33: testing..."
 echo methods.m4:33 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5045,25 +5872,31 @@ recode --quiet --force --sequence=files texte..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s63)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 63"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 63"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=63
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5081,42 +5914,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "64. $srcdir/methods.m4:36     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d64(
+# Testing texte:texte through pipe while filtering
+# Snippet )d64)
 # Snippet (s64(
+# starting from `methods.m4:36'.
+$at_traceon
 
-# The test group starts at `methods.m4:36'.  An error occurred while
-# testing texte:texte through pipe while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:36: Testing texte:texte through pipe while filtering'
+  && echo "$srcdir/methods.m4:36: testing..."
 echo methods.m4:36 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..texte \
 | recode --quiet --force --sequence=pipe texte..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s64)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 64"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 64"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=64
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5134,17 +5977,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "65. $srcdir/methods.m4:39     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d65(
+# Testing texte:texte through pipe while squashing
+# Snippet )d65)
 # Snippet (s65(
+# starting from `methods.m4:39'.
+$at_traceon
 
-# The test group starts at `methods.m4:39'.  An error occurred while
-# testing texte:texte through pipe while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:39: Testing texte:texte through pipe while squashing'
+  && echo "$srcdir/methods.m4:39: testing..."
 echo methods.m4:39 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5153,25 +6000,31 @@ recode --quiet --force --sequence=pipe texte..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s65)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 65"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 65"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=65
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5189,42 +6042,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "66. $srcdir/methods.m4:42     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d66(
+# Testing texte:latin1 through memory while filtering
+# Snippet )d66)
 # Snippet (s66(
+# starting from `methods.m4:42'.
+$at_traceon
 
-# The test group starts at `methods.m4:42'.  An error occurred while
-# testing texte:latin1 through memory while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:42: Testing texte:latin1 through memory while filtering'
+  && echo "$srcdir/methods.m4:42: testing..."
 echo methods.m4:42 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..latin1 \
 | recode --quiet --force --sequence=memory latin1..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s66)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 66"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 66"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=66
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5242,17 +6105,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "67. $srcdir/methods.m4:45     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d67(
+# Testing texte:latin1 through memory while squashing
+# Snippet )d67)
 # Snippet (s67(
+# starting from `methods.m4:45'.
+$at_traceon
 
-# The test group starts at `methods.m4:45'.  An error occurred while
-# testing texte:latin1 through memory while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:45: Testing texte:latin1 through memory while squashing'
+  && echo "$srcdir/methods.m4:45: testing..."
 echo methods.m4:45 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5261,25 +6128,31 @@ recode --quiet --force --sequence=memory latin1..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s67)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 67"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 67"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=67
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5297,42 +6170,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "68. $srcdir/methods.m4:48     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d68(
+# Testing texte:latin1 through files while filtering
+# Snippet )d68)
 # Snippet (s68(
+# starting from `methods.m4:48'.
+$at_traceon
 
-# The test group starts at `methods.m4:48'.  An error occurred while
-# testing texte:latin1 through files while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:48: Testing texte:latin1 through files while filtering'
+  && echo "$srcdir/methods.m4:48: testing..."
 echo methods.m4:48 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..latin1 \
 | recode --quiet --force --sequence=files latin1..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s68)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 68"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 68"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=68
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5350,17 +6233,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "69. $srcdir/methods.m4:51     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d69(
+# Testing texte:latin1 through files while squashing
+# Snippet )d69)
 # Snippet (s69(
+# starting from `methods.m4:51'.
+$at_traceon
 
-# The test group starts at `methods.m4:51'.  An error occurred while
-# testing texte:latin1 through files while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:51: Testing texte:latin1 through files while squashing'
+  && echo "$srcdir/methods.m4:51: testing..."
 echo methods.m4:51 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5369,25 +6256,31 @@ recode --quiet --force --sequence=files latin1..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s69)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 69"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 69"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=69
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5405,42 +6298,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "70. $srcdir/methods.m4:54     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d70(
+# Testing texte:latin1 through pipe while filtering
+# Snippet )d70)
 # Snippet (s70(
+# starting from `methods.m4:54'.
+$at_traceon
 
-# The test group starts at `methods.m4:54'.  An error occurred while
-# testing texte:latin1 through pipe while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:54: Testing texte:latin1 through pipe while filtering'
+  && echo "$srcdir/methods.m4:54: testing..."
 echo methods.m4:54 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..latin1 \
 | recode --quiet --force --sequence=pipe latin1..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s70)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 70"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 70"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=70
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5458,17 +6361,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "71. $srcdir/methods.m4:57     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d71(
+# Testing texte:latin1 through pipe while squashing
+# Snippet )d71)
 # Snippet (s71(
+# starting from `methods.m4:57'.
+$at_traceon
 
-# The test group starts at `methods.m4:57'.  An error occurred while
-# testing texte:latin1 through pipe while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:57: Testing texte:latin1 through pipe while squashing'
+  && echo "$srcdir/methods.m4:57: testing..."
 echo methods.m4:57 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5477,25 +6384,31 @@ recode --quiet --force --sequence=pipe latin1..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s71)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 71"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 71"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=71
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5513,42 +6426,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "72. $srcdir/methods.m4:60     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d72(
+# Testing texte:bangbang through memory while filtering
+# Snippet )d72)
 # Snippet (s72(
+# starting from `methods.m4:60'.
+$at_traceon
 
-# The test group starts at `methods.m4:60'.  An error occurred while
-# testing texte:bangbang through memory while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:60: Testing texte:bangbang through memory while filtering'
+  && echo "$srcdir/methods.m4:60: testing..."
 echo methods.m4:60 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..bangbang \
 | recode --quiet --force --sequence=memory bangbang..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s72)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 72"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 72"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=72
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5566,17 +6489,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "73. $srcdir/methods.m4:63     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d73(
+# Testing texte:bangbang through memory while squashing
+# Snippet )d73)
 # Snippet (s73(
+# starting from `methods.m4:63'.
+$at_traceon
 
-# The test group starts at `methods.m4:63'.  An error occurred while
-# testing texte:bangbang through memory while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:63: Testing texte:bangbang through memory while squashing'
+  && echo "$srcdir/methods.m4:63: testing..."
 echo methods.m4:63 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5585,25 +6512,31 @@ recode --quiet --force --sequence=memory bangbang..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s73)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 73"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 73"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=73
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5621,42 +6554,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "74. $srcdir/methods.m4:66     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d74(
+# Testing texte:bangbang through files while filtering
+# Snippet )d74)
 # Snippet (s74(
+# starting from `methods.m4:66'.
+$at_traceon
 
-# The test group starts at `methods.m4:66'.  An error occurred while
-# testing texte:bangbang through files while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:66: Testing texte:bangbang through files while filtering'
+  && echo "$srcdir/methods.m4:66: testing..."
 echo methods.m4:66 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..bangbang \
 | recode --quiet --force --sequence=files bangbang..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s74)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 74"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 74"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=74
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5674,17 +6617,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "75. $srcdir/methods.m4:69     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d75(
+# Testing texte:bangbang through files while squashing
+# Snippet )d75)
 # Snippet (s75(
+# starting from `methods.m4:69'.
+$at_traceon
 
-# The test group starts at `methods.m4:69'.  An error occurred while
-# testing texte:bangbang through files while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:69: Testing texte:bangbang through files while squashing'
+  && echo "$srcdir/methods.m4:69: testing..."
 echo methods.m4:69 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5693,25 +6640,31 @@ recode --quiet --force --sequence=files bangbang..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s75)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 75"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 75"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=75
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5729,42 +6682,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "76. $srcdir/methods.m4:72     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d76(
+# Testing texte:bangbang through pipe while filtering
+# Snippet )d76)
 # Snippet (s76(
+# starting from `methods.m4:72'.
+$at_traceon
 
-# The test group starts at `methods.m4:72'.  An error occurred while
-# testing texte:bangbang through pipe while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:72: Testing texte:bangbang through pipe while filtering'
+  && echo "$srcdir/methods.m4:72: testing..."
 echo methods.m4:72 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..bangbang \
 | recode --quiet --force --sequence=pipe bangbang..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s76)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 76"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 76"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=76
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5782,17 +6745,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "77. $srcdir/methods.m4:75     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d77(
+# Testing texte:bangbang through pipe while squashing
+# Snippet )d77)
 # Snippet (s77(
+# starting from `methods.m4:75'.
+$at_traceon
 
-# The test group starts at `methods.m4:75'.  An error occurred while
-# testing texte:bangbang through pipe while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:75: Testing texte:bangbang through pipe while squashing'
+  && echo "$srcdir/methods.m4:75: testing..."
 echo methods.m4:75 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5801,25 +6768,31 @@ recode --quiet --force --sequence=pipe bangbang..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s77)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 77"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 77"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=77
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5837,42 +6810,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "78. $srcdir/methods.m4:78     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d78(
+# Testing texte:ibmpc through memory while filtering
+# Snippet )d78)
 # Snippet (s78(
+# starting from `methods.m4:78'.
+$at_traceon
 
-# The test group starts at `methods.m4:78'.  An error occurred while
-# testing texte:ibmpc through memory while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:78: Testing texte:ibmpc through memory while filtering'
+  && echo "$srcdir/methods.m4:78: testing..."
 echo methods.m4:78 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..ibmpc \
 | recode --quiet --force --sequence=memory ibmpc..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s78)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 78"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 78"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=78
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5890,17 +6873,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "79. $srcdir/methods.m4:81     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d79(
+# Testing texte:ibmpc through memory while squashing
+# Snippet )d79)
 # Snippet (s79(
+# starting from `methods.m4:81'.
+$at_traceon
 
-# The test group starts at `methods.m4:81'.  An error occurred while
-# testing texte:ibmpc through memory while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:81: Testing texte:ibmpc through memory while squashing'
+  && echo "$srcdir/methods.m4:81: testing..."
 echo methods.m4:81 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -5909,25 +6896,31 @@ recode --quiet --force --sequence=memory ibmpc..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s79)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 79"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 79"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=79
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5945,42 +6938,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "80. $srcdir/methods.m4:84     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d80(
+# Testing texte:ibmpc through files while filtering
+# Snippet )d80)
 # Snippet (s80(
+# starting from `methods.m4:84'.
+$at_traceon
 
-# The test group starts at `methods.m4:84'.  An error occurred while
-# testing texte:ibmpc through files while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:84: Testing texte:ibmpc through files while filtering'
+  && echo "$srcdir/methods.m4:84: testing..."
 echo methods.m4:84 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..ibmpc \
 | recode --quiet --force --sequence=files ibmpc..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s80)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 80"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 80"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=80
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -5998,17 +7001,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "81. $srcdir/methods.m4:87     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d81(
+# Testing texte:ibmpc through files while squashing
+# Snippet )d81)
 # Snippet (s81(
+# starting from `methods.m4:87'.
+$at_traceon
 
-# The test group starts at `methods.m4:87'.  An error occurred while
-# testing texte:ibmpc through files while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:87: Testing texte:ibmpc through files while squashing'
+  && echo "$srcdir/methods.m4:87: testing..."
 echo methods.m4:87 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6017,25 +7024,31 @@ recode --quiet --force --sequence=files ibmpc..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s81)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 81"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 81"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=81
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6053,42 +7066,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "82. $srcdir/methods.m4:90     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d82(
+# Testing texte:ibmpc through pipe while filtering
+# Snippet )d82)
 # Snippet (s82(
+# starting from `methods.m4:90'.
+$at_traceon
 
-# The test group starts at `methods.m4:90'.  An error occurred while
-# testing texte:ibmpc through pipe while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:90: Testing texte:ibmpc through pipe while filtering'
+  && echo "$srcdir/methods.m4:90: testing..."
 echo methods.m4:90 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..ibmpc \
 | recode --quiet --force --sequence=pipe ibmpc..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s82)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 82"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 82"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=82
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6106,17 +7129,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "83. $srcdir/methods.m4:93     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d83(
+# Testing texte:ibmpc through pipe while squashing
+# Snippet )d83)
 # Snippet (s83(
+# starting from `methods.m4:93'.
+$at_traceon
 
-# The test group starts at `methods.m4:93'.  An error occurred while
-# testing texte:ibmpc through pipe while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:93: Testing texte:ibmpc through pipe while squashing'
+  && echo "$srcdir/methods.m4:93: testing..."
 echo methods.m4:93 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6125,25 +7152,31 @@ recode --quiet --force --sequence=pipe ibmpc..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s83)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 83"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 83"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=83
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6161,42 +7194,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "84. $srcdir/methods.m4:96     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d84(
+# Testing texte:iconqnx through memory while filtering
+# Snippet )d84)
 # Snippet (s84(
+# starting from `methods.m4:96'.
+$at_traceon
 
-# The test group starts at `methods.m4:96'.  An error occurred while
-# testing texte:iconqnx through memory while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:96: Testing texte:iconqnx through memory while filtering'
+  && echo "$srcdir/methods.m4:96: testing..."
 echo methods.m4:96 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING texte..iconqnx \
 | recode --quiet --force --sequence=memory iconqnx..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s84)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 84"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 84"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=84
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6214,17 +7257,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "85. $srcdir/methods.m4:99     $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d85(
+# Testing texte:iconqnx through memory while squashing
+# Snippet )d85)
 # Snippet (s85(
+# starting from `methods.m4:99'.
+$at_traceon
 
-# The test group starts at `methods.m4:99'.  An error occurred while
-# testing texte:iconqnx through memory while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:99: Testing texte:iconqnx through memory while squashing'
+  && echo "$srcdir/methods.m4:99: testing..."
 echo methods.m4:99 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6233,25 +7280,31 @@ recode --quiet --force --sequence=memory iconqnx..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s85)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 85"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 85"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=85
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6269,42 +7322,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "86. $srcdir/methods.m4:102    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d86(
+# Testing texte:iconqnx through files while filtering
+# Snippet )d86)
 # Snippet (s86(
+# starting from `methods.m4:102'.
+$at_traceon
 
-# The test group starts at `methods.m4:102'.  An error occurred while
-# testing texte:iconqnx through files while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:102: Testing texte:iconqnx through files while filtering'
+  && echo "$srcdir/methods.m4:102: testing..."
 echo methods.m4:102 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=files < $at_top_srcdir/COPYING texte..iconqnx \
 | recode --quiet --force --sequence=files iconqnx..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s86)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 86"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 86"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=86
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6322,17 +7385,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "87. $srcdir/methods.m4:105    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d87(
+# Testing texte:iconqnx through files while squashing
+# Snippet )d87)
 # Snippet (s87(
+# starting from `methods.m4:105'.
+$at_traceon
 
-# The test group starts at `methods.m4:105'.  An error occurred while
-# testing texte:iconqnx through files while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:105: Testing texte:iconqnx through files while squashing'
+  && echo "$srcdir/methods.m4:105: testing..."
 echo methods.m4:105 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6341,25 +7408,31 @@ recode --quiet --force --sequence=files iconqnx..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s87)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 87"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 87"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=87
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6377,42 +7450,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "88. $srcdir/methods.m4:108    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d88(
+# Testing texte:iconqnx through pipe while filtering
+# Snippet )d88)
 # Snippet (s88(
+# starting from `methods.m4:108'.
+$at_traceon
 
-# The test group starts at `methods.m4:108'.  An error occurred while
-# testing texte:iconqnx through pipe while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:108: Testing texte:iconqnx through pipe while filtering'
+  && echo "$srcdir/methods.m4:108: testing..."
 echo methods.m4:108 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING texte..iconqnx \
 | recode --quiet --force --sequence=pipe iconqnx..texte > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s88)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 88"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 88"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=88
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6430,17 +7513,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "89. $srcdir/methods.m4:111    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d89(
+# Testing texte:iconqnx through pipe while squashing
+# Snippet )d89)
 # Snippet (s89(
+# starting from `methods.m4:111'.
+$at_traceon
 
-# The test group starts at `methods.m4:111'.  An error occurred while
-# testing texte:iconqnx through pipe while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:111: Testing texte:iconqnx through pipe while squashing'
+  && echo "$srcdir/methods.m4:111: testing..."
 echo methods.m4:111 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6449,25 +7536,31 @@ recode --quiet --force --sequence=pipe iconqnx..texte data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s89)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 89"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 89"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=89
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6485,42 +7578,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "90. $srcdir/methods.m4:114    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d90(
+# Testing ascii-bs:ebcdic through memory while filtering
+# Snippet )d90)
 # Snippet (s90(
+# starting from `methods.m4:114'.
+$at_traceon
 
-# The test group starts at `methods.m4:114'.  An error occurred while
-# testing ascii-bs:ebcdic through memory while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:114: Testing ascii-bs:ebcdic through memory while filtering'
+  && echo "$srcdir/methods.m4:114: testing..."
 echo methods.m4:114 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=memory < $at_top_srcdir/COPYING ascii-bs..ebcdic \
 | recode --quiet --force --sequence=memory ebcdic..ascii-bs > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s90)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 90"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 90"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=90
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6538,17 +7641,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "91. $srcdir/methods.m4:117    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d91(
+# Testing ascii-bs:ebcdic through memory while squashing
+# Snippet )d91)
 # Snippet (s91(
+# starting from `methods.m4:117'.
+$at_traceon
 
-# The test group starts at `methods.m4:117'.  An error occurred while
-# testing ascii-bs:ebcdic through memory while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:117: Testing ascii-bs:ebcdic through memory while squashing'
+  && echo "$srcdir/methods.m4:117: testing..."
 echo methods.m4:117 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6557,25 +7664,31 @@ recode --quiet --force --sequence=memory ebcdic..ascii-bs data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s91)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 91"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 91"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=91
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6593,42 +7706,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "92. $srcdir/methods.m4:120    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d92(
+# Testing ascii-bs:ebcdic through files while filtering
+# Snippet )d92)
 # Snippet (s92(
+# starting from `methods.m4:120'.
+$at_traceon
 
-# The test group starts at `methods.m4:120'.  An error occurred while
-# testing ascii-bs:ebcdic through files while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:120: Testing ascii-bs:ebcdic through files while filtering'
+  && echo "$srcdir/methods.m4:120: testing..."
 echo methods.m4:120 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=files < $at_top_srcdir/COPYING ascii-bs..ebcdic \
 | recode --quiet --force --sequence=files ebcdic..ascii-bs > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s92)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 92"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 92"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=92
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6646,17 +7769,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "93. $srcdir/methods.m4:123    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d93(
+# Testing ascii-bs:ebcdic through files while squashing
+# Snippet )d93)
 # Snippet (s93(
+# starting from `methods.m4:123'.
+$at_traceon
 
-# The test group starts at `methods.m4:123'.  An error occurred while
-# testing ascii-bs:ebcdic through files while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:123: Testing ascii-bs:ebcdic through files while squashing'
+  && echo "$srcdir/methods.m4:123: testing..."
 echo methods.m4:123 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6665,25 +7792,31 @@ recode --quiet --force --sequence=files ebcdic..ascii-bs data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s93)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 93"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 93"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=93
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6701,42 +7834,52 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "94. $srcdir/methods.m4:126    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d94(
+# Testing ascii-bs:ebcdic through pipe while filtering
+# Snippet )d94)
 # Snippet (s94(
+# starting from `methods.m4:126'.
+$at_traceon
 
-# The test group starts at `methods.m4:126'.  An error occurred while
-# testing ascii-bs:ebcdic through pipe while filtering.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:126: Testing ascii-bs:ebcdic through pipe while filtering'
+  && echo "$srcdir/methods.m4:126: testing..."
 echo methods.m4:126 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 recode --quiet --force --sequence=pipe < $at_top_srcdir/COPYING ascii-bs..ebcdic \
 | recode --quiet --force --sequence=pipe ebcdic..ascii-bs > data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s94)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 94"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 94"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=94
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6754,17 +7897,21 @@ rm -rf data stdout stderr
     echo $at_n "     $at_c"
   fi
   echo $at_n "95. $srcdir/methods.m4:129    $at_c"
-  (
+  if test -z "$at_skip_mode"; then
+    (
+# Snippet (d95(
+# Testing ascii-bs:ebcdic through pipe while squashing
+# Snippet )d95)
 # Snippet (s95(
+# starting from `methods.m4:129'.
+$at_traceon
 
-# The test group starts at `methods.m4:129'.  An error occurred while
-# testing ascii-bs:ebcdic through pipe while squashing.
-
+$at_traceoff
 test -n "$at_verbose" \
-  && echo $srcdir'/methods.m4:129: Testing ascii-bs:ebcdic through pipe while squashing'
+  && echo "$srcdir/methods.m4:129: testing..."
 echo methods.m4:129 > at-check-line
 test -z "$at_no_redirs" && exec 5>&1 6>&2 1>stdout 2>stderr
-test -n "$at_tracex" && set -x
+$at_traceon
 set -e
 cp $at_top_srcdir/COPYING data
 chmod +w data
@@ -6773,25 +7920,31 @@ recode --quiet --force --sequence=pipe ebcdic..ascii-bs data
 diff $at_top_srcdir/COPYING data
 set +e
 
-test -n "$at_tracex" && set +x
+$at_traceoff
 if test -z "$at_no_redirs"; then
   exec 1>&5 2>&6
-  test ! -s stdout || exit 1
-  test ! -s stderr || exit 1
+  $at_diff /dev/null stdout || exit 1
+  $at_diff /dev/null stderr || exit 1
 fi
+$at_traceon
 
+$at_traceoff
 # Snippet )s95)
-  )
-  case $? in
-    0) echo ok
-       ;;
-    77) echo "ignored near \``cat at-check-line`'"
-        at_ignore_count=`expr $at_ignore_count + 1`
-       ;;
-    *) echo "FAILED near \``cat at-check-line`'"
-       at_failed_list="$at_failed_list 95"
-       ;;
-  esac
+    )
+    case $? in
+      0) echo ok
+        ;;
+      77) echo "ignored near \``cat at-check-line`'"
+         at_ignore_count=`expr $at_ignore_count + 1`
+         ;;
+      *) echo "FAILED near \``cat at-check-line`'"
+        at_failed_list="$at_failed_list 95"
+        ;;
+    esac
+  else
+     echo 'ignored (skipped)'
+     at_ignore_count=`expr $at_ignore_count + 1`
+  fi
   at_test_count=95
   if test -z "$at_stop_on_error" || test -z "$at_failed_list"; then
     rm -rf data stdout stderr
@@ -6814,13 +7967,24 @@ else
   for at_group in $at_failed_list; do
     echo $at_n " $at_group$at_c"
     ( echo '#!/bin/sh'
-      sed -n "/^# Snippet (1/,/^# Snippet )1/p" atconfig
+      sed -n '/^# Snippet (1/,/^# Snippet )1/p' atconfig
       test -z "$at_silent" && echo 'at_verbose=1'
-      sed -n "/^# Snippet (2/,/^# Snippet )2/p" atconfig
+      sed -n '/^# Snippet (2/,/^# Snippet )2/p' atconfig
       sed -n "/^# Snippet (3/,/^# Snippet )3/p" $0
       sed -n "/^# Snippet (c$at_group(/,/^# Snippet )c$at_group)/p" $0
-      echo 'test -n "$at_verbose" \
-        && echo "$0:1: =================================================="'
+      at_desc="`sed -n \
+        '/^# Snippet (d'$at_group'(/,/^# Snippet )d'$at_group')/p' $0 \
+        | sed -n '2s/^# //p'`"
+      echo 'if test -n "$at_verbose"; then'
+      echo '  at_banner="$0: '$at_desc'"'
+      echo '  at_dashes=`echo $at_banner | sed s/./=/g`'
+      echo '  echo'
+      echo '  echo "$at_dashes"'
+      echo '  echo "$at_banner"'
+      echo '  echo "$at_dashes"'
+      echo 'fi'
+      echo
+      sed -n "/^# Snippet (d$at_group(/,/^# Snippet )d$at_group)/p" $0
       sed -n "/^# Snippet (s$at_group(/,/^# Snippet )s$at_group)/p" $0
       echo 'exit 0'
     ) | grep -v '^# Snippet' > debug-$at_group.sh
@@ -6829,7 +7993,7 @@ else
   done
   echo ', done'
   if test -n "$at_stop_on_error"; then
-    at_banner="ERROR: One of the tests failed, inhibiting subsequent tests"
+    at_banner='ERROR: One of the tests failed, inhibiting subsequent tests'
   else
     at_banner="ERROR: Suite unsuccessful, $at_fail_count of $at_test_count tests failed"
   fi
@@ -6843,8 +8007,13 @@ echo "$at_dashes"
 if test -n "$at_failed_list"; then
   if test -z "$at_silent"; then
     echo
-    echo "Now, failed tests will be executed again, with more details..."
-    echo
+    echo 'When reporting failed tests to maintainers, do not merely list test'
+    echo 'numbers, as the numbering changes between releases and pretests.'
+    echo 'Be careful to give at least all the information you got about them.'
+    echo 'You may investigate any problem if you feel able to do so, in which'
+    echo 'case the generated debugging scripts provide good starting points.'
+    echo "Go on and modify them at will.  \`./debug-NN --help' gives usage"
+    echo 'information.  Now, failed tests will be executed again, verbosely.'
     for at_group in $at_failed_list; do
       ./debug-$at_group.sh
     done
index 43447fa31f53fcff52fc0763300a4d2623e98e81..ed39f82354dcfd71438fb3b83ab8bb571c040b8a 100644 (file)
@@ -6,7 +6,7 @@ dnl      -----------------------
 AT_CHECK(
 [set -e
 while read line; do
-  echo "$line" | recode u7..u6/x2
+  echo "$line" | recode ../,u7..u6/x2
 done < $at_srcdir/utf7-data
 set +e
 ], ,