[latex3-commits] [git/LaTeX3-latex3-latex3] master: Added experimental \ior_shell_open:Nn (10683cf)

Joseph Wright joseph.wright at morningstar2.co.uk
Wed May 8 12:01:39 CEST 2019


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/10683cf64daf17be52faa3a63288883701350349

>---------------------------------------------------------------

commit 10683cf64daf17be52faa3a63288883701350349
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Wed May 8 11:01:22 2019 +0100

    Added experimental \ior_shell_open:Nn
    
    
    Muible


>---------------------------------------------------------------

10683cf64daf17be52faa3a63288883701350349
 l3experimental/l3image/l3image.dtx      |    2 +-
 l3kernel/CHANGELOG.md                   |    1 +
 l3kernel/l3candidates.dtx               |   52 +++++++++++++++++++++++++++++++
 l3kernel/testfiles/m3expl001.luatex.tlg |    3 ++
 l3kernel/testfiles/m3expl001.ptex.tlg   |    3 ++
 l3kernel/testfiles/m3expl001.tlg        |    3 ++
 l3kernel/testfiles/m3expl001.uptex.tlg  |    3 ++
 l3kernel/testfiles/m3expl001.xetex.tlg  |    3 ++
 l3kernel/testfiles/m3expl003.luatex.tlg |    3 ++
 l3kernel/testfiles/m3expl003.ptex.tlg   |    3 ++
 l3kernel/testfiles/m3expl003.tlg        |    3 ++
 l3kernel/testfiles/m3expl003.uptex.tlg  |    3 ++
 l3kernel/testfiles/m3expl003.xetex.tlg  |    3 ++
 13 files changed, 84 insertions(+), 1 deletion(-)

diff --git a/l3experimental/l3image/l3image.dtx b/l3experimental/l3image/l3image.dtx
index 5b49b02..384f8c5 100644
--- a/l3experimental/l3image/l3image.dtx
+++ b/l3experimental/l3image/l3image.dtx
@@ -331,7 +331,7 @@
 \cs_new_protected:Npn \@@_extract_bb_auxiv:nnn #1#2#3
   {
     \@@_read_bb_auxi:nnnn {#1} {#2}
-      { \tex_immediate:D \tex_openin:D \l_@@_tmp_ior = "|extractbb~#3-O~#1" ~ }
+      { \ior_shell_open:Nn \l_@@_tmp_ior { extractbb~#3-O~#1 } }
       { pipe-failed }
   }
 \cs_new_protected:Npn \image_read_bb:n #1
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index 0e053b1..4548b67 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -10,6 +10,7 @@ this project uses date-based 'snapshot' version identifiers.
 ### Added
 
 - Experimental driver-level interfaces for image inclusion
+- Experimental `\ior_shell_open:Nn`
 
 ## [2019-05-07]
 
diff --git a/l3kernel/l3candidates.dtx b/l3kernel/l3candidates.dtx
index 62ace00..bcbe991 100644
--- a/l3kernel/l3candidates.dtx
+++ b/l3kernel/l3candidates.dtx
@@ -356,6 +356,23 @@
 %   \end{verbatim}
 % \end{function}
 %
+% \begin{function}[added = 2019-05-08]{\ior_shell_open:Nn}
+%   \begin{syntax}
+%     \cs{ior_shell_open:nN} \meta{stream} \Arg{shell~command}
+%   \end{syntax}
+%   Opens the \emph{pseudo}-file created by the output of the
+%   \meta{shell command} for reading using \meta{stream} as the
+%   control sequence for access. If the \meta{stream} was already
+%   open it is closed before the new operation begins. The
+%   \meta{stream} is available for access immediately and will remain
+%   allocated to \meta{shell command} until a \cs{ior_close:N} instruction
+%   is given or the \TeX{} run ends.
+%   If piped system calls are disabled an error is raised.
+%
+%   For details of handling of the \meta{shell command}, see
+%   \cs{sys_shell_get:nnN(TF)}.
+% \end{function}
+%
 % \section{Additions to \pkg{l3flag}}
 %
 % \begin{function}[EXP, added = 2018-04-02]{\flag_raise_if_clear:n}
@@ -2326,6 +2343,41 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsection{Additions to \pkg{l3file}}
+%
+%    \begin{macrocode}
+%<@@=ior>
+%    \end{macrocode}
+%
+% \begin{macro}{\ior_shell_open:Nn}
+% \begin{macro}{\@@_shell_open:nN}
+%   Actually much easier than either the standard open or input versions!
+%    \begin{macrocode}
+\cs_new_protected:Npn \ior_shell_open:Nn #1#2
+  {
+    \sys_if_shell:TF
+      { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+      { \__kernel_msg_error:nn { kernel } { pipe-failed } }
+  }
+\cs_new_protected:Npn \@@_shell_open:nN #1#2
+  {
+    \tl_if_in:nnTF {#1} { " }
+      {
+        \__kernel_msg_error:nnx
+          { kernel } { quote-in-shell } {#1}
+      }
+      { \__kernel_ior_open:Nn #2 { "|#1" } }
+  }
+\__kernel_msg_new:nnnn { kernel } { pipe-failed }
+  { Cannot~run~piped~system~commands. }
+  {
+    LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
+    Try~the~"--shell-escape"~(or~"--enable-pipes")~option.
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
 % \subsection{Additions to \pkg{l3tl}}
 %
 % \subsubsection{Unicode case changing}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index d0e8f48..3bdd86b 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -6050,6 +6050,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 6e287bb..53768df 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -6045,6 +6045,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index d1f269a..bff46de 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -6045,6 +6045,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 8987378..7cbefa7 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -6042,6 +6042,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 6aa122f..2862998 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -6049,6 +6049,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index d0e8f48..3bdd86b 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -6050,6 +6050,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 6e287bb..53768df 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -6045,6 +6045,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index d1f269a..bff46de 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -6045,6 +6045,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 8987378..7cbefa7 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -6042,6 +6042,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 6aa122f..2862998 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -6049,6 +6049,9 @@ Defining \sys_shell_now:n on line ...
 Defining \sys_shell_now:x on line ...
 Defining \sys_shell_shipout:n on line ...
 Defining \sys_shell_shipout:x on line ...
+Defining \ior_shell_open:Nn on line ...
+Defining \__ior_shell_open:nN on line ...
+Defining message LaTeX/kernel/pipe-failed on line ...
 Defining \char_lower_case:N on line ...
 Defining \char_upper_case:N on line ...
 Defining \char_mixed_case:N on line ...





More information about the latex3-commits mailing list