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

spir denis.spir at gmail.com
Tue Mar 1 02:48:37 PST 2011


On 03/01/2011 09:58 AM, Nick Sabalausky wrote:
> According to the docs, std.path.getName() "Returns the extensionless version
> of a filename or path."
>
> But the doc also says that if the filename doesn't have a dot, then it
> returns null (and I've verified that on DMD 2.050). Isn't that a bit
> ridiculous? Shouldn't it still return the extensionless version even if it
> doesn't have an extension? Ie, return the original string.
>
> I would expect all of the following to pass, but currently (by design) only
> the first two pass:
>
> assert(getName(r"file.ext") == r"file");
> assert(getName(r"/path/file.ext") == r"/path/file");
>
> assert(getName(r"file") == r"file");
> assert(getName(r"/path/file") == r"/path/file");
>
> The current behavior seems useless.
>
> Additionally, this also seems screwy:
>
> // Currently passes:
> assert(getName(r"/pa.th/file") == r"/pa");
>
> WTF? The docs seem to suggest that's by design, but I can't imagine why.
> Even on Windows it's not as if filenames can contain forward slashes (and
> except for the command-line, accessing paths with forward-slash separators
> works fine on Windows).
>
> Fortunately, the docs do seem to be wrong about this:
>
> version(Windows)
>       getName(r"d:\path.two\bar") =>  null
>
> That currently returns r"d:\path.two\bar" as I would expect.
>
> If those in charge agree with me on all of the this, I'd be glad to go
> through std.path, fix all of that, check for any other issues and submit a
> modified std.path with updated examples and unittests for approval.

+++

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d mailing list