summaryrefslogtreecommitdiff
path: root/Build/source/texk
diff options
context:
space:
mode:
authorTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-12-22 12:28:48 +0000
committerTakuji Tanaka <ttk@t-lab.opal.ne.jp>2022-12-22 12:28:48 +0000
commitb59f1b8ee635405865045db9ec4da3c7bec464f0 (patch)
treeea9df1061c526426da4b30cd00c5ddcc16d982dc /Build/source/texk
parentbe432865de783ed058a21fbaea1016e635525a39 (diff)
uptex-{sjis,euc}: accept file names with JIS X 0208 (H.Kitagawa)
git-svn-id: svn://tug.org/texlive/trunk@65330 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk')
-rw-r--r--Build/source/texk/ptexenc/ChangeLog9
-rw-r--r--Build/source/texk/ptexenc/ptexenc.c21
-rw-r--r--Build/source/texk/ptexenc/ptexenc/ptexenc.h1
-rw-r--r--Build/source/texk/ptexenc/version.ac3
-rw-r--r--Build/source/texk/web2c/Makefile.in4
-rw-r--r--Build/source/texk/web2c/eptexdir/ChangeLog7
-rw-r--r--Build/source/texk/web2c/eptexdir/eptex.defines1
-rw-r--r--Build/source/texk/web2c/euptexdir/ChangeLog7
-rw-r--r--Build/source/texk/web2c/euptexdir/euptex.defines1
-rw-r--r--Build/source/texk/web2c/lib/ChangeLog7
-rw-r--r--Build/source/texk/web2c/lib/texmfmp.c32
-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.h1
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex-base.ch7
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex.defines1
-rwxr-xr-xBuild/source/texk/web2c/ptexdir/wcfname.test51
-rw-r--r--Build/source/texk/web2c/tests/fn-euc.txt1
-rw-r--r--Build/source/texk/web2c/tests/fn-sjis.txt1
-rw-r--r--Build/source/texk/web2c/tests/fn-utf8.txt1
-rw-r--r--Build/source/texk/web2c/tests/fn±×÷§¶-utf8.tex8
-rw-r--r--Build/source/texk/web2c/tests/fnさざ波-euc.tex23
-rw-r--r--Build/source/texk/web2c/tests/fnさざ波-sjis.tex23
-rw-r--r--Build/source/texk/web2c/tests/fnさざ波-utf8.tex23
-rw-r--r--Build/source/texk/web2c/uptexdir/ChangeLog16
-rw-r--r--Build/source/texk/web2c/uptexdir/am/uptex.am2
-rw-r--r--Build/source/texk/web2c/uptexdir/kanji.h1
-rw-r--r--Build/source/texk/web2c/uptexdir/uptex.defines1
-rwxr-xr-xBuild/source/texk/web2c/uptexdir/wcfname.test69
29 files changed, 329 insertions, 9 deletions
diff --git a/Build/source/texk/ptexenc/ChangeLog b/Build/source/texk/ptexenc/ChangeLog
index 193debcd6ee..c37a0aad278 100644
--- a/Build/source/texk/ptexenc/ChangeLog
+++ b/Build/source/texk/ptexenc/ChangeLog
@@ -1,3 +1,12 @@
+2022-12-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * ptexenc.c, ptexenc/ptexenc.h:
+ Add a new function ptenc_conv_first_line()
+ to accept file names with JIS X 0208 characters
+ in `(e)(u)ptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+ * version.ac: Bump to 1.4.3/dev.
+
2022-09-24 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
* ptexenc.c: Skip guessing file encoding if input is from pipe.
diff --git a/Build/source/texk/ptexenc/ptexenc.c b/Build/source/texk/ptexenc/ptexenc.c
index 6d74a71cecb..461565d2c17 100644
--- a/Build/source/texk/ptexenc/ptexenc.c
+++ b/Build/source/texk/ptexenc/ptexenc.c
@@ -1150,6 +1150,10 @@ void clear_infile_enc(FILE *fp)
{
infile_enc[fileno(fp)] = ENC_UNKNOWN;
}
+long ptenc_conv_first_line(long pos, long last, unsigned char *buff, const long buffsize)
+{
+ return last;
+}
#else /* !WIN32 */
static const_string in_filter = NULL;
static FILE *piped_fp[NOFILE];
@@ -1361,4 +1365,21 @@ int ptenc_get_command_line_args(int *p_ac, char ***p_av)
return 0;
}
+long ptenc_conv_first_line(long pos, long last, unsigned char *buff, const long buffsize)
+ /* return new last */
+{
+ unsigned char *old, *new_buf; long new_last, i;
+ if (internal_enc==ENC_UPTEX) return last; /* no conversion needed */
+ old = xmalloc(last-pos+2);
+ if (old==NULL) return last;
+ strncpy(old, buff+pos, last-pos+1); old[last-pos+1]='\0';
+ new_buf = ptenc_from_utf8_string_to_internal_enc(old);
+ if (new_buf==NULL) { free(old); return last; }
+ new_last=pos+strlen(new_buf)-1;
+ if (new_last>=buffsize) new_last=buffsize-1;
+ for (i=0;i<strlen(new_buf); i++) buff[pos+i]=new_buf[i];
+ free(old); free(new_buf);
+ return new_last;
+}
+
#endif /* !WIN32 */
diff --git a/Build/source/texk/ptexenc/ptexenc/ptexenc.h b/Build/source/texk/ptexenc/ptexenc/ptexenc.h
index 459ac6dfe0e..f3c8ff1743b 100644
--- a/Build/source/texk/ptexenc/ptexenc/ptexenc.h
+++ b/Build/source/texk/ptexenc/ptexenc/ptexenc.h
@@ -112,5 +112,6 @@ extern PTENCDLL unsigned char *ptenc_from_utf8_string_to_internal_enc(const unsi
extern PTENCDLL unsigned char *ptenc_from_internal_enc_string_to_utf8(const unsigned char *is);
extern PTENCDLL int ptenc_get_command_line_args(int *p_ac, char ***p_av);
#endif
+extern PTENCDLL long ptenc_conv_first_line(long pos, long limit, unsigned char *buff, const long buffsize);
#endif /* PTEXENC_PTEXENC_H */
diff --git a/Build/source/texk/ptexenc/version.ac b/Build/source/texk/ptexenc/version.ac
index 7f85d778652..7595c6f6d92 100644
--- a/Build/source/texk/ptexenc/version.ac
+++ b/Build/source/texk/ptexenc/version.ac
@@ -1,4 +1,5 @@
dnl $Id$
+dnl Copyright 2022 Japanese TeX Development Community <issue@texjp.org>
dnl Copyright 2016-2022 Karl Berry <tex-live@tug.org>
dnl Copyright 2011-2015 Peter Breitenlohner <tex-live@tug.org>
dnl
@@ -10,4 +11,4 @@ dnl Keep package and shared library versions the same;
dnl see kpathsea/version.ac.
dnl
dnl This file is m4-included from configure.ac.
-m4_define([ptexenc_version], [1.4.2/dev])
+m4_define([ptexenc_version], [1.4.3/dev])
diff --git a/Build/source/texk/web2c/Makefile.in b/Build/source/texk/web2c/Makefile.in
index 8bae51c862e..6adb132b638 100644
--- a/Build/source/texk/web2c/Makefile.in
+++ b/Build/source/texk/web2c/Makefile.in
@@ -4499,7 +4499,7 @@ ptex_ch_srcs = \
# pTeX Tests
#
-ptex_tests = ptexdir/ptriptest.test ptexdir/pver.test
+ptex_tests = ptexdir/ptriptest.test ptexdir/pver.test ptexdir/wcfname.test
eptex_CPPFLAGS = $(PTEXENC_INCLUDES) $(AM_CPPFLAGS) -I$(srcdir)/libmd5 \
$(ZLIB_INCLUDES) $(am__append_144)
@@ -4602,7 +4602,7 @@ uptftopl_LDADD = $(uptex_ldadd)
uptftopl_DEPENDENCIES = $(uptex_dependencies)
# upTeX Tests
-uptex_tests = uptexdir/uptriptest.test uptexdir/upver.test uptexdir/upkcat.test
+uptex_tests = uptexdir/uptriptest.test uptexdir/upver.test uptexdir/upkcat.test uptexdir/wcfname.test
# uppPLtoTF/upTFtoPL
upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \
uptexdir/uppltotf.test uptexdir/uptftopl.test \
diff --git a/Build/source/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog
index 405570be398..40e80f1934d 100644
--- a/Build/source/texk/web2c/eptexdir/ChangeLog
+++ b/Build/source/texk/web2c/eptexdir/ChangeLog
@@ -1,3 +1,10 @@
+2022-12-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * eptex.defines:
+ Accept file names with JIS X 0208 characters
+ in `eptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
2022-11-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
* eptex.ech: Adapt to ptex-base.ch.
diff --git a/Build/source/texk/web2c/eptexdir/eptex.defines b/Build/source/texk/web2c/eptexdir/eptex.defines
index 09caabe63b7..88035e9c754 100644
--- a/Build/source/texk/web2c/eptexdir/eptex.defines
+++ b/Build/source/texk/web2c/eptexdir/eptex.defines
@@ -24,6 +24,7 @@
@define function putc2 ();
@define function fputs2 ();
@define function inputline2 ();
+@define function ptencconvfirstline ();
@define function setinfileenc ();
@define function setstdinenc ();
diff --git a/Build/source/texk/web2c/euptexdir/ChangeLog b/Build/source/texk/web2c/euptexdir/ChangeLog
index 8a890e9dbd8..f89e3a315ce 100644
--- a/Build/source/texk/web2c/euptexdir/ChangeLog
+++ b/Build/source/texk/web2c/euptexdir/ChangeLog
@@ -1,3 +1,10 @@
+2022-12-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * euptex.defines:
+ Accept file names with JIS X 0208 characters
+ in `euptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
2022-11-03 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
* euptex.ch0, euptex.ch1: Adapt to ptex-base.ch.
diff --git a/Build/source/texk/web2c/euptexdir/euptex.defines b/Build/source/texk/web2c/euptexdir/euptex.defines
index a6cf3b7e4ae..20cee2a50ff 100644
--- a/Build/source/texk/web2c/euptexdir/euptex.defines
+++ b/Build/source/texk/web2c/euptexdir/euptex.defines
@@ -28,6 +28,7 @@
@define function putc2 ();
@define function fputs2 ();
@define function inputline2 ();
+@define function ptencconvfirstline ();
@define function setinfileenc ();
@define function setstdinenc ();
diff --git a/Build/source/texk/web2c/lib/ChangeLog b/Build/source/texk/web2c/lib/ChangeLog
index 127c93436da..bd28a284572 100644
--- a/Build/source/texk/web2c/lib/ChangeLog
+++ b/Build/source/texk/web2c/lib/ChangeLog
@@ -1,3 +1,10 @@
+2022-12-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * texmfmp.c:
+ Accept file names with JIS X 0208 characters
+ in `(e)(u)ptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
2022-06-12 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
* texmfmp.c:
diff --git a/Build/source/texk/web2c/lib/texmfmp.c b/Build/source/texk/web2c/lib/texmfmp.c
index d75ebcd7e15..b73403135be 100644
--- a/Build/source/texk/web2c/lib/texmfmp.c
+++ b/Build/source/texk/web2c/lib/texmfmp.c
@@ -849,9 +849,6 @@ maininit (int ac, string *av)
enc = kpse_var_value("command_line_encoding");
get_command_line_args_utf8(enc, &argc, &argv);
#endif
-#if IS_pTeX && !IS_upTeX && !defined(WIN32)
- ptenc_get_command_line_args(&argc, &argv);
-#endif
/* If the user says --help or --version, we need to notice early. And
since we want the --ini option, have to do it before getting into
@@ -1016,7 +1013,14 @@ maininit (int ac, string *av)
/* If run like `tex \&foo', reasonable to guess "foo" as the fmt name. */
if (!main_input_file) {
if (argv[1] && *argv[1] == '&') {
+#if IS_pTeX && !defined(WIN32)
+ string new_arg;
+ is_terminalUTF8(); /* To call get_terminal_enc(). return value is not used */
+ new_arg = ptenc_from_utf8_string_to_internal_enc(argv[1]);
+ dump_name = argv[1] + 1; argv[1] = new_arg;
+#else
dump_name = argv[1] + 1;
+#endif
}
}
@@ -1056,12 +1060,25 @@ maininit (int ac, string *av)
unsigned ext_len = strlen (DUMP_EXT);
/* Provide extension if not there already. */
+#if IS_pTeX && !defined(WIN32)
+ string new_dump_name;
+ is_terminalUTF8(); /* To call get_terminal_enc(). return value is not used */
+ new_dump_name = ptenc_from_utf8_string_to_internal_enc(dump_name);
+ if (!new_dump_name) new_dump_name = (string)dump_name;
+ if (name_len > ext_len
+ && FILESTRCASEEQ (dump_name + name_len - ext_len, DUMP_EXT)) {
+ with_ext = new_dump_name;
+ } else {
+ with_ext = concat(new_dump_name, DUMP_EXT);
+ }
+#else
if (name_len > ext_len
&& FILESTRCASEEQ (dump_name + name_len - ext_len, DUMP_EXT)) {
with_ext = dump_name;
} else {
with_ext = concat (dump_name, DUMP_EXT);
}
+#endif
DUMP_VAR = concat (" ", with_ext); /* adjust array for Pascal */
DUMP_LENGTH_VAR = strlen (DUMP_VAR + 1);
} else {
@@ -3095,7 +3112,16 @@ getjobname(strnumber name)
{
strnumber ret = name; int i, l, p;
if (c_job_name != NULL)
+#if IS_pTeX && !defined(WIN32)
+ {
+ string new_job_name;
+ is_terminalUTF8();
+ new_job_name = ptenc_from_utf8_string_to_internal_enc(c_job_name);
+ ret = maketexstring(new_job_name? new_job_name : c_job_name);
+ }
+#else
ret = maketexstring(c_job_name);
+#endif
#if IS_pTeX
i = strstart[ret]; l = strstart[ret+1];
while (i<l)
diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog
index 05efba0dc5b..0162b949262 100644
--- a/Build/source/texk/web2c/ptexdir/ChangeLog
+++ b/Build/source/texk/web2c/ptexdir/ChangeLog
@@ -1,3 +1,17 @@
+2022-12-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * wcfname.test, am/ptex.am:
+ Add tests for file names with JIS X 0208 characters
+ in `ptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
+2022-12-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * ptex-base.ch, ptex.defines, kanji.h, am/ptex.am:
+ Accept file names with JIS X 0208 characters
+ in `ptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
2022-12-12 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* ptex-base.ch: Increase INHIBIT/KINSOKU table size to 1024.
diff --git a/Build/source/texk/web2c/ptexdir/am/ptex.am b/Build/source/texk/web2c/ptexdir/am/ptex.am
index 9f030a00ffe..27ddcbd897f 100644
--- a/Build/source/texk/web2c/ptexdir/am/ptex.am
+++ b/Build/source/texk/web2c/ptexdir/am/ptex.am
@@ -171,7 +171,7 @@ EXTRA_DIST += \
# pTeX Tests
#
-ptex_tests = ptexdir/ptriptest.test ptexdir/pver.test
+ptex_tests = ptexdir/ptriptest.test ptexdir/pver.test ptexdir/wcfname.test
ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
ptexdir/pver.log: ptex$(EXEEXT)
#pweb_tests = \
diff --git a/Build/source/texk/web2c/ptexdir/kanji.h b/Build/source/texk/web2c/ptexdir/kanji.h
index 91038154fd8..b1916cc2c1a 100644
--- a/Build/source/texk/web2c/ptexdir/kanji.h
+++ b/Build/source/texk/web2c/ptexdir/kanji.h
@@ -72,6 +72,7 @@ extern void init_default_kanji (const_string file_str, const_string internal_str
#else
#define inputline2(fp,buff,pos,size) input_line2(fp,buff,NULL,pos,size,NULL)
#endif
+#define ptencconvfirstline(pos,limit,buff,size) ptenc_conv_first_line(pos,limit,buff,size)
extern void dump_kanji (gzFile fp);
extern void undump_kanji (gzFile fp);
diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch
index 175c5028360..26e529b7a66 100644
--- a/Build/source/texk/web2c/ptexdir/ptex-base.ch
+++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch
@@ -6861,6 +6861,13 @@ undump_things(char_base[null_font], font_ptr+1-null_font);
font_info:=xmalloc_array (memory_word, font_mem_size);
@z
+@x
+fix_date_and_time;@/
+@y
+last:=ptenc_conv_first_line(loc, last, buffer, buf_size); limit:=last;
+fix_date_and_time;@/
+@z
+
@x [51.1337] l.25563 - pTeX:
font_check:=xmalloc_array(four_quarters, font_max);
@y
diff --git a/Build/source/texk/web2c/ptexdir/ptex.defines b/Build/source/texk/web2c/ptexdir/ptex.defines
index 1bf613dce5e..8b80c4ed5e8 100644
--- a/Build/source/texk/web2c/ptexdir/ptex.defines
+++ b/Build/source/texk/web2c/ptexdir/ptex.defines
@@ -21,6 +21,7 @@
@define function putc2 ();
@define function fputs2 ();
@define function inputline2 ();
+@define function ptencconvfirstline ();
@define function fromJIS ();
@define function fromEUC ();
diff --git a/Build/source/texk/web2c/ptexdir/wcfname.test b/Build/source/texk/web2c/ptexdir/wcfname.test
new file mode 100755
index 00000000000..5c0ac034615
--- /dev/null
+++ b/Build/source/texk/web2c/ptexdir/wcfname.test
@@ -0,0 +1,51 @@
+#! /bin/sh -vx
+#
+# Copyright 2022 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+test -d ptests || mkdir -p ptests
+rm -f ptests/fn*.log ptests/fn*.txt ptests/fn*.tex
+
+rc=0
+
+TEXMFCNF=$srcdir/../kpathsea
+TEXINPUTS=$srcdir/tests:.
+export TEXMFCNF TEXINPUTS
+
+# pTeX internal encoding
+fenc="utf8"
+for ienc in euc sjis; do
+for doc in fnさざ波-$fenc; do
+
+ echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc
+ ./ptex -ini -interaction nonstopmode -jobname=$doc-$ienc -kanji=$fenc --kanji-internal=$ienc --shell-escape $doc.tex >ptests/$doc-$ienc-term.log || $rc=1
+ mv $doc-$ienc.txt $doc-$ienc.log $doc-tmp.tex ptests/
+ diff ptests/$doc-$ienc.txt $srcdir/tests/fn-utf8.txt || $rc=2
+
+done
+done
+
+
+# pTeX, regacy encoding
+for fenc in sjis euc; do
+for doc in fnさざ波-$fenc; do
+
+ ienc=$fenc
+ if [ "$COMSPEC" != "" ]; then
+ echo "*** We guess OS is Windows."
+ if [ $fenc != euc ]; then ienc="sjis"; fi
+ else
+ echo "*** We guess OS is not Windows."
+ if [ $fenc != sjis ]; then ienc="euc"; fi
+ fi
+
+ echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc
+ ./ptex -ini -interaction nonstopmode -jobname=$doc-$ienc -kanji=$fenc --kanji-internal=$ienc --shell-escape $doc.tex >ptests/$doc-$fenc-term.log || $rc=3
+ mv $doc-$ienc.txt $doc-$ienc.log $doc-tmp.tex ptests/
+ diff ptests/$doc-$ienc.txt $srcdir/tests/fn-$fenc.txt || $rc=4
+
+done
+done
+
+
+exit $rc
diff --git a/Build/source/texk/web2c/tests/fn-euc.txt b/Build/source/texk/web2c/tests/fn-euc.txt
new file mode 100644
index 00000000000..69708afd687
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fn-euc.txt
@@ -0,0 +1 @@
+abc ¦ ѧҧ ŷϿ
diff --git a/Build/source/texk/web2c/tests/fn-sjis.txt b/Build/source/texk/web2c/tests/fn-sjis.txt
new file mode 100644
index 00000000000..d07128a2af2
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fn-sjis.txt
@@ -0,0 +1 @@
+abc pqr A Vnl
diff --git a/Build/source/texk/web2c/tests/fn-utf8.txt b/Build/source/texk/web2c/tests/fn-utf8.txt
new file mode 100644
index 00000000000..12357a2e656
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fn-utf8.txt
@@ -0,0 +1 @@
+abc αβγ абв あア※¥ 天地人
diff --git a/Build/source/texk/web2c/tests/fn±×÷§¶-utf8.tex b/Build/source/texk/web2c/tests/fn±×÷§¶-utf8.tex
new file mode 100644
index 00000000000..6c616246ace
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fn±×÷§¶-utf8.tex
@@ -0,0 +1,8 @@
+% fn±×÷§¶-utf8.tex
+% UTF-8 encoding, including Latin-1 & JIS X 0208 characters
+\catcode`\{=1
+\catcode`\}=2
+
+\immediate\write16{JOB[\jobname] :: We are in fn±×÷§¶-utf8.tex}
+
+\relax\end
diff --git a/Build/source/texk/web2c/tests/fnさざ波-euc.tex b/Build/source/texk/web2c/tests/fnさざ波-euc.tex
new file mode 100644
index 00000000000..e43eb57e140
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fnさざ波-euc.tex
@@ -0,0 +1,23 @@
+% fn-euc.tex
+% EUC-JP encoding
+\catcode`\{=1
+\catcode`\}=2
+
+\immediate\write16{JOB[\jobname] :: We are in fn-euc.tex}
+
+\immediate\openout0=\jobname.txt
+\immediate\write0{abc ¦ ѧҧ ŷϿ}
+\immediate\closeout0
+
+\immediate\openout1=fn-euc-tmp.tex
+\immediate\write1{\relax}
+\immediate\closeout1
+
+% current directory
+\input "|cat fn-euc-tmp.tex"
+\input fn-euc-tmp.tex
+
+% vir kpathsearch
+\input fnޡߡ-utf8.tex
+
+\relax\end
diff --git a/Build/source/texk/web2c/tests/fnさざ波-sjis.tex b/Build/source/texk/web2c/tests/fnさざ波-sjis.tex
new file mode 100644
index 00000000000..47318ed4ddc
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fnさざ波-sjis.tex
@@ -0,0 +1,23 @@
+% fng-sjis.tex
+% Shift_JIS encoding
+\catcode`\{=1
+\catcode`\}=2
+
+\immediate\write16{JOB[\jobname] :: We are in fng-sjis.tex}
+
+\immediate\openout0=\jobname.txt
+\immediate\write0{abc pqr A Vnl}
+\immediate\closeout0
+
+\immediate\openout1=fng-sjis-tmp.tex
+\immediate\write1{\relax}
+\immediate\closeout1
+
+% current directory
+\input "|cat fng-sjis-tmp.tex"
+\input fng-sjis-tmp.tex
+
+% vir kpathsearch
+\input fn}~-utf8.tex
+
+\relax\end
diff --git a/Build/source/texk/web2c/tests/fnさざ波-utf8.tex b/Build/source/texk/web2c/tests/fnさざ波-utf8.tex
new file mode 100644
index 00000000000..70d1e53ba78
--- /dev/null
+++ b/Build/source/texk/web2c/tests/fnさざ波-utf8.tex
@@ -0,0 +1,23 @@
+% fnさざ波-utf8.tex
+% UTF-8 encoding
+\catcode`\{=1
+\catcode`\}=2
+
+\immediate\write16{JOB[\jobname] :: We are in fnさざ波-utf8.tex}
+
+\immediate\openout0=\jobname.txt
+\immediate\write0{abc αβγ абв あア※¥ 天地人}
+\immediate\closeout0
+
+\immediate\openout1=fnさざ波-utf8-tmp.tex
+\immediate\write1{\relax}
+\immediate\closeout1
+
+% current directory
+\input "|cat fnさざ波-utf8-tmp.tex"
+\input fnさざ波-utf8-tmp.tex
+
+% vir kpathsearch
+\input fn±×÷§¶-utf8.tex
+
+\relax\end
diff --git a/Build/source/texk/web2c/uptexdir/ChangeLog b/Build/source/texk/web2c/uptexdir/ChangeLog
index 103ecd91921..3f5f7898490 100644
--- a/Build/source/texk/web2c/uptexdir/ChangeLog
+++ b/Build/source/texk/web2c/uptexdir/ChangeLog
@@ -1,6 +1,20 @@
+2022-12-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp>
+
+ * wcfname.test, am/ptex.am:
+ Add tests for file names with JIS X 0208 characters
+ in `uptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
+2022-12-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * uptex.defines, kanji.h, am/uptex.am:
+ Accept file names with JIS X 0208 characters
+ in `uptex --kanji-internal={euc,sjis}`.
+ https://github.com/texjporg/tex-jp-build/issues/136
+
2022-12-12 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
- * uptex—m.ch: Fix a bug that \inhibitxspcode after Japanese
+ * uptex-m.ch: Fix a bug that \inhibitxspcode after Japanese
character was ineffective due to lack of mod max_cjk_val.
See comments on 2022-12-11.
https://github.com/texjporg/tex-jp-build/issues/32
diff --git a/Build/source/texk/web2c/uptexdir/am/uptex.am b/Build/source/texk/web2c/uptexdir/am/uptex.am
index b3f1f8f3807..89d8695edb1 100644
--- a/Build/source/texk/web2c/uptexdir/am/uptex.am
+++ b/Build/source/texk/web2c/uptexdir/am/uptex.am
@@ -165,7 +165,7 @@ EXTRA_DIST += \
uptexdir/ChangeLog
# upTeX Tests
-uptex_tests = uptexdir/uptriptest.test uptexdir/upver.test uptexdir/upkcat.test
+uptex_tests = uptexdir/uptriptest.test uptexdir/upver.test uptexdir/upkcat.test uptexdir/wcfname.test
uptexdir/uptriptest.log: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT)
uptexdir/upver.log uptexdir/upkcat.log: uptex$(EXEEXT)
upweb_tests = \
diff --git a/Build/source/texk/web2c/uptexdir/kanji.h b/Build/source/texk/web2c/uptexdir/kanji.h
index cbdd47f2453..6109288af74 100644
--- a/Build/source/texk/web2c/uptexdir/kanji.h
+++ b/Build/source/texk/web2c/uptexdir/kanji.h
@@ -66,6 +66,7 @@ extern void init_default_kanji_select (void);
#else
#define inputline2(fp,buff,pos,size) input_line2(fp,buff,NULL,pos,size,NULL)
#endif
+#define ptencconvfirstline(pos,limit,buff,size) ptenc_conv_first_line(pos,limit,buff,size)
extern void init_kanji (const_string file_str, const_string internal_str);
extern void dump_kanji (gzFile fp);
diff --git a/Build/source/texk/web2c/uptexdir/uptex.defines b/Build/source/texk/web2c/uptexdir/uptex.defines
index 33f9a01c242..d9b4e341912 100644
--- a/Build/source/texk/web2c/uptexdir/uptex.defines
+++ b/Build/source/texk/web2c/uptexdir/uptex.defines
@@ -30,6 +30,7 @@
@define function putc2 ();
@define function fputs2 ();
@define function inputline2 ();
+@define function ptencconvfirstline ();
@define function fromJIS ();
@define function fromEUC ();
diff --git a/Build/source/texk/web2c/uptexdir/wcfname.test b/Build/source/texk/web2c/uptexdir/wcfname.test
new file mode 100755
index 00000000000..9813b8a32e2
--- /dev/null
+++ b/Build/source/texk/web2c/uptexdir/wcfname.test
@@ -0,0 +1,69 @@
+#! /bin/sh -vx
+#
+# Copyright 2022 Japanese TeX Development Community <issue@texjp.org>
+# You may freely use, modify and/or distribute this file.
+
+test -d uptests || mkdir -p uptests
+rm -f uptests/fn*.log uptests/fn*.txt uptests/fn*.tex
+
+rc=0
+
+TEXMFCNF=$srcdir/../kpathsea
+TEXINPUTS=$srcdir/tests:.
+export TEXMFCNF TEXINPUTS
+
+# upTeX internal encoding
+fenc="utf8"
+for ienc in euc sjis uptex; do
+for doc in fnさざ波-$fenc; do
+
+ if [ "$COMSPEC" != "" ]; then
+ echo "*** We guess OS is Windows."
+ if [ $ienc = uptex ]; then
+ command_line_encoding=utf8
+ export command_line_encoding
+ else
+ command_line_encoding=none
+ export command_line_encoding
+ fi
+ fi
+
+ echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc
+ ./uptex -ini -interaction nonstopmode -jobname=$doc-$ienc -kanji=$fenc --kanji-internal=$ienc --shell-escape $doc.tex >uptests/$doc-$ienc-term.log || $rc=1
+ mv $doc-$ienc.txt $doc-$ienc.log $doc-tmp.tex uptests/
+ diff uptests/$doc-$ienc.txt $srcdir/tests/fn-utf8.txt || $rc=2
+
+done
+done
+
+
+# pTeX compatible mode, regacy encoding
+for fenc in sjis euc; do
+for doc in fnさざ波-$fenc; do
+
+ ienc=$fenc
+ if [ "$COMSPEC" != "" ]; then
+ echo "*** We guess OS is Windows."
+ if [ $fenc != euc ]; then ienc="sjis"; fi
+ if [ $ienc = uptex ]; then
+ command_line_encoding=utf8
+ export command_line_encoding
+ else
+ command_line_encoding=none
+ export command_line_encoding
+ fi
+ else
+ echo "*** We guess OS is not Windows."
+ if [ $fenc != sjis ]; then ienc="euc"; fi
+ fi
+
+ echo '>>> Document:'$doc ' File Encoding:'$fenc ' Internal Encoding:'$ienc
+ ./uptex -ini -interaction nonstopmode -jobname=$doc-$ienc -kanji=$fenc --kanji-internal=$ienc --shell-escape $doc.tex >uptests/$doc-$fenc-term.log || $rc=3
+ mv $doc-$ienc.txt $doc-$ienc.log $doc-tmp.tex uptests/
+ diff uptests/$doc-$ienc.txt $srcdir/tests/fn-$fenc.txt || $rc=4
+
+done
+done
+
+
+exit $rc