[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