summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/uptexdir
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/uptexdir')
-rw-r--r--Build/source/texk/web2c/uptexdir/ChangeLog7
-rw-r--r--Build/source/texk/web2c/uptexdir/am/uptex.am2
-rw-r--r--Build/source/texk/web2c/uptexdir/kanji.c17
-rw-r--r--Build/source/texk/web2c/uptexdir/kanji.h6
-rw-r--r--Build/source/texk/web2c/uptexdir/kanji_dump.c41
-rw-r--r--Build/source/texk/web2c/uptexdir/uptex-m.ch14
-rw-r--r--Build/source/texk/web2c/uptexdir/uptex.defines2
7 files changed, 82 insertions, 7 deletions
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 <peb@mppmu.mpg.de>
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 <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;
+
+ 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
@@ -1005,6 +1005,20 @@ if (t<cs_token_flag+single_base)and(check_kanji(t,7)<2) then
@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
begin p:=cur_chr; scan_int; n:=cur_val; scan_optional_equals; scan_int;
if not check_kanji(cur_val) then
@y
diff --git a/Build/source/texk/web2c/uptexdir/uptex.defines b/Build/source/texk/web2c/uptexdir/uptex.defines
index 53b133a2e20..9871d4a15e0 100644
--- a/Build/source/texk/web2c/uptexdir/uptex.defines
+++ b/Build/source/texk/web2c/uptexdir/uptex.defines
@@ -42,6 +42,8 @@
@define function multilenbuffchar ();
@define function nrestmultichr ();
+@define procedure dumpkanji ();
@define procedure initkanji;
+@define procedure undumpkanji ();
@define var sjisterminal;