summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/ptexdir
diff options
context:
space:
mode:
authorHironobu Yamashita <h.y.acetaminophen@gmail.com>2019-02-06 10:58:23 +0000
committerHironobu Yamashita <h.y.acetaminophen@gmail.com>2019-02-06 10:58:23 +0000
commit174b83580efb7953436f4ab9cfbebddc19936217 (patch)
treeae8a7c89151ee9f93a9555f56d7bc6138ff0b6b3 /Build/source/texk/web2c/ptexdir
parent9904a9f5b98acf226b7295d30db24f951991faa3 (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/ChangeLog14
-rw-r--r--Build/source/texk/web2c/ptexdir/am/ptex.am2
-rw-r--r--Build/source/texk/web2c/ptexdir/kanji.c15
-rw-r--r--Build/source/texk/web2c/ptexdir/kanji.h6
-rw-r--r--Build/source/texk/web2c/ptexdir/kanji_dump.c48
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex-base.ch14
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex.defines2
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 ();