std.path.getName(): Screwy by design?

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Tue Mar 1 06:31:18 PST 2011


On Tue, 01 Mar 2011 08:50:29 -0500, Nick Sabalausky wrote:

> "Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message
> news:op.vrn2pooteav7ka at steve-laptop...
>> On Tue, 01 Mar 2011 08:13:33 -0500, Lars T. Kyllingstad
>> <public at kyllingen.nospamnet> wrote:
>>
>>> On Tue, 01 Mar 2011 08:02:44 -0500, Steven Schveighoffer wrote:
>>>
>>>> On Tue, 01 Mar 2011 04:16:36 -0500, Jonathan M Davis
>>>> <jmdavisProg at gmx.com> wrote:
>>>>
>>>>> I can understand if the path stuff
>>>>> can't deal with / or \ in file names (that's probably not worth
>>>>> trying to get to
>>>>> work right), but it _should_ be able to handle directories with dots
>>>>> in them and
>>>>> files with no extension.
>>>>
>>>> / and \ are not legal in names on any filesystem that I know of.
>>>>
>>>> -Steve
>>>
>>> On a *NIX machine, try
>>>
>>>   touch "c:\\foo\\bar"
>>>
>>> You may be surprised. ;)
>>
>> bleh... that seems useless :)  I purposely checked FAT before posting,
>> because I was sure Unix disallowed backslashes, I wanted to make sure
>> FAT didn't allow slashes.
>>
>> Holy crap, something that DOS got right and Unix didn't!
> 
> Windows also handles files/paths with spaces a hell of a lot better than
> Unix. This, despite the fact that Unix technically allowed them long
> before Windows did. (I don't mean this as OS-bashing.)

I really don't understand what you guys are talking about.  If you 
encounter a filename with spaces, just enclose it in quotes or escape the 
spaces.  If you encounter a filename with characters like *, \, etc, just 
escape them or enclose the filename in single quotes.

And you only have to do the above when using a command-line shell.  I 
just tried renaming a file to "c:\foo bar\*.baz" using the GNOME file 
manager and it worked perfectly, just like any other name.


>> From this page: http://en.wikipedia.org/wiki/Filename, it appears that
>> really, the only disallowed character in unix filenames is '/'.  Even
>> '*' is allowed as a filename.  How... horrible.

Yeah, the only illegal filename characters are '/' and null.


> I would actually feel very good to just simply not support such things.
> If some unix user is going to use such awful filenames they can just
> deal with the consequences. (And I'm *rarely* the kind of person to hold
> such a viewpoint on software development matters.)

If you have a bunch of "reserved characters", that means more special 
cases to worry about in code.  I say it's better to allow as many 
characters as possible.

-Lars


More information about the Digitalmars-d mailing list