[latex3-commits] [git/LaTeX3-latex3-latex3] master: Handle file names with spaces correctly (fixes #642) (7ac253b59)
Joseph Wright
joseph.wright at morningstar2.co.uk
Wed Oct 23 13:26:37 CEST 2019
Repository : https://github.com/latex3/latex3
On branch : master
Link : https://github.com/latex3/latex3/commit/7ac253b59fe96d6a8fe0a3b14b0937f0d612d697
>---------------------------------------------------------------
commit 7ac253b59fe96d6a8fe0a3b14b0937f0d612d697
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Wed Oct 23 12:26:37 2019 +0100
Handle file names with spaces correctly (fixes #642)
>---------------------------------------------------------------
7ac253b59fe96d6a8fe0a3b14b0937f0d612d697
l3kernel/CHANGELOG.md | 5 +++++
l3kernel/l3file.dtx | 18 +++++++++++++++---
l3kernel/testfiles/m3file001.luatex.tlg | 2 ++
l3kernel/testfiles/m3file001.lvt | 2 ++
l3kernel/testfiles/m3file001.ptex.tlg | 2 ++
l3kernel/testfiles/m3file001.tlg | 2 ++
l3kernel/testfiles/m3file001.uptex.tlg | 2 ++
l3kernel/testfiles/m3file001.xetex.tlg | 2 ++
.../testfiles/{filetest.txt => support/file test.txt} | 0
9 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index 6b70a9cd6..17c3c7595 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+### Fixed
+
+- `\file_if_exist:n(TF)`, etc., when dealing with file names containing
+ spaces (see #642)
+
## [2019-10-21]
### Added
diff --git a/l3kernel/l3file.dtx b/l3kernel/l3file.dtx
index 19807253e..c09a72e4c 100644
--- a/l3kernel/l3file.dtx
+++ b/l3kernel/l3file.dtx
@@ -2563,9 +2563,20 @@
%
% \begin{macro}{\@@_file_size:n}
% A copy of the primitive where it's available, or the \LuaTeX{}
-% equivalent if relevant.
+% equivalent if relevant. \XeTeX{} treats any quote chars as part of
+% the name, so they must be removed. \LuaTeX{} also requires no quote chars
+% here.
% \begin{macrocode}
-\cs_new_eq:NN \@@_file_size:n \tex_filesize:D
+\sys_if_engine_xetex:TF
+ {
+ \cs_new:Npn \@@_file_size:n #1
+ {
+ \exp_args:Ne \tex_filesize:D
+ { \@@_file_size:w #1 " #1 " \q_stop }
+ }
+ \cs_new:Npn \@@_file_size:w #1 " #2 " #3 \q_stop {#2}
+ }
+ { \cs_new_eq:NN \@@_file_size:n \tex_filesize:D }
\sys_if_engine_luatex:T
{
\cs_gset:Npn \@@_file_size:n #1
@@ -2573,9 +2584,10 @@
\lua_now:e
{
l3kernel.filesize
- ( " \lua_escape:e {#1} " )
+ ( " \lua_escape:e { \@@_file_size:w #1 " #1 " \q_stop } " )
}
}
+ \cs_new:Npn \@@_file_size:w #1 " #2 " #3 \q_stop {#2}
}
% \end{macrocode}
% \end{macro}
diff --git a/l3kernel/testfiles/m3file001.luatex.tlg b/l3kernel/testfiles/m3file001.luatex.tlg
index 0ac157e83..1318da9b0 100644
--- a/l3kernel/testfiles/m3file001.luatex.tlg
+++ b/l3kernel/testfiles/m3file001.luatex.tlg
@@ -12,6 +12,8 @@ TRUE
TRUE
FALSE
FALSE
+TRUE
+TRUE
============================================================
============================================================
TEST 2: The full name of files by expansion
diff --git a/l3kernel/testfiles/m3file001.lvt b/l3kernel/testfiles/m3file001.lvt
index 4e02e8550..ac933c0d6 100644
--- a/l3kernel/testfiles/m3file001.lvt
+++ b/l3kernel/testfiles/m3file001.lvt
@@ -43,6 +43,8 @@
\file_if_exist:nTF {\filea}{\TRUE}{\FALSE}
\file_if_exist:nTF {NotAFile.xxx.yyy.zzz}{\TRUE}{\FALSE}
\file_if_exist:nTF {\fileb}{\TRUE}{\FALSE}
+ \file_if_exist:nTF {file~test.txt}{\TRUE}{\FALSE}
+ \file_if_exist:nTF {"file~test.txt"}{\TRUE}{\FALSE}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/l3kernel/testfiles/m3file001.ptex.tlg b/l3kernel/testfiles/m3file001.ptex.tlg
index 09c3dcd2f..d7565fb1f 100644
--- a/l3kernel/testfiles/m3file001.ptex.tlg
+++ b/l3kernel/testfiles/m3file001.ptex.tlg
@@ -12,6 +12,8 @@ TRUE
TRUE
FALSE
FALSE
+TRUE
+TRUE
============================================================
============================================================
TEST 2: The full name of files by expansion
diff --git a/l3kernel/testfiles/m3file001.tlg b/l3kernel/testfiles/m3file001.tlg
index c7030aa3e..5a2eff094 100644
--- a/l3kernel/testfiles/m3file001.tlg
+++ b/l3kernel/testfiles/m3file001.tlg
@@ -12,6 +12,8 @@ TRUE
TRUE
FALSE
FALSE
+TRUE
+TRUE
============================================================
============================================================
TEST 2: The full name of files by expansion
diff --git a/l3kernel/testfiles/m3file001.uptex.tlg b/l3kernel/testfiles/m3file001.uptex.tlg
index 09c3dcd2f..d7565fb1f 100644
--- a/l3kernel/testfiles/m3file001.uptex.tlg
+++ b/l3kernel/testfiles/m3file001.uptex.tlg
@@ -12,6 +12,8 @@ TRUE
TRUE
FALSE
FALSE
+TRUE
+TRUE
============================================================
============================================================
TEST 2: The full name of files by expansion
diff --git a/l3kernel/testfiles/m3file001.xetex.tlg b/l3kernel/testfiles/m3file001.xetex.tlg
index b972c7e3d..bfea4b4c0 100644
--- a/l3kernel/testfiles/m3file001.xetex.tlg
+++ b/l3kernel/testfiles/m3file001.xetex.tlg
@@ -12,6 +12,8 @@ TRUE
TRUE
FALSE
FALSE
+TRUE
+TRUE
============================================================
============================================================
TEST 2: The full name of files by expansion
diff --git a/l3kernel/testfiles/filetest.txt b/l3kernel/testfiles/support/file test.txt
similarity index 100%
copy from l3kernel/testfiles/filetest.txt
copy to l3kernel/testfiles/support/file test.txt
More information about the latex3-commits
mailing list