[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