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.