Re: [Qemu-devel] [PATCH] rev3: support colon in filenames

Jamie Lokier
2009-07-15T22:00:19Z

Jan Kiszka wrote:
> Jamie Lokier wrote:
> > Jan Kiszka wrote:
> >>> Now, I see one significant hurdle with that: it's quite inconvenient
> >>> for Windows users, typing paths like c:\path\to\dir\file, if those
> >>> backslashes are stipped.
> >> We could exclude Windows from this (I think to remember that filenames
> >> are more restricted there anyway) or define a different, Windows-only
> >> escape character.
> >
> > I think both of those are bad ideas, because the same management
> > scripts can run on Windows, and for consistency it's not just file
> > names. Even Windows has block devices and network devices :-)
>
> I'm not sure if there is actually so much portability/reusability
> between Windows and the rest of the universe, but I'm surely not an
> expert in this.

In my experience, shell scripts and Perl scripts tend to work either
with no changes, or very small changes.

> > Fortunately "where <char> is not ASCII alphanumeric" solves the
> > practical cases where the user types an ordinary pathname.
> >
> > Or the user can type forward slashes just like they do in unix.
>
> We would still have to deal with the fact that so far '\' had no special
> meaning on Windows - except that is was the well-known path separator.
> So redefining its meaning would break a bit...

The point is that paths tend to have alphanumeric characters at the
start of each component, so it doesn't matter in most cases that it's
redefined. People won't notice because c:\path\to\file will continue
to work, whether it's by itself or part of a multi-option option.

Exceptions are \\host\path and \\.\device, where the error will be so
obvious they'll learn quickly. We could find a more complex scheme
where \\ is unaffected, but complex is not good and will be wrongly
implemented by other programs.

Whereas \<char> is very common, well known and easy to get right, even
when people guess how it's done, like they do when working out how to
quote paths for rsync and ssh.

Oh, I'm suddenly thinking that "." should be included in "alphanumeric" :-)

-- Jamie