Bug 7001 – std.path.baseName and isValidFilename wrong documentation
Status
RESOLVED
Resolution
INVALID
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
Other
OS
Windows
Creation time
2011-11-24T12:59:00Z
Last change time
2012-02-01T14:33:48Z
Assigned to
nobody
Creator
andrej.mitrovich
Comments
Comment #0 by andrej.mitrovich — 2011-11-24T12:59:09Z
"Returns the name of a file, without any leading directory and with an optional suffix chopped off. "
It should be:
Returns the name of a file *or directory*, without any leading directory and with an optional suffix chopped off.
Note the assert:
assert (baseName("dir/subdir/") == "subdir");
Secondly:
isValidFilename
"Checks that the given file or directory name is valid. "
should be:
"Checks that the given file name is valid."
It does *not* verify directory names, only filenames.
Comment #1 by andrej.mitrovich — 2011-11-24T13:00:44Z
(In reply to comment #0)
> "Returns the name of a file, without any leading directory and with an optional
> suffix chopped off. "
>
> It should be:
> Returns the name of a file *or directory*, without any leading directory and
> with an optional suffix chopped off.
>
That refers to std.path.baseName.
Comment #2 by issues.dlang — 2011-12-06T21:05:51Z
And how does isValidFilename not validate directory names?
There's no really zero difference between a file and a directory as far as paths go except anything to the left of the rightmost directory separator must be a directory or drive. I believe that both std.path and std.file have a tendancy to use the term file even when it applies to directories - which is fairly typical in such documentation, I believe - though in some cases it can be confusing. Already, as far Posix is concerned, what you'd typically refer to as a file would be a "regular" file rather than a file.
In any case, baseName is arguably correct as-is, though it certainly wouldn't hurt to add "or directory" to it, and I don't see what's incorrect about isValidFilename. It validates a file or directory name. The only complaint in that regard that I can think of that you might be making is the fact that something like "dir/" would return false for it, and since directory separators are invalid in both directory and file names, I don't see that as a problem. So, unless you have another argument that I can't think of, I don't know what your issue with isValidFilename could be.
Comment #3 by andrej.mitrovich — 2011-12-06T23:00:04Z
(In reply to comment #2)
> and since directory separators
> are invalid in both directory and file names
Why are they invalid in directory names?
Comment #4 by issues.dlang — 2011-12-06T23:14:01Z
If you have /dir or dir/, the name of the directory is dir, not /dir, or dir/. It is illegal on Posix systems to have a directory name with / in it, just like it's illegal on Windows systems to have a directory name with \ in it. A _path_ can have the directory separator for the current OS in it, but not a file or directory name, and isValidFilename is checking file _names_, not paths.
Comment #5 by bugzilla — 2011-12-26T11:37:55Z
Here, "file" means a node in a file system, and it encompasses normal files as well as directories, symbolic links, named pipes, device files and sockets.
In that sense, "file or directory" may be redundant.
Comment #6 by issues.dlang — 2011-12-26T14:02:45Z
I believe that Posix at least uses the term regular file for normal files, and then still uses the term file for everything. It _can_ be a bit confusing, but I don't know a better way to go about it. Unfortunately, the term file can be ambiguous due to differences in its usage.
Comment #7 by bugzilla — 2012-02-01T14:33:48Z
It seems the confusion has been cleared up, so I'm closing this. If anyone still disagrees, please reopen.