std.path review: second update
Jonathan M Davis
jmdavisProg at gmx.com
Mon Aug 1 22:55:02 PDT 2011
On Tuesday 02 August 2011 05:41:11 Jesse Phillips wrote:
> On Mon, 01 Aug 2011 20:50:21 +0000, Jonathan M Davis wrote:
>
> st my pragmatic, Windows-sentric view of things :)
>
> > The problem with that is that then you _can't_ have something like
> > "foo..bar". Granted, that's not a normal thing to do, but it would be
> > problematic if it ever happened.
>
> You can, you just wouldn't build it with these functions. And frankly if
> you are using these then you probably wouldn't want foo..bar and wouldn't
> care that it ended up foo.bar or foo..bar. You just want the proper
> extension on the proper name, which is what you'd get.
>
> > The primary danger I see with using null for no extension and empty for
> > "." is
> >
> > assert(extension("file.") == extension("file"));
> >
> > That could cause problems for any program that actually runs into a file
> > which ends with a ".". Now, if Linux, Windows, and Mac OS X all prevent
> > files ending in a dot (which I seriously doubt), then it isn't really an
> > issue. Having the difference between null and empty does make it
> > possible to distinguish if you start doing stuff like
>
> I disagree, that assertion should pass. They both have the same
> extension. If you really want to know if a file name ends in a dot,
>
> assert("file."[$-1] == ".");
>
> I just don't see a case where you'd be dealing with these too files and
> care to know the extension is explicitly empty or umm just empty.
The main issue that I see is that it becomes too easy to have a program think
that the names of two files are identical if you're dealing with their pieces
instead of their whole. Granted, this is not exactly a normal situation, but
I'd much prefer to have it handled cleanly so that programs that get into such
a situation don't end up being buggy rather than declaring that two items
which aren't identical as being equal.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list