From cad740e59da5645afeef3045f6e9440deddf898a Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Tue, 30 Aug 2011 08:10:12 +0000 Subject: (e-)upTeX: dump/undump internal kanji encoding git-svn-id: svn://tug.org/texlive/trunk@23753 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/uptexdir/ChangeLog | 7 +++++ Build/source/texk/web2c/uptexdir/am/uptex.am | 2 +- Build/source/texk/web2c/uptexdir/kanji.c | 17 +++++++---- Build/source/texk/web2c/uptexdir/kanji.h | 6 ++++ Build/source/texk/web2c/uptexdir/kanji_dump.c | 41 ++++++++++++++++++++++++++ Build/source/texk/web2c/uptexdir/uptex-m.ch | 14 +++++++++ Build/source/texk/web2c/uptexdir/uptex.defines | 2 ++ 7 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 Build/source/texk/web2c/uptexdir/kanji_dump.c (limited to 'Build/source/texk/web2c/uptexdir') diff --git a/Build/source/texk/web2c/uptexdir/ChangeLog b/Build/source/texk/web2c/uptexdir/ChangeLog index 157d48cf4b8..d4dc6381cc7 100644 --- a/Build/source/texk/web2c/uptexdir/ChangeLog +++ b/Build/source/texk/web2c/uptexdir/ChangeLog @@ -3,6 +3,13 @@ * kanji.h, uptex.defines: Remove setptexencuptex. * upbibtex.ch: Use nil, not 0 as arg of set_enc_string(). + * uptex-m.ch: Add dump_kanji and undump_kanji. + * uptex.defines: Add dumpkanji and undumpkanji. + * kanji.c: Factor out init_kanji(). + * kanji_dump.c: New file for dumping/undumping kanji encoding. + * kanji.h: Add init_kanji(), dump_kanji(), and undump_kanji(). + * am/uptex.am (libukanji_a_SOURCES): Add kanji_dump.c. + 2011-08-24 Peter Breitenlohner Imported upTeX into TeX Live, based on the W32TeX version diff --git a/Build/source/texk/web2c/uptexdir/am/uptex.am b/Build/source/texk/web2c/uptexdir/am/uptex.am index 98b589bb106..545b6bad4b2 100644 --- a/Build/source/texk/web2c/uptexdir/am/uptex.am +++ b/Build/source/texk/web2c/uptexdir/am/uptex.am @@ -25,7 +25,7 @@ DISTCLEANFILES += $(upweb_programs:=.c) $(upweb_programs:=.h) \ ## libukanji.a for upTeX and e-upTeX ## EXTRA_LIBRARIES += libukanji.a -libukanji_a_SOURCES = uptexdir/kanji.c uptexdir/kanji.h +libukanji_a_SOURCES = uptexdir/kanji.c uptexdir/kanji.h uptexdir/kanji_dump.c libukanji_a_CPPFLAGS = $(uptex_cppflags) ## upTeX diff --git a/Build/source/texk/web2c/uptexdir/kanji.c b/Build/source/texk/web2c/uptexdir/kanji.c index 533785ccaeb..36ffdc22db5 100644 --- a/Build/source/texk/web2c/uptexdir/kanji.c +++ b/Build/source/texk/web2c/uptexdir/kanji.c @@ -361,6 +361,16 @@ integer multilenbuffchar(integer c) return 0; } +void init_kanji (const_string file_str, const_string internal_str) +{ + if (!set_enc_string (file_str, internal_str)) { + fprintf (stderr, "Bad kanji encoding \"%s\" or \"%s\".\n", + file_str ? file_str : "NULL", + internal_str ? internal_str : "NULL"); + uexit(1); + } +} + void init_default_kanji (const_string file_str, const_string internal_str) { char *p; @@ -382,10 +392,5 @@ void init_default_kanji (const_string file_str, const_string internal_str) } #endif - if (!set_enc_string (file_str, internal_str)) { - fprintf (stderr, "Bad kanji encoding \"%s\" or \"%s\".\n", - file_str ? file_str : "NULL", - internal_str ? internal_str : "NULL"); - uexit(1); - } + init_kanji (file_str, internal_str); } diff --git a/Build/source/texk/web2c/uptexdir/kanji.h b/Build/source/texk/web2c/uptexdir/kanji.h index 68b2b50a2d5..76e577bdd0a 100644 --- a/Build/source/texk/web2c/uptexdir/kanji.h +++ b/Build/source/texk/web2c/uptexdir/kanji.h @@ -37,6 +37,7 @@ extern integer calc_pos (integer c); extern integer kcatcodekey (integer c); extern integer multilenbuffchar (integer c); +extern void init_kanji (const_string file_str, const_string internal_str); extern void init_default_kanji (const_string file_str, const_string internal_str); /* for upTeX and e-upTeX */ #define initdefaultkanji() init_default_kanji("utf8", "uptex") @@ -57,4 +58,9 @@ extern void init_default_kanji (const_string file_str, const_string internal_str #define inputline2(fp,buff,pos,size) input_line2(fp,buff,pos,size,NULL) #endif +extern void dump_kanji (FILE *fp); +extern void undump_kanji (FILE *fp); +#define dumpkanji dump_kanji +#define undumpkanji undump_kanji + #endif /* not KANJI_H */ diff --git a/Build/source/texk/web2c/uptexdir/kanji_dump.c b/Build/source/texk/web2c/uptexdir/kanji_dump.c new file mode 100644 index 00000000000..83760980e95 --- /dev/null +++ b/Build/source/texk/web2c/uptexdir/kanji_dump.c @@ -0,0 +1,41 @@ +/* + * Dump/undump Kanji encoding for (e)upTeX. + */ + +#include "kanji.h" +#include + +void dump_kanji (FILE *fp) +{ + char buffer[12]; + const char *p = get_enc_string (); + size_t len = strlen (p); + + if (len > 11) { + fprintf (stderr, "Kanji encoding string \"%s\" exceeds 11 bytes.\n", p); + uexit(1); + } + + strcpy (buffer, p); + for (len++; len < 12; len++) + buffer[len] = 0; + do_dump (buffer, 1, 12, fp); +} + +void undump_kanji (FILE *fp) +{ + char buffer[12]; + char *p; + + do_undump (buffer, 1, 12, fp); + buffer[11] = 0; /* force string termination, just in case */ + + p = strchr (buffer, '.'); + if (p) + *p++ = 0; + else + p = buffer; + + /* Now BUFFER and P are the file and internal encoding strings. */ + init_kanji (NULL, p); +} diff --git a/Build/source/texk/web2c/uptexdir/uptex-m.ch b/Build/source/texk/web2c/uptexdir/uptex-m.ch index 677385b5247..f08018be63a 100644 --- a/Build/source/texk/web2c/uptexdir/uptex-m.ch +++ b/Build/source/texk/web2c/uptexdir/uptex-m.ch @@ -1004,6 +1004,20 @@ if (t