xsl-list
[Top] [All Lists]

Re: [xsl] Escaping special characters for *nix file path

2012-07-29 09:59:05
On Sun, 2012-07-29 at 15:58 +0200, Wolfgang Laun wrote:

A relatively safe way would be to enclose the path name in apostrophes
(') and escape all contained apostrophes and backslashes with a
backslash.

It would be if it worked :-)

\ is not special inside '...' in the shell, and neither are ` or $
(in shell-speak, no interpolation happens and there is no escaping)

\ *is* special inside "..."
(this is the difference between the two forms of quote in fact)

so,
$ mkdir try
$ cd try
$ touch "a`date`b"
$ ls
aSun Jul 29 10:16:42 EDT 2012b
$ touch 'a`date`b
$ ls
a`date`b
aSun Jul 29 10:16:42 EDT 2012b
$ touch "c\`date\`d"
$ ls
a`date`b
aSun Jul 29 10:16:42 EDT 2012b
c`date`d
$

This is all about escaping from the shell, though. On Unix (and Linux
and OS X) a filename can contain any character except NUL (a zero byte)
or / (because that's the path separator).

If the resulting files are going to be accessed as URIs though, you also
have to avoid a ton of other characters, and \-escaping doesn't work -
you have to use uri-escape(), and in that case there's no need to mess
around with backslashes either.

But all this presupposes particular uses -- presumably XSLT is being
used to generate a shell script here.

Liam

-- 
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
Co-author, 5th edition of "Beginning XML", Wrox, June 2012



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--