summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHironobu Yamashita <h.y.acetaminophen@gmail.com>2022-02-05 23:54:51 +0000
committerHironobu Yamashita <h.y.acetaminophen@gmail.com>2022-02-05 23:54:51 +0000
commite665a6c3a8f6b343142332c31758ca1e18159d4b (patch)
treeb2ef45236b8c32062e25be082dfed4cd3fc86408
parentff56ea3f9875d8a0b631c7b13248791da7266c86 (diff)
ptex: quote in \write18, non-JP file name (H. Kitagawa)
git-svn-id: svn://tug.org/texlive/trunk@61906 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Build/source/texk/ptexenc/ChangeLog4
-rw-r--r--Build/source/texk/ptexenc/ptexenc.c9
-rw-r--r--Build/source/texk/ptexenc/ptexenc/ptexenc.h3
-rw-r--r--Build/source/texk/web2c/eptexdir/ChangeLog4
-rw-r--r--Build/source/texk/web2c/eptexdir/eptex.defines2
-rw-r--r--Build/source/texk/web2c/euptexdir/ChangeLog4
-rw-r--r--Build/source/texk/web2c/euptexdir/euptex.defines1
-rw-r--r--Build/source/texk/web2c/ptexdir/ChangeLog7
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex-base.ch57
-rw-r--r--Build/source/texk/web2c/ptexdir/ptex.defines2
-rw-r--r--Build/source/texk/web2c/uptexdir/ChangeLog4
-rw-r--r--Build/source/texk/web2c/uptexdir/uptex.defines1
12 files changed, 96 insertions, 2 deletions
diff --git a/Build/source/texk/ptexenc/ChangeLog b/Build/source/texk/ptexenc/ChangeLog
index bc121f89771..da27cab596f 100644
--- a/Build/source/texk/ptexenc/ChangeLog
+++ b/Build/source/texk/ptexenc/ChangeLog
@@ -1,3 +1,7 @@
+2022-02-05 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * ptexenc.c, ptexenc/ptexenc.h: Add is_terminalUTF8.
+
2022-01-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* ptexenc.c, ptexenc/ptexenc.h, unicode.c, ptexenc/unicode.h:
diff --git a/Build/source/texk/ptexenc/ptexenc.c b/Build/source/texk/ptexenc/ptexenc.c
index ee28d39ddab..35f0fe9b7f0 100644
--- a/Build/source/texk/ptexenc/ptexenc.c
+++ b/Build/source/texk/ptexenc/ptexenc.c
@@ -222,6 +222,15 @@ boolean is_internalUPTEX(void)
return (internal_enc == ENC_UPTEX);
}
+boolean is_terminalUTF8(void)
+{
+#ifdef WIN32
+ return false;
+#else
+ get_terminal_enc(); return (terminal_enc == ENC_UTF8);
+#endif
+}
+
/* check char range */
boolean ismultichr (int length, int nth, int c)
diff --git a/Build/source/texk/ptexenc/ptexenc/ptexenc.h b/Build/source/texk/ptexenc/ptexenc/ptexenc.h
index e1641978237..5ed63e8c93b 100644
--- a/Build/source/texk/ptexenc/ptexenc/ptexenc.h
+++ b/Build/source/texk/ptexenc/ptexenc/ptexenc.h
@@ -52,6 +52,9 @@ extern PTENCDLL boolean is_internalUPTEX(void);
#define isinternalEUC is_internalEUC
#define isinternalUPTEX is_internalUPTEX
+extern PTENCDLL boolean is_terminalUTF8(void);
+#define isterminalUTF8 is_terminalUTF8
+
/* check char range */
extern PTENCDLL boolean ismultichr (int length, int nth, int c);
extern PTENCDLL boolean iskanji1(int c);
diff --git a/Build/source/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog
index 1a80cdacd32..9e22b2ac306 100644
--- a/Build/source/texk/web2c/eptexdir/ChangeLog
+++ b/Build/source/texk/web2c/eptexdir/ChangeLog
@@ -1,3 +1,7 @@
+2022-02-05 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * eptex.defines: Add isinternalUPTEX and isterminalUTF8.
+
2022-01-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* eptex.ech, etex.ch0, etex.ch1, pdfutils.ch:
diff --git a/Build/source/texk/web2c/eptexdir/eptex.defines b/Build/source/texk/web2c/eptexdir/eptex.defines
index fc154904830..165d23acee1 100644
--- a/Build/source/texk/web2c/eptexdir/eptex.defines
+++ b/Build/source/texk/web2c/eptexdir/eptex.defines
@@ -8,6 +8,8 @@
@define function getencstring;
@define function setencstring ();
+@define function isinternalUPTEX;
+@define function isterminalUTF8;
@define function iskanji1 ();
@define function multistrlen ();
diff --git a/Build/source/texk/web2c/euptexdir/ChangeLog b/Build/source/texk/web2c/euptexdir/ChangeLog
index 72a0056a658..9e99b82e96a 100644
--- a/Build/source/texk/web2c/euptexdir/ChangeLog
+++ b/Build/source/texk/web2c/euptexdir/ChangeLog
@@ -1,3 +1,7 @@
+2022-02-05 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * euptex.defines: Add isterminalUTF8.
+
2022-01-22 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* euptex.ch1, pdfstrcmp-eup-post.ch, pdfstrcmp-eup-pre.ch:
diff --git a/Build/source/texk/web2c/euptexdir/euptex.defines b/Build/source/texk/web2c/euptexdir/euptex.defines
index 0fb52bbdd86..ac6960dcefc 100644
--- a/Build/source/texk/web2c/euptexdir/euptex.defines
+++ b/Build/source/texk/web2c/euptexdir/euptex.defines
@@ -10,6 +10,7 @@
@define function setencstring ();
@define procedure setpriorfileenc;
@define function isinternalUPTEX;
+@define function isterminalUTF8;
@define function iskanji1 ();
@define function is1stchr ();
diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog
index a74cc8e1597..d854aa2b4f0 100644
--- a/Build/source/texk/web2c/ptexdir/ChangeLog
+++ b/Build/source/texk/web2c/ptexdir/ChangeLog
@@ -1,3 +1,10 @@
+2022-02-05 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * ptex-base.ch: Fix for \write18 with quotation.
+ Convert non-Japanese non-ASCII bytes in name_of_file to
+ "^^" format. (Thanks Yukimasa Morimi)
+ * ptex.defines: Add isinternalUPTEX and isterminalUTF8.
+
2022-01-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
* ptex-base.ch: Fix \chardef code 256 in math.
diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch
index d6e205cecb3..6a85178de99 100644
--- a/Build/source/texk/web2c/ptexdir/ptex-base.ch
+++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch
@@ -2854,6 +2854,59 @@ if #<>0 then
@y
@z
+@x [29.519]
+@d append_to_name(#)==begin c:=#; if not (c="""") then begin incr(k);
+ if k<=file_name_size then name_of_file[k]:=xchr[c];
+ end end
+@y
+@d append_to_name_char(#)==begin incr(k);
+ if k<=file_name_size then name_of_file[k]:=xchr[#];
+ end
+
+@d append_to_name_hex(#)==if (#)<10 then append_to_name_char((#)+"0")
+ else append_to_name_char((#)-10+"a")
+
+@d append_to_name(#)==begin c:=#; if not (c="""") then append_to_name_char(c); end
+
+@d append_to_name_str_pool(#)==begin
+ if (#)>=@"100 then begin
+ c:=(#)-@"100;
+ append_to_name_char(c);
+ end else begin
+ c:=#;
+ if (c>=@"80) and (not isinternalUPTEX) and isterminalUTF8 then begin
+ append_to_name_char("^");
+ append_to_name_char("^");
+ append_to_name_hex(c div 16);
+ append_to_name_hex(c mod 16);
+ end else if not (c="""") then
+ append_to_name_char(c);
+ end
+end
+@z
+
+@x l.10389
+name_of_file:= xmalloc_array (ASCII_code, length(a)+length(n)+length(e)+1);
+@y
+name_of_file:= xmalloc_array (ASCII_code, (length(a)+length(n)+length(e))*4+1);
+@z
+
+@x [29.519] pack_file_name
+for j:=str_start[a] to str_start[a+1]-1 do append_to_name(so(str_pool[j]));
+for j:=str_start[n] to str_start[n+1]-1 do append_to_name(so(str_pool[j]));
+for j:=str_start[e] to str_start[e+1]-1 do append_to_name(so(str_pool[j]));
+@y
+for j:=str_start[a] to str_start[a+1]-1 do append_to_name_str_pool(so(str_pool[j]));
+for j:=str_start[n] to str_start[n+1]-1 do append_to_name_str_pool(so(str_pool[j]));
+for j:=str_start[e] to str_start[e+1]-1 do append_to_name_str_pool(so(str_pool[j]));
+@z
+
+@x l.10444
+name_of_file := xmalloc_array (ASCII_code, n+(b-a+1)+format_ext_length+1);
+@y
+name_of_file := xmalloc_array (ASCII_code, (n+(b-a+1)+format_ext_length)*4+1);
+@z
+
@x [29.526] l.10668 - pTeX: scan file name
loop@+begin if (cur_cmd>other_char)or(cur_chr>255) then {not a character}
begin back_input; goto done;
@@ -6687,10 +6740,10 @@ end
str_pool[str_start[str_ptr]])));
@y
if name_of_file then libc_free(name_of_file);
- name_of_file := xmalloc(cur_length * 3 + 2);
+ name_of_file := xmalloc(cur_length*4+1);
k := 0;
for d:=0 to cur_length-1 do
- append_to_name(str_pool[str_start[str_ptr]+d]);
+ append_to_name_char(str_pool[str_start[str_ptr]+d]); {do not remove quote}
name_of_file[k+1] := 0;
runsystem_ret := runsystem(conststringcast(name_of_file+1));
@z
diff --git a/Build/source/texk/web2c/ptexdir/ptex.defines b/Build/source/texk/web2c/ptexdir/ptex.defines
index 462ee6227ea..7e3103f930b 100644
--- a/Build/source/texk/web2c/ptexdir/ptex.defines
+++ b/Build/source/texk/web2c/ptexdir/ptex.defines
@@ -4,6 +4,8 @@
@define function getencstring;
@define function setencstring ();
+@define function isinternalUPTEX;
+@define function isterminalUTF8;
@define function iskanji1 ();
@define function multistrlen ();
diff --git a/Build/source/texk/web2c/uptexdir/ChangeLog b/Build/source/texk/web2c/uptexdir/ChangeLog
index e7de0652135..242537d6007 100644
--- a/Build/source/texk/web2c/uptexdir/ChangeLog
+++ b/Build/source/texk/web2c/uptexdir/ChangeLog
@@ -1,3 +1,7 @@
+2022-02-05 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
+
+ * uptex.defines: Add isterminalUTF8.
+
2022-01-29 Hironobu Yamashita <h.y.acetaminophen@gmail.com>
* uptex-m.ch: Adapt to ptex-base.ch fixes.
diff --git a/Build/source/texk/web2c/uptexdir/uptex.defines b/Build/source/texk/web2c/uptexdir/uptex.defines
index 8afdb7e109a..81adea6de5d 100644
--- a/Build/source/texk/web2c/uptexdir/uptex.defines
+++ b/Build/source/texk/web2c/uptexdir/uptex.defines
@@ -11,6 +11,7 @@
@define procedure setpriorfileenc;
@define function isinternalUPTEX;
@define function isinternalEUC;
+@define function isterminalUTF8;
@define function iskanji1 ();
@define function is1stchr ();