diff options
author | Hironobu Yamashita <h.y.acetaminophen@gmail.com> | 2019-02-06 10:58:23 +0000 |
---|---|---|
committer | Hironobu Yamashita <h.y.acetaminophen@gmail.com> | 2019-02-06 10:58:23 +0000 |
commit | 174b83580efb7953436f4ab9cfbebddc19936217 (patch) | |
tree | ae8a7c89151ee9f93a9555f56d7bc6138ff0b6b3 /Build/source/texk/web2c/ptexdir | |
parent | 9904a9f5b98acf226b7295d30db24f951991faa3 (diff) |
kanji-internal (ptex and friends 1 of 5)
git-svn-id: svn://tug.org/texlive/trunk@49955 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/ptexdir')
-rw-r--r-- | Build/source/texk/web2c/ptexdir/ChangeLog | 14 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/am/ptex.am | 2 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/kanji.c | 15 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/kanji.h | 6 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/kanji_dump.c | 48 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/ptex-base.ch | 14 | ||||
-rw-r--r-- | Build/source/texk/web2c/ptexdir/ptex.defines | 2 |
7 files changed, 95 insertions, 6 deletions
diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog index ebf446f369a..7ae83fc9c73 100644 --- a/Build/source/texk/web2c/ptexdir/ChangeLog +++ b/Build/source/texk/web2c/ptexdir/ChangeLog @@ -1,3 +1,17 @@ +2019-01-23 Hironobu Yamashita <h.y.acetaminophen@gmail.com> + + * ptex-base.ch: Add dump_kanji and undump_kanji. + * ptex.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/ptex.am (libkanji_a_SOURCES): Add kanji_dump.c. + (all changes based on tl r23753 of upTeX, dated 2011-08-29.) + + * kanji_dump.c: Throw a warning when kanji internal encoding + is incompatible with the preloaded format. + https://github.com/texjporg/tex-jp-build/issues/55 + 2018-09-09 Karl Berry <karl@tug.org> * ptriptest.test: LC_ALL=LANGUAGE=C. diff --git a/Build/source/texk/web2c/ptexdir/am/ptex.am b/Build/source/texk/web2c/ptexdir/am/ptex.am index eccef3f920c..d8485ff1ca5 100644 --- a/Build/source/texk/web2c/ptexdir/am/ptex.am +++ b/Build/source/texk/web2c/ptexdir/am/ptex.am @@ -21,7 +21,7 @@ $(pproglib): $(KPATHSEA_DEPEND) ${srcdir}/lib/*.c ## libkanji.a for pTeX and e-pTeX ## EXTRA_LIBRARIES += libkanji.a -libkanji_a_SOURCES = ptexdir/kanji.c ptexdir/kanji.h +libkanji_a_SOURCES = ptexdir/kanji.c ptexdir/kanji.h ptexdir/kanji_dump.c libkanji_a_CPPFLAGS = $(ptex_cppflags) ## pTeX diff --git a/Build/source/texk/web2c/ptexdir/kanji.c b/Build/source/texk/web2c/ptexdir/kanji.c index 4fd39d2f293..a3f56607612 100644 --- a/Build/source/texk/web2c/ptexdir/kanji.c +++ b/Build/source/texk/web2c/ptexdir/kanji.c @@ -72,18 +72,23 @@ integer kcatcodekey(integer c) return Hi(toDVI(c)); } -void init_default_kanji (const_string file_str, const_string internal_str) +void init_kanji (const_string file_str, const_string internal_str) { - char *p; - - enable_UPTEX (false); /* disable */ - 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; + + enable_UPTEX (false); /* disable */ + + init_kanji (file_str, internal_str); p = getenv ("PTEX_KANJI_ENC"); if (p) { diff --git a/Build/source/texk/web2c/ptexdir/kanji.h b/Build/source/texk/web2c/ptexdir/kanji.h index b8404c7f1f8..97a458a1087 100644 --- a/Build/source/texk/web2c/ptexdir/kanji.h +++ b/Build/source/texk/web2c/ptexdir/kanji.h @@ -39,6 +39,7 @@ extern integer calc_pos (integer c); #define calcpos calc_pos extern integer kcatcodekey (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); #ifdef PBIBTEX /* pBibTeX is EUC only */ @@ -63,4 +64,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/ptexdir/kanji_dump.c b/Build/source/texk/web2c/ptexdir/kanji_dump.c new file mode 100644 index 00000000000..991440b3756 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/kanji_dump.c @@ -0,0 +1,48 @@ +/* + * Dump/undump Kanji encoding for (e)ptex. + */ + +#include "kanji.h" +#include <texmfmp.h> + +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; + int i; + + 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; + + i = get_internal_enc(); + + /* Now BUFFER and P are the file and internal encoding strings. */ + init_kanji (NULL, p); + if (get_internal_enc() != i) { + fprintf (stderr, "Option --kanji-internal invalid when a format file is loaded.\n", p); + fprintf (stderr, "I'll stick to %s.\n", enc_to_string(get_internal_enc())); + } +} diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch index 10b657db89e..1020afe8ace 100644 --- a/Build/source/texk/web2c/ptexdir/ptex-base.ch +++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch @@ -6144,6 +6144,20 @@ show_code: @<Show the current meaning of a token, then |goto common_ending|@>; show_mode: @<Show the current japanese processing mode@>; @z +@x +libc_free(format_engine);@/ +@y +libc_free(format_engine);@/ +dump_kanji(fmt_file); +@z + +@x +libc_free(format_engine); +@y +libc_free(format_engine); +undump_kanji(fmt_file); +@z + @x l.24982 font_info:=xmalloc_array(fmemory_word, font_mem_size); @y diff --git a/Build/source/texk/web2c/ptexdir/ptex.defines b/Build/source/texk/web2c/ptexdir/ptex.defines index 12caba8bfcd..b64e1b950e2 100644 --- a/Build/source/texk/web2c/ptexdir/ptex.defines +++ b/Build/source/texk/web2c/ptexdir/ptex.defines @@ -28,4 +28,6 @@ @define function calcpos (); @define function kcatcodekey (); +@define procedure dumpkanji (); @define procedure initkanji; +@define procedure undumpkanji (); |