On 22/05/2014 21:40, Joseph Wright wrote:
> On 22/05/2014 20:42, David Carlisle wrote:
>> On 22/05/2014 17:09, Joseph Wright wrote:
>>> Hello all,
>>>
>>> Currently, we have \ior_open:Nn for reading from a file, but no defined
>>> interface for using the 'pipe' shell escape provided by pdfTeX. As we
>>> forbid spaces in file names,
>> why do we do that? Spaces in filenames always seem like an abomination
>> to me.
>> But that seems to be a relic on the 1970s I've noticed that people who
>> started using
>> computers this century don't seem to think anything of using a
>> descriptive phrase
>> as a filename...
> The logic here was that, at least as I understand it, there are some
> places where you can't just 'wrap up spaces' and have them work. In
> which suggest that space behaviour is hard-coded in that case and can't
> be changed. (MiKTeX also does some 'interesting' things with BibTeX
> input names containing spaces.) I may have this wrong: can other more
> knowledgeable people comment?
>
> This can of course be changes if required.

issues with existing implementations aside....
>> Shouldn't we just allow spaces (and leading | or any other system
>> dependent special
>> syntax) just surrounding any user supplied name by " " to keep it together?
> Space behaviour notwithstanding, I think the point here is that the pipe
> input approach is sufficiently different from a 'real' file to deserve a
> separate interface.

My instinct here is still that the pipe interface being exposed as a
file is a feature that should be
preserved rather than hidden.

At the bottom programming layer it probably seems natural to have
separate functions for accessing files
or for invoking commands, but if you separate them you need to duplicate
the entire stack all the way
up to the document level, all  file reading commands would need to be
duplicated or have some
way of accessing the pipe functionality.

In 2e you can  do

\documentclass{article}

\begin{document}

\input{"|zcat foo.tex.gz"}

\end{document}

to input a compressed file (and zcat could be replaced by a database
query or wget to do web request or whatever.
You can do same with \include  and \InputIfFileExists and...

The easiest way to ensure that all top level file reading can access
pipes (if enabled) as well as files is to not distinguish
them and just treat them as files. The syntax for a filename is
explicitly system dependent in anycase and this is not really
so different (which is how come it came to be hooked into the \input
syntax in the first place).

David