summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3experimental
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-08-24 22:18:02 +0000
committerKarl Berry <karl@freefriends.org>2018-08-24 22:18:02 +0000
commit9067afb3f8bce172638d12a6f926ab82547590e6 (patch)
treefa13c48c4ed98564fbcee7220e7c1b76b4fbfefe /Master/texmf-dist/source/latex/l3experimental
parent8d113437aa8a3fae9dc8603507fa4aa9f64c5517 (diff)
l3 (24aug18)
git-svn-id: svn://tug.org/texlive/trunk@48476 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3experimental')
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx367
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins60
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
16 files changed, 459 insertions, 32 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
index 83f70fbf56d..6e1938bcfd8 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -263,7 +263,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2018-05-12}{}
+\ProvidesExplPackage{l3color}{2018-08-24}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
@@ -359,7 +359,7 @@
\cs_generate_variant:Nn \@@_convert:nnN { VV }
\cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4
{
- \str_if_eq_x:nnT {#1} { spot } % TO DO!!!
+ \str_if_eq:nnT {#1} { spot } % TO DO!!!
{ }
\tl_set:Nx #4
{ \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop }
@@ -551,7 +551,7 @@
\@@_extract:nNN {#2} \l_@@_next_model_tl \l_@@_next_value_tl
\tl_if_eq:NNF \l_@@_model_tl \l_@@_next_model_tl
{
- \str_if_eq_x:nnT { \l_@@_model_tl } { gray }
+ \str_if_eq:VnT \l_@@_model_tl { gray }
{
\use:x
{
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
index 57117b09282..8a2e9c76021 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
index 2e77000cff1..93b7f1ea6c4 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
index 0c0444a19a2..d5b6659f377 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
index aa2d19e1ae2..a5f8b3857b6 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
index 69ad970d71e..820f5d62140 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
index 844e488406d..949d50d2e93 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
index 17ac6474804..90f1e7b5b99 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index aa43879c0d7..6b710ac893e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
@@ -109,7 +109,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -320,7 +320,7 @@
% Scoping drawing elements is necessary to allowing nesting of subparts.
% These features have specific use requirements: the preconditions must be
% met. In particular, each type of drawing scope also constitutes a
-% group (\cs{groupd_being:}/\cs{group_end:} pair): as such, they must be
+% group (\cs{group_begin:}/\cs{group_end:} pair): as such, they must be
% nested correctly.
%
% \begin{function}{\draw_scope_begin:, \draw_scope_end:}
@@ -486,7 +486,7 @@
% error will occur.
% \end{function}
%
-% \begin{function}[EXP]{\draw_point_intersect_circles:nnnn}
+% \begin{function}[EXP]{\draw_point_intersect_circles:nnnnn}
% \begin{syntax}
% \cs{draw_point_intersect_circles:nnnnn}
% \Arg{center1} \Arg{radius1} \Arg{center2} \Arg{radius2} \Arg{root}
@@ -568,7 +568,7 @@
% \draw_path_lineto:n { 0cm , 2cm }
% \draw_path_lineto:n { 3cm , 2cm }
% \draw_path_curveto:nnn
-% { 3cm , 0cm } { 2cm , 0cm } { 1cm , 0 cm }
+% { 3cm , 0cm } { 2cm , 0cm } { 1cm , 0cm }
% \draw_path_use_clear:n { stroke }
% \draw_end:
% \end{demo}
@@ -1106,7 +1106,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2018-05-12}{}
+\ProvidesExplPackage{l3draw}{2018-08-24}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
index 7c8baf1855e..98879fbad52 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -234,7 +234,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2018-05-12}{}
+\ProvidesExplPackage{l3str-convert}{2018-08-24}{}
{L3 Experimental string encoding conversions}
% \end{macrocode}
%
@@ -1547,7 +1547,7 @@
{ \@@_unescape_string_repeat:NNNNNN ?? }
}
{
- \str_case_x:nnF {#2}
+ \str_case_e:nnF {#2}
{
{ \c_backslash_str } { 134 }
{ ( } { 50 }
@@ -2257,10 +2257,10 @@
}
\cs_new_protected:Npn \@@_decode_utf_xvi_bom:NN #1#2
{
- \str_if_eq_x:nnTF { #1#2 } { ^^ff ^^fe }
+ \str_if_eq:nnTF { #1#2 } { ^^ff ^^fe }
{ \@@_decode_utf_xvi:Nw 2 }
{
- \str_if_eq_x:nnTF { #1#2 } { ^^fe ^^ff }
+ \str_if_eq:nnTF { #1#2 } { ^^fe ^^ff }
{ \@@_decode_utf_xvi:Nw 1 }
{ \@@_decode_utf_xvi:Nw 1 #1#2 }
}
@@ -2548,10 +2548,10 @@
}
\cs_new_protected:Npn \@@_decode_utf_xxxii_bom:NNNN #1#2#3#4
{
- \str_if_eq_x:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
+ \str_if_eq:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
{ \@@_decode_utf_xxxii:Nw 2 }
{
- \str_if_eq_x:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
+ \str_if_eq:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
{ \@@_decode_utf_xxxii:Nw 1 }
{ \@@_decode_utf_xxxii:Nw 1 #1#2#3#4 }
}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index 469af8f1eab..449179e0efc 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -162,7 +162,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2018-05-12}{}
+\ProvidesExplPackage{l3str-format}{2018-08-24}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
new file mode 100644
index 00000000000..bd65524c0f3
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
@@ -0,0 +1,367 @@
+% \iffalse meta-comment
+%
+%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver|package>
+\RequirePackage{expl3}
+%</driver|package>
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3sys-shell} package\\ System shell functions^^A
+% }
+%
+% \author{^^A
+% The \LaTeX3 Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2018-08-24}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_cp:nn}
+% \begin{syntax}
+% \cs{sys_shell_cp:nn} \Arg{source} \Arg{dest}
+% \end{syntax}
+% Copies the files specified in the \meta{source} (which may include
+% wildcards) to the \meta{dest}. The file paths should be specified using
+% |/| as a path separator. Copying is \emph{not} recursive: only files at
+% the path level given are copied. If unrestricted shell escape is not
+% enabled, no action is attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-27]{\sys_shell_mkdir:n}
+% \begin{syntax}
+% \cs{sys_shell_mkdir:n} \Arg{directory}
+% \end{syntax}
+% Creates the \meta{directory}, which should should be specified using |/| as
+% a path separator. If unrestricted shell escape is not enabled, no action is
+% attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_mv:nn}
+% \begin{syntax}
+% \cs{sys_shell_mv:nn} \Arg{old} \Arg{new}
+% \end{syntax}
+% Moves the files from the \meta{old} to \meta{new} names/locations: the
+% \meta{old} names may include wildcards. In both arguments, |/| should be
+% used as the path separator. If unrestricted shell escape is not enabled, no
+% action is attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-27]{\sys_shell_rm:n}
+% \begin{syntax}
+% \cs{sys_shell_rm:n} \Arg{files}
+% \end{syntax}
+% Removes the \meta{files} (which may include wildcards). The file path should
+% be specified using |/| as a path separator. If unrestricted shell escape is
+% not enabled, no action is attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-27]{\sys_shell_rmdir:n}
+% \begin{syntax}
+% \cs{sys_shell_rmdir:n} \Arg{directory}
+% \end{syntax}
+% Removes the \meta{directory}, which should should be specified using |/| as
+% a path separator. If unrestricted shell escape is not enabled, no action is
+% attempted.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_get_pwd:N}
+% \begin{syntax}
+% \cs{sys_shell_get_pwd:N} \meta{str var}
+% \end{syntax}
+% Sets the \meta{str var} to the present working directory (the output of
+% |pwd| on Unix or |cd| on Windows). Note that on Windows this will contain
+% string backslash chars (|\|). If unrestricted shell escape is not
+% enabled, no action is taken.
+% \end{function}
+%
+% \begin{function}[added = 2018-07-28]{\sys_shell_split_ls:nN}
+% \begin{syntax}
+% \cs{sys_shell_split_ls:N} \Arg{glob} \meta{seq}
+% \end{syntax}
+% Sets the \meta{seq var} to contain one entry per directory listing
+% (equivalent to |ls -1| or |dir /b|) as specified by the \meta{glob}: the
+% entries are strings. If unrestricted shell is not enabled, no action is
+% taken.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3sys-shell} implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=sys>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\ProvidesExplPackage{l3sys-shell}{2018-08-24}{}
+ {L3 Experimental system shell functions}
+%</package>
+% \end{macrocode}
+%
+% \begin{macro}[EXP]{\@@_path_to_win:n}
+% \begin{macro}[EXP]{\@@_path_to_win:w}
+% \begin{macro}[EXP]{\@@_path_to_win:N}
+% A simple expandable search-and-replace for providing Windows-style paths.
+% \begin{macrocode}
+\cs_new:Npn \@@_path_to_win:n #1
+ {
+ \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \q_stop
+ }
+\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \q_stop
+ {
+ \@@_path_to_win:N #1 \q_nil
+ \tl_if_empty:nF {#2}
+ {
+ \c_space_tl
+ \@@_path_to_win:w #2 \q_stop
+ }
+ }
+\cs_new:Npn \@@_path_to_win:N #1
+ {
+ \quark_if_nil:NF #1
+ {
+ \token_if_eq_meaning:NNTF #1 /
+ { \c_backslash_str }
+ {#1}
+ \@@_path_to_win:N
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_cp:nn}
+% Simple Unix-like file copying: at some stage we may need a directory-only
+% version as Windows and Unix have different requirements here.
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_cp:nn #1#2
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \sys_shell_now:x
+ {
+ \sys_if_platform_unix:T
+ {
+ cp~-f~ \exp_not:N \tl_to_str:n {#1} ~
+ \exp_not:N \tl_to_str:n {#2}
+ }
+ \sys_if_platform_windows:T
+ {
+ copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~
+ \exp_not:N \@@_path_to_win:n {#2}
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_mkdir:n}
+% Windows (with the extensions) will automatically make directory trees but
+% issues a warning if the directory already exists: avoid by including a
+% test.
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_mkdir:n #1
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \sys_shell_now:x
+ {
+ \sys_if_platform_unix:T
+ { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
+ \sys_if_platform_windows:T
+ {
+ if~not~exist~
+ \exp_not:N \@@_path_to_win:n { #1 / nul } ~
+ mkdir~ \exp_not:N \@@_path_to_win:n {#1}
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_mv:nn}
+% On Windows we do not have a single |mv| operation, so copy-and-delete
+% instead.
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_mv:nn #1#2
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \sys_shell_now:x
+ {
+ \sys_if_platform_unix:T
+ {
+ mv~ \exp_not:N \tl_to_str:n {#1} ~
+ \exp_not:N \tl_to_str:n {#2}
+ }
+ \sys_if_platform_windows:T
+ {
+ copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~
+ \exp_not:N \@@_path_to_win:n {#2}
+ \token_to_str:N & \token_to_str:N &
+ del~/f~/q~\exp_not:N \@@_path_to_win:n {#1}
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_rm:n}
+% Deletion: obviously a big health warning here!
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_rm:n #1
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \sys_shell_now:x
+ {
+ \sys_if_platform_unix:T
+ { rm~-f~ \exp_not:N \tl_to_str:n {#1} }
+ \sys_if_platform_windows:T
+ { del~/f~/q~ \exp_not:N \@@_path_to_win:n {#1} }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_rmdir:n}
+% When removing a directory, we create it first as that avoids errors in
+% the Windows case.
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_rmdir:n #1
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \sys_shell_mkdir:n {#1}
+ \sys_shell_now:x
+ {
+ \sys_if_platform_unix:T
+ { rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
+ \sys_if_platform_windows:T
+ { rmdir~/s~/q~ \exp_not:N \@@_path_to_win:n {#1} }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_tmp_tl}
+% Scratch space.
+% \begin{macrocode}
+\tl_new:N \l_@@_tmp_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\sys_shell_get_pwd:N}
+% Getting the path is easy: the main work is avoiding loosing any
+% information. (This information can be obtained using the recorder file:
+% that does not require shell escape. However, it's hard to see how it might
+% be useful without the other file functions.)
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_get_pwd:N #1
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l_@@_tmp_tl
+ {
+ \char_set_catcode_other:N \exp_not:N \\
+ \char_set_catcode_other:N \exp_not:N \#
+ \char_set_catcode_other:N \exp_not:N \~
+ \char_set_catcode_other:N \exp_not:N \%
+ \char_set_catcode_space:N \exp_not:N \ %
+ }
+ {
+ \sys_if_platform_unix:T { pwd }
+ \sys_if_platform_windows:T { cd }
+ }
+ \str_set:NV #1 \exp_not:N \l_@@_tmp_tl
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_split_ls:nN}
+% Getting a one-per-line listing is easy enough. We need to set
+% \cs{ExplSyntaxOff} as that deals with the end-of-line character. After that,
+% just a case of tidying up. The listing always ends in |^^M| so there is an
+% extra entry to trim.
+% \begin{macrocode}
+\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2
+ {
+ \sys_if_shell_unrestricted:T
+ {
+ \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l_@@_tmp_tl
+ {
+ \ExplSyntaxOff
+ \char_set_catcode_other:N \exp_not:N \\
+ \char_set_catcode_other:N \exp_not:N \#
+ \char_set_catcode_other:N \exp_not:N \~
+ \char_set_catcode_other:N \exp_not:N \%
+ \char_set_catcode_other:n { 13 }
+ }
+ {
+ \sys_if_platform_unix:T { ls~-1~ #1 }
+ \sys_if_platform_windows:T { dir~/b~ #1 }
+ }
+ \str_set:NV \exp_not:N \l_@@_tmp_tl \exp_not:N \l_@@_tmp_tl
+ \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } }
+ \exp_not:N \l_@@_tmp_tl
+ \seq_pop_right:NN #2 \exp_not:N \l_@@_tmp_tl
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins
new file mode 100644
index 00000000000..33dbe46ea21
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins
@@ -0,0 +1,60 @@
+\iffalse meta-comment
+
+File l3sys-shell.ins Copyright (C) 2018 The LaTeX3 Project
+
+It may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in the file
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+ https://github.com/latex3/latex3
+
+for those people who are interested.
+
+-----------------------------------------------------------------------
+
+Any modification of this file should ensure that the copyright and
+license information is placed in the derived files.
+
+\fi
+
+\input l3docstrip.tex
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 2018 The LaTeX3 Project
+
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+\generate{\file{l3sys-shell.sty}
+ {
+ \from{l3sys-shell.dtx}{package}
+ }
+}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index 07091341102..7bd2ba64fdc 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -54,7 +54,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -673,7 +673,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2018-05-12}{}
+\ProvidesExplPackage{xcoffins}{2018-08-24}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index 12bde666f03..b3d17c383f7 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -59,7 +59,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -685,7 +685,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2018-05-12}{}
+\ProvidesExplPackage{l3galley}{2018-08-24}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
@@ -1173,7 +1173,7 @@
}
\cs_new_protected:Npn \@@_par_aux:N #1
{
- \str_if_eq_x:nnF {#1} { \s_@@_par_omit }
+ \str_if_eq:nnF {#1} { \s_@@_par_omit }
{
\@@_par_auxii:
#1
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index 86d7b88b73f..6c1be8c964b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Released 2018-05-12}
+% \date{Released 2018-08-24}
%
% \maketitle
%
@@ -732,7 +732,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2018-05-12}{}
+\ProvidesExplPackage{xgalley}{2018-08-24}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}