[latex3-commits] [l3svn] r7309 - Simplify bits of code in l3file.dtx, correctly mark deprecations
noreply at latex-project.org
noreply at latex-project.org
Mon Jun 26 02:05:11 CEST 2017
Author: bruno
Date: 2017-06-26 02:05:10 +0200 (Mon, 26 Jun 2017)
New Revision: 7309
Modified:
trunk/l3kernel/l3deprecation.dtx
trunk/l3kernel/l3file.dtx
trunk/l3kernel/l3prg.dtx
trunk/l3kernel/testfiles/m3expl001.luatex.tlg
trunk/l3kernel/testfiles/m3expl001.ptex.tlg
trunk/l3kernel/testfiles/m3expl001.tlg
trunk/l3kernel/testfiles/m3expl001.uptex.tlg
trunk/l3kernel/testfiles/m3expl001.xetex.tlg
trunk/l3kernel/testfiles/m3expl003.luatex.tlg
trunk/l3kernel/testfiles/m3expl003.ptex.tlg
trunk/l3kernel/testfiles/m3expl003.tlg
trunk/l3kernel/testfiles/m3expl003.uptex.tlg
trunk/l3kernel/testfiles/m3expl003.xetex.tlg
trunk/l3kernel/testfiles/m3file001.lvt
trunk/l3kernel/testfiles/m3file001.ptex.tlg
trunk/l3kernel/testfiles/m3file001.tlg
trunk/l3kernel/testfiles/m3file001.uptex.tlg
trunk/l3kernel/testfiles/m3file001.xetex.tlg
Log:
Simplify bits of code in l3file.dtx, correctly mark deprecations
- Correctly add deprecated functions to l3deprecation.dtx and
make them produce warnings.
- Improve error recovery when the number of quotes is odd.
- Minor refactorings (removing unnecessary expansions of strings,
using "vector" operations on clists rather than mapping through
items,...).
- Use \__prg_break: machinery in \file_get_full_name:nN to treat
the current directories, the expl3 path and the LaTeX2e paths on
the same footing without having to concatenate lists every time.
- Correct which file name is picked up by \ior_open:NnTF.
- Add a few tests.
Modified: trunk/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/l3kernel/l3deprecation.dtx 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/l3deprecation.dtx 2017-06-26 00:05:10 UTC (rev 7309)
@@ -145,6 +145,12 @@
\@@_error:Nnn \c_minus_one { - 1 } { 2018-12-31 }
\@@_error:Nnn \sort_ordered: { \sort_return_same: } { 2018-12-31 }
\@@_error:Nnn \sort_reversed: { \sort_return_swapped: } { 2018-12-31 }
+ \@@_error:Nnn \g_file_current_name_tl { \g_file_curr_name_str } { 2018-12-31 }
+ \@@_error:Nnn \file_add_path:nN { \file_get_full_name:nN } { 2018-12-31 }
+ \@@_error:Nnn \file_path_include:n
+ { \seq_put_right:Nn \l_file_search_path_seq } { 2018-12-31 }
+ \@@_error:Nnn \file_path_remove:n
+ { \seq_remove_all:Nn \l_file_search_path_seq } { 2018-12-31 }
\cs_set_eq:NN \__fp_parse_round:Nw \__fp_parse_round_deprecation_error:Nw
\cs_set_eq:NN \deprecation_error: \scan_stop:
}
Modified: trunk/l3kernel/l3file.dtx
===================================================================
--- trunk/l3kernel/l3file.dtx 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/l3file.dtx 2017-06-26 00:05:10 UTC (rev 7309)
@@ -83,9 +83,9 @@
% make up the file name, thus the \meta{name} part may be thought of
% as the \enquote{job name} for the current file. Note that \TeX{} does
% not provide information on the \meta{ext} part for the main (top
-% level) file, which will always have an empty \meta{dir} component.
+% level) file and it will always have an empty \meta{dir} component.
% Also, the \meta{name} here will be equal to \cs{c_sys_jobname_str},
-% which may be different to the reql file name (if set using
+% which may be different from the real file name (if set using
% |--jobname|, for example).
% \end{variable}
%
@@ -120,7 +120,7 @@
% \begin{syntax}
% \cs{file_parse_full_name:nNNN} \Arg{full name} \meta{dir} \meta{name} \meta{ext}
% \end{syntax}
-% Parsers the \meta{file path} and splits it into three parts, each of
+% Parses the \meta{full name} and splits it into three parts, each of
% which is returned by settings the appropriate local string variable:
% \begin{itemize}
% \item The \meta{dir}: everything up to the last |/| (path separator)
@@ -135,6 +135,9 @@
% \meta{ext} in the \meta{file path}, the \TeX{} standard value
% \texttt{.tex} will be returned.
% \end{itemize}
+% This function does not expand the \meta{full name} before turning it
+% to a string. It assume that the \meta{full name} either contains no
+% quote (|"|) or is surrounded by a pair of quotes.
% \end{function}
%
% \begin{function}[updated = 2012-02-17]{\file_input:n}
@@ -615,12 +618,20 @@
% \begin{variable}{\l__file_base_name_str, \l__file_full_name_str}
% Used to store and transfer the file name (including extension)
% and (partial) file path whilst reading files. (The file base is the
-% basename plus any preceding directory name.)
+% base name plus any preceding directory name.)
% \end{variable}
%
+% \begin{function}[added = 2017-06-25]{\__file_missing:n}
+% \begin{syntax}
+% \cs{__file_missing:n} \Arg{name}
+% \end{syntax}
+% Expands the \meta{name} as per \cs{__file_name_sanitize:nN} then
+% produces an error message indicating that that file was not found.
+% \end{function}
+%
% \begin{function}[added = 2017-06-19]{\__file_name_sanitize:nN}
% \begin{syntax}
-% \cs{__file_name_sanitize:nn} \Arg{name} \Arg{str var}
+% \cs{__file_name_sanitize:nN} \Arg{name} \meta{str var}
% \end{syntax}
% Exhaustively-expands the \meta{name} with the exception of any
% category \meta{active} (catcode~$13$) tokens, which are not expanded.
@@ -628,14 +639,14 @@
% The \meta{str var} is then set to the \meta{sanitized name}.
% \end{function}
%
-% \begin{function}[added = 2017-06-19]
-% {\__file_name_quote:nN, \__file_name_quote:VN}
+% \begin{function}[added = 2017-06-19, updated = 2017-06-25]{\__file_name_quote:nN}
% \begin{syntax}
-% \cs{__file_name_quote:nn} \Arg{name} \Arg{str var}
+% \cs{__file_name_quote:nN} \Arg{name} \meta{str var}
% \end{syntax}
-% Set the \meta{str var} to the \meta{name} quoted using |"| at each
+% Expands the \meta{name} (without special-casing active tokens), then
+% sets the \meta{str var} to the \meta{name} quoted using |"| at each
% end if required by the presence of spaces in the \meta{name}. Any existing
-% |"| tokens will be removed.
+% |"| tokens is removed and if their number is odd an error is raised.
% \end{function}
%
% \subsection{Internal input--output functions}
@@ -693,7 +704,7 @@
% }
% The name of the current file should be available at all times.
% For the format the file name needs to be picked up at the start of the
-% file. In \LaTeXe{} package mode the current file name is collected from
+% run. In \LaTeXe{} package mode the current file name is collected from
% \tn{@currname}.
% \begin{macrocode}
\str_new:N \g_file_curr_dir_str
@@ -730,11 +741,8 @@
\cs_set:Npn \@@_tmp:w ##1 " ##2 " ##3 \q_stop { { } {##2} { } }
\seq_gput_right:Nx \g_@@_stack_seq
{
- \exp_after:wN \exp_after:wN \exp_after:wN
- \@@_tmp:w
- \exp_after:wN \tex_jobname:D
- \exp_after:wN " \tex_jobname:D "
- \q_stop
+ \exp_after:wN \@@_tmp:w \tex_jobname:D
+ " \tex_jobname:D " \q_stop
}
}
{
@@ -799,15 +807,6 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_saved_search_path_seq}
-% The current search path has to be saved for package use.
-% \begin{macrocode}
-%<*package>
-\seq_new:N \l_@@_saved_search_path_seq
-%</package>
-% \end{macrocode}
-% \end{variable}
-%
% \begin{variable}{\l_@@_tmp_seq}
% Scratch space for comma list conversion in package mode.
% \begin{macrocode}
@@ -818,7 +817,7 @@
% \end{variable}
%
% \begin{macro}[int]{\__file_name_sanitize:nN}
-% \begin{macro}[int]{\__file_name_quote:nN, \__file_name_quote:VN}
+% \begin{macro}[int]{\__file_name_quote:nN}
% \begin{macro}[int, aux]{\@@_name_sanitize_aux:n}
% For converting a token list to a string where active characters are treated
% as strings from the start. The logic to the quoting normalisation is the
@@ -842,28 +841,17 @@
}
\cs_new_protected:Npn \__file_name_quote:nN #1#2
{
- \str_set:Nn #2 {#1}
- \int_compare:nNnTF
+ \str_set:Nx #2 {#1}
+ \int_if_even:nF
+ { 0 \tl_map_function:NN #2 \@@_name_quote_aux:n }
{
- \int_mod:nn
- {
- 0 \tl_map_function:NN #2
- \@@_name_quote_aux:n
- }
- { 2 }
- }
- = 0
- {
- \tl_remove_all:Nn #2 { " }
- \tl_if_in:NnT #2 { ~ }
- { \str_set:Nx #2 { " \exp_not:V #2 " } }
- }
- {
\__msg_kernel_error:nnx
{ kernel } { unbalanced-quote-in-filename } {#2}
}
+ \tl_remove_all:Nn #2 { " }
+ \tl_if_in:NnT #2 { ~ }
+ { \str_set:Nx #2 { " \exp_not:V #2 " } }
}
-\cs_generate_variant:Nn \__file_name_quote:nN { V }
\cs_new:Npn \@@_name_quote_aux:n #1
{ \token_if_eq_charcode:NNT #1 " { + 1 } }
% \end{macrocode}
@@ -872,58 +860,41 @@
% \end{macro}
%
% \begin{macro}{\file_get_full_name:nN, \file_get_full_name:VN}
-% \begin{macro}[aux]{\@@_get_full_name_search:N}
-% The way to test if a file exists is to try to open it: if it does not
-% exist then \TeX{} will report end-of-file. For files which are in the
-% current directory, this is straight-forward. For other locations, a
-% search has to be made looking at each potential path in turn. The first
-% location is of course treated as the correct one. If nothing is found,
-% |#2| is returned empty.
+% \begin{macro}[aux]{\@@_get_full_name_search:nN}
+% The way to test if a file exists is to try to open it: if it does
+% not exist then \TeX{} will report end-of-file. A search is made
+% looking at each potential path in turn (starting from the current
+% directory). The first location is of course treated as the correct
+% one: this is done by jumping to \cs{__prg_break_point:}. If nothing
+% is found, |#2| is returned empty.
% \begin{macrocode}
\cs_new_protected:Npn \file_get_full_name:nN #1#2
{
\__file_name_sanitize:nN {#1} \l__file_base_name_str
- \__file_name_quote:VN \l__file_base_name_str \l__file_full_name_str
- \__ior_open:No \g_@@_internal_ior \l__file_full_name_str
- \ior_if_eof:NTF \g_@@_internal_ior
- { \@@_get_full_name_search:N #2 }
- { \str_set_eq:NN #2 \l__file_full_name_str }
- \ior_close:N \g_@@_internal_ior
- }
-\cs_generate_variant:Nn \file_get_full_name:nN { V }
-\cs_new_protected:Npn \@@_get_full_name_search:N #1
- {
- \str_clear:N #1
-%<*package>
- \cs_if_exist:NT \input at path
- {
- \seq_set_eq:NN \l_@@_saved_search_path_seq
- \l_file_search_path_seq
- \seq_set_split:NnV \l_@@_tmp_seq { , } \input at path
- \seq_concat:NNN \l_file_search_path_seq
- \l_file_search_path_seq \l_@@_tmp_seq
- }
-%</package>
+ \@@_get_full_name_search:nN { } \use:n
\seq_map_inline:Nn \l_file_search_path_seq
- {
- \str_set:Nx \l__file_full_name_str
- { \tl_to_str:n {##1} / \l__file_base_name_str }
- \__file_name_quote:VN \l__file_full_name_str \l__file_full_name_str
- \__ior_open:NV \g_@@_internal_ior \l__file_full_name_str
- \ior_if_eof:NF \g_@@_internal_ior
- {
- \str_set_eq:NN #1 \l__file_full_name_str
- \seq_map_break:
- }
- }
+ { \@@_get_full_name_search:nN { ##1 / } \seq_map_break:n }
%<*package>
\cs_if_exist:NT \input at path
{
- \seq_set_eq:NN \l_file_search_path_seq
- \l_@@_saved_search_path_seq
+ \clist_map_inline:Nn \input at path
+ { \@@_get_full_name_search:nN { ##1 / } \clist_map_break:n }
}
%</package>
+ \str_clear:N \l__file_full_name_str
+ \__prg_break_point:
+ \str_set_eq:NN #2 \l__file_full_name_str
+ \ior_close:N \g_@@_internal_ior
}
+\cs_generate_variant:Nn \file_get_full_name:nN { V }
+\cs_new_protected:Npn \@@_get_full_name_search:nN #1#2
+ {
+ \__file_name_quote:nN
+ { \tl_to_str:n {#1} \l__file_base_name_str }
+ \l__file_full_name_str
+ \__ior_open:No \g_@@_internal_ior \l__file_full_name_str
+ \ior_if_eof:NF \g_@@_internal_ior { #2 { \__prg_break: } }
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -932,7 +903,7 @@
% The test for the existence of a file is a wrapper around the function to
% add a path to a file. If the file was found, the path will contain
% something, whereas if the file was not located then the return value
-% will be \cs{q_no_value}.
+% will be empty.
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
{
@@ -944,8 +915,19 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[int]{\__file_missing:n}
+% An error message for a missing file, also used in \cs{ior_open:Nn}.
+% \begin{macrocode}
+\cs_new_protected:Npn \__file_missing:n #1
+ {
+ \__file_name_sanitize:nN {#1} \l__file_base_name_str
+ \__msg_kernel_error:nnx { kernel } { file-not-found }
+ { \l__file_base_name_str }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\file_input:n}
-% \begin{macro}[aux]{\@@_missing:n}
% \begin{macro}[aux]{\@@_input:n, \@@_input:V}
% \begin{macro}[aux]{\@@_input_aux:n, \@@_input_aux:o}
% \begin{macro}[aux]{\@@_input_push:n}
@@ -960,15 +942,9 @@
{
\file_get_full_name:nN {#1} \l__file_full_name_str
\str_if_empty:NTF \l__file_full_name_str
- { \@@_missing:n {#1} }
+ { \__file_missing:n {#1} }
{ \@@_input:V \l__file_full_name_str }
}
-\cs_new_protected:Npn \@@_missing:n #1
- {
- \__file_name_sanitize:nN {#1} \l__file_base_name_str
- \__msg_kernel_error:nnx { kernel } { file-not-found }
- { \l__file_base_name_str }
- }
\cs_new_protected:Npn \@@_input:n #1
{
\tl_if_in:nnTF {#1} { . }
@@ -1031,71 +1007,57 @@
%
% \begin{macro}{\file_parse_full_name:nNNN}
% \begin{macro}[aux]
-% {\@@_parse_full_name_auxi:w, \@@_parse_full_name_auxii:w, \@@_parse_full_name_auxiii:w}
-% Parsing starts by stripping off any surrounding quotes. Assuming there is
-% then something to read, the next step is to split off the directory.
-% We don't want to add |/| until at least one parent directory is found,
-% but that will loose a leading |/| (absolute path). To deal with that,
-% there is a second test for that construct at the end of directory
-% discovery.
+% {\@@_parse_full_name_auxi:w, \@@_parse_full_name_split:nNNNTF}
+% Parsing starts by stripping off any surrounding quotes. Then find
+% the directory |#4| by splitting at the last~|/|. (The auxiliary
+% returns \texttt{true}/\texttt{false} depending on whether it found
+% the delimiter.) We correct for the case of a file in the root |/|,
+% as in that case we wish to keep the trailing (and only) slash. Then
+% split the base name |#5| at the last dot. If there was indeed a
+% dot, |#5| contains the name and |#6| the extension without the dot,
+% which we add back for convenience. In the special case of no
+% extension given, the auxiliary stored the name into |#6|; we assume
+% under such circumstances these are |.tex| files. One exception is
+% when we were just given a directory, in which case we don't add any
+% extension.
% \begin{macrocode}
\cs_new_protected:Npn \file_parse_full_name:nNNN #1#2#3#4
{
- \@@_parse_full_name_auxi:w #1 " #1 " \q_stop #2#3#4
+ \exp_after:wN \@@_parse_full_name_auxi:w
+ \tl_to_str:n { #1 " #1 " } \q_stop #2#3#4
}
\cs_new_protected:Npn \@@_parse_full_name_auxi:w #1 " #2 " #3 \q_stop #4#5#6
{
- \str_clear:N #4
- \str_clear:N #5
- \str_clear:N #6
- \tl_if_blank:nF {#2}
- { \@@_parse_full_name_auxii:w #2 / \q_mark #2 \q_stop #4#5#6 }
- }
-\cs_new_protected:Npn \@@_parse_full_name_auxii:w #1 / #2 \q_mark #3 \q_stop #4#5#6
- {
- \tl_if_blank:nTF {#2}
+ \@@_parse_full_name_split:nNNNTF {#2} / #4 #5
+ { \str_if_empty:NT #4 { \str_set:Nn #4 { / } } }
+ { }
+ \exp_args:No \@@_parse_full_name_split:nNNNTF {#5} . #5 #6
+ { \str_put_left:Nn #6 { . } }
{
- \tl_if_head_eq_charcode:nNT {#3} { / }
- { \str_set:Nx #4 { / #4 } }
- \tl_if_blank:nF {#1}
- { \@@_parse_full_name_auxiii:w #1 . \q_stop #5#6 }
+ \str_set_eq:NN #5 #6
+ \str_if_empty:NF #6 { \str_set:Nn #6 { .tex } }
}
- {
- \str_set:Nx #4
- {
- #4
- \str_if_empty:NF #4 { / }
- #1
- }
- \@@_parse_full_name_auxii:w #2 \q_mark #3 \q_stop #4#5#6
- }
}
-% \end{macrocode}
-% For the file name, we again need to deal with the special case of no
-% extension given. That is handled by assuming under such circumstances
-% these are |.tex| files. We also use a loop here to deal with multi-dot
-% names, \emph{cf.}~how \tn{filename at parse} would deal with this.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_parse_full_name_auxiii:w #1 . #2 \q_stop #3#4
+\cs_new_protected:Npn \@@_parse_full_name_split:nNNNTF #1#2#3#4
{
- \tl_if_blank:nTF {#2}
+ \cs_set_protected:Npn \@@_tmp:w ##1 ##2 #2 ##3 \q_stop
{
- \str_if_empty:NTF #3
+ \tl_if_empty:nTF {##3}
{
- \str_set:Nn #3 {#1}
- \str_set:Nn #4 { .tex }
+ \str_set:Nn #4 {##2}
+ \tl_if_empty:nTF {##1}
+ {
+ \str_clear:N #3
+ \use_ii:nn
+ }
+ {
+ \str_set:Nx #3 { \str_tail:n {##1} }
+ \use_i:nn
+ }
}
- { \str_set:Nn #4 { . #1 } }
+ { \@@_tmp:w { ##1 #2 ##2 } ##3 \q_stop }
}
- {
- \str_set:Nx #3
- {
- #3
- \str_if_empty:NF #3 { . }
- #1
- }
- \@@_parse_full_name_auxiii:w #2 \q_stop #3#4
- }
+ \@@_tmp:w { } #1 #2 \q_stop
}
% \end{macrocode}
% \end{macro}
@@ -1110,17 +1072,15 @@
% \begin{macrocode}
\cs_new_protected:Npn \file_list:
{
- \seq_set_eq:NN \l_@@_tmp_seq \g_@@_record_seq
+ \seq_clear:N \l_@@_tmp_seq
%<*package>
\clist_if_exist:NT \@filelist
{
- \clist_map_inline:Nn \@filelist
- {
- \seq_put_right:No \l_@@_tmp_seq
- { \tl_to_str:n {##1} }
- }
+ \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+ { \tl_to_str:N \@filelist }
}
%</package>
+ \seq_concat:NNN \l_@@_tmp_seq \l_@@_tmp_seq \g_@@_record_seq
\seq_remove_duplicates:N \l_@@_tmp_seq
\iow_log:n { *~File~List~* }
\seq_map_inline:Nn \l_@@_tmp_seq { \iow_log:n {##1} }
@@ -1137,8 +1097,9 @@
%<*package>
\AtBeginDocument
{
- \clist_map_inline:Nn \@filelist
- { \seq_gput_right:No \g_@@_record_seq { \tl_to_str:n {#1} } }
+ \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+ { \tl_to_str:N \@filelist }
+ \seq_gconcat:NNN \g_@@_record_seq \g_@@_record_seq \l_@@_tmp_seq
}
%</package>
% \end{macrocode}
@@ -1234,10 +1195,7 @@
{
\file_get_full_name:nN {#2} \l__file_full_name_str
\str_if_empty:NTF \l__file_full_name_str
- {
- \__file_name_sanitize:nN {#2} \l__file_base_name_str
- \__msg_kernel_error:nnx { kernel } { file-not-found } \l__file_base_name_str
- }
+ { \__file_missing:n {#2} }
{ \@@_open:No #1 \l__file_full_name_str }
}
\cs_generate_variant:Nn \ior_open:Nn { c }
@@ -1250,7 +1208,7 @@
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \ior_open:Nn #1#2 { T , F , TF }
{
- \file_get_full_name:VN \l__file_base_name_str \l__file_full_name_str
+ \file_get_full_name:nN {#2} \l__file_full_name_str
\str_if_empty:NTF \l__file_full_name_str
{ \prg_return_false: }
{
@@ -2363,7 +2321,7 @@
%
% \subsection{Deprecated functions}
%
-% \begin{variable}{\g_file_current_name_tl}
+% \begin{variable}[deprecated = 2018-12-31]{\g_file_current_name_tl}
% For removal after 2018-12-31.
% \begin{macrocode}
\tl_new:N \g_file_current_name_tl
@@ -2371,19 +2329,33 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\file_path_include:n}
-% \begin{macro}{\file_path_remove:n}
-% \begin{macro}[aux]{\__file_path_include:n}
+% \begin{macro}[deprecated = 2018-12-31]{\file_path_include:n}
+% \begin{macro}[deprecated = 2018-12-31]{\file_path_remove:n}
+% \begin{macro}[deprecated = 2018-12-31, aux]{\__file_path_include:n}
% Wrapper functions to manage the search path.
% \begin{macrocode}
\cs_new_protected:Npn \file_path_include:n #1
{
+ \__msg_kernel_warning:nnxxx { kernel } { deprecated-command }
+ { 2018-12-31 }
+ { \token_to_str:N \file_path_include:n }
+ {
+ \token_to_str:N \seq_put_right:Nn \c_space_tl
+ \token_to_str:N \l_file_search_path_seq
+ }
\__file_name_sanitize:nN {#1} \l__file_full_name_str
\seq_if_in:NVF \l_file_search_path_seq \l__file_full_name_str
{ \seq_put_right:NV \l_file_search_path_seq \l__file_full_name_str }
}
\cs_new_protected:Npn \file_path_remove:n #1
{
+ \__msg_kernel_warning:nnxxx { kernel } { deprecated-command }
+ { 2018-12-31 }
+ { \token_to_str:N \file_path_remove:n }
+ {
+ \token_to_str:N \seq_remove_all:Nn \c_space_tl
+ \token_to_str:N \l_file_search_path_seq
+ }
\__file_name_sanitize:nN {#1} \l__file_full_name_str
\seq_remove_all:NV \l_file_search_path_seq \l__file_full_name_str
}
@@ -2392,11 +2364,15 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\file_add_path:nN}
+% \begin{macro}[deprecated = 2018-12-31]{\file_add_path:nN}
% For removal after 2018-12-31.
% \begin{macrocode}
\cs_new_protected:Npn \file_add_path:nN #1#2
{
+ \__msg_kernel_warning:nnxxx { kernel } { deprecated-command }
+ { 2018-12-31 }
+ { \token_to_str:N \file_add_path:nN }
+ { \token_to_str:N \file_get_full_name:nN }
\file_get_full_name:nN {#1} #2
\str_if_empty:NT #2
{ \tl_set:Nn #2 { \q_no_value } }
Modified: trunk/l3kernel/l3prg.dtx
===================================================================
--- trunk/l3kernel/l3prg.dtx 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/l3prg.dtx 2017-06-26 00:05:10 UTC (rev 7309)
@@ -711,7 +711,7 @@
%
% \begin{function}[EXP]{\__prg_break_point:}
% This copy of \cs{prg_do_nothing:} is used to mark the end of a fast
-% short-term recursions: the function \cs{__prg_break:n} uses this to
+% short-term recursion: the function \cs{__prg_break:n} uses this to
% break out of the loop.
% \end{function}
%
Modified: trunk/l3kernel/testfiles/m3expl001.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.luatex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl001.luatex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2848,20 +2848,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2871,8 +2869,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.ptex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl001.ptex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2836,20 +2836,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2859,8 +2857,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl001.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2836,20 +2836,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2859,8 +2857,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.uptex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl001.uptex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2836,20 +2836,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2859,8 +2857,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl001.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl001.xetex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl001.xetex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2846,20 +2846,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2869,8 +2867,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.luatex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.luatex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl003.luatex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2849,20 +2849,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2872,8 +2870,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.ptex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl003.ptex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2837,20 +2837,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2860,8 +2858,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl003.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2837,20 +2837,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2860,8 +2858,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.uptex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl003.uptex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2837,20 +2837,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2860,8 +2858,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3expl003.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3expl003.xetex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3expl003.xetex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -2847,20 +2847,18 @@
Defining \l__file_ext_str on line ...
Defining \l__file_name_str on line ...
Defining \l_file_search_path_seq on line ...
-Defining \l__file_saved_search_path_seq on line ...
Defining \l__file_tmp_seq on line ...
Defining \__file_name_sanitize:nN on line ...
Defining \__file_name_quote:nN on line ...
-Defining \__file_name_quote:VN on line ...
Defining \__file_name_quote_aux:n on line ...
Defining \file_get_full_name:nN on line ...
Defining \file_get_full_name:VN on line ...
-Defining \__file_get_full_name_search:N on line ...
+Defining \__file_get_full_name_search:nN on line ...
Defining \file_if_exist:nT on line ...
Defining \file_if_exist:nF on line ...
Defining \file_if_exist:nTF on line ...
-Defining \file_input:n on line ...
Defining \__file_missing:n on line ...
+Defining \file_input:n on line ...
Defining \__file_input:n on line ...
Defining \__file_input:V on line ...
Defining \__file_input_aux:n on line ...
@@ -2870,8 +2868,7 @@
Defining \__file_input_pop:nnn on line ...
Defining \file_parse_full_name:nNNN on line ...
Defining \__file_parse_full_name_auxi:w on line ...
-Defining \__file_parse_full_name_auxii:w on line ...
-Defining \__file_parse_full_name_auxiii:w on line ...
+Defining \__file_parse_full_name_split:nNNNTF on line ...
Defining \file_list: on line ...
Defining \c_term_ior on line ...
Defining \g__ior_streams_seq on line ...
Modified: trunk/l3kernel/testfiles/m3file001.lvt
===================================================================
--- trunk/l3kernel/testfiles/m3file001.lvt 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3file001.lvt 2017-06-26 00:05:10 UTC (rev 7309)
@@ -90,6 +90,9 @@
}
\TIMO
\test:n { }
+ \test:n { ~ }
+ \test:n { . }
+ \test:n { / }
\test:n { test }
\test:n { test.tex }
\test:n { "test.tex" }
@@ -104,6 +107,9 @@
\test:n { /baz/ }
\test:n { /bar/baz~bob/test.tex }
\test:n { "bar/baz~bob/test.tex" }
+ \test:n { //baz/...a.b. }
+ \test:n { "//." }
+ \test:n { "//~" }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Modified: trunk/l3kernel/testfiles/m3file001.ptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3file001.ptex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3file001.ptex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -71,6 +71,9 @@
TEST 5: File name parsing
============================================================
Path: "", Name: "", Ext: ""
+Path: "", Name: " ", Ext: ".tex"
+Path: "", Name: "", Ext: "."
+Path: "/", Name: "", Ext: ""
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
@@ -85,6 +88,9 @@
Path: "/baz", Name: "", Ext: ""
Path: "/bar/baz bob", Name: "test", Ext: ".tex"
Path: "bar/baz bob", Name: "test", Ext: ".tex"
+Path: "//baz", Name: "...a.b", Ext: "."
+Path: "/", Name: "", Ext: "."
+Path: "/", Name: " ", Ext: ".tex"
============================================================
============================================================
TEST 6: File listing
@@ -133,7 +139,7 @@
|'''''''''''''''''''''''''''''''''''''''''''''''
| File names must contain balanced numbers of quotes (").
|...............................................
-> \l_tmpa_str="foo."bar".
+> \l_tmpa_str=foo.bar.
<recently read> }
l. ... }
> \l_tmpa_str="foo .bar".
Modified: trunk/l3kernel/testfiles/m3file001.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3file001.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3file001.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -71,6 +71,9 @@
TEST 5: File name parsing
============================================================
Path: "", Name: "", Ext: ""
+Path: "", Name: " ", Ext: ".tex"
+Path: "", Name: "", Ext: "."
+Path: "/", Name: "", Ext: ""
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
@@ -85,6 +88,9 @@
Path: "/baz", Name: "", Ext: ""
Path: "/bar/baz bob", Name: "test", Ext: ".tex"
Path: "bar/baz bob", Name: "test", Ext: ".tex"
+Path: "//baz", Name: "...a.b", Ext: "."
+Path: "/", Name: "", Ext: "."
+Path: "/", Name: " ", Ext: ".tex"
============================================================
============================================================
TEST 6: File listing
@@ -127,7 +133,7 @@
|'''''''''''''''''''''''''''''''''''''''''''''''
| File names must contain balanced numbers of quotes (").
|...............................................
-> \l_tmpa_str="foo."bar".
+> \l_tmpa_str=foo.bar.
<recently read> }
l. ... }
> \l_tmpa_str="foo .bar".
Modified: trunk/l3kernel/testfiles/m3file001.uptex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3file001.uptex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3file001.uptex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -71,6 +71,9 @@
TEST 5: File name parsing
============================================================
Path: "", Name: "", Ext: ""
+Path: "", Name: " ", Ext: ".tex"
+Path: "", Name: "", Ext: "."
+Path: "/", Name: "", Ext: ""
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
@@ -85,6 +88,9 @@
Path: "/baz", Name: "", Ext: ""
Path: "/bar/baz bob", Name: "test", Ext: ".tex"
Path: "bar/baz bob", Name: "test", Ext: ".tex"
+Path: "//baz", Name: "...a.b", Ext: "."
+Path: "/", Name: "", Ext: "."
+Path: "/", Name: " ", Ext: ".tex"
============================================================
============================================================
TEST 6: File listing
@@ -133,7 +139,7 @@
|'''''''''''''''''''''''''''''''''''''''''''''''
| File names must contain balanced numbers of quotes (").
|...............................................
-> \l_tmpa_str="foo."bar".
+> \l_tmpa_str=foo.bar.
<recently read> }
l. ... }
> \l_tmpa_str="foo .bar".
Modified: trunk/l3kernel/testfiles/m3file001.xetex.tlg
===================================================================
--- trunk/l3kernel/testfiles/m3file001.xetex.tlg 2017-06-25 21:25:21 UTC (rev 7308)
+++ trunk/l3kernel/testfiles/m3file001.xetex.tlg 2017-06-26 00:05:10 UTC (rev 7309)
@@ -71,6 +71,9 @@
TEST 5: File name parsing
============================================================
Path: "", Name: "", Ext: ""
+Path: "", Name: " ", Ext: ".tex"
+Path: "", Name: "", Ext: "."
+Path: "/", Name: "", Ext: ""
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
Path: "", Name: "test", Ext: ".tex"
@@ -85,6 +88,9 @@
Path: "/baz", Name: "", Ext: ""
Path: "/bar/baz bob", Name: "test", Ext: ".tex"
Path: "bar/baz bob", Name: "test", Ext: ".tex"
+Path: "//baz", Name: "...a.b", Ext: "."
+Path: "/", Name: "", Ext: "."
+Path: "/", Name: " ", Ext: ".tex"
============================================================
============================================================
TEST 6: File listing
@@ -127,7 +133,7 @@
|'''''''''''''''''''''''''''''''''''''''''''''''
| File names must contain balanced numbers of quotes (").
|...............................................
-> \l_tmpa_str="foo."bar".
+> \l_tmpa_str=foo.bar.
<recently read> }
l. ... }
> \l_tmpa_str="foo .bar".
More information about the latex3-commits
mailing list