[Issue 15146] New: std.file.dirEntries("") only works on Windows
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sat Oct 3 10:09:06 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=15146
Issue ID: 15146
Summary: std.file.dirEntries("") only works on Windows
Product: D
Version: D2
Hardware: All
OS: Other
Status: NEW
Severity: enhancement
Priority: P4
Component: phobos
Assignee: nobody at puremagic.com
Reporter: thecybershadow at gmail.com
///////////////////// test.d /////////////////////
import std.algorithm.iteration;
import std.file;
import std.stdio;
void main()
{
dirEntries("", SpanMode.shallow).each!writeln;
}
//////////////////////////////////////////////////
This program runs fine on Windows, but throws on POSIX.
This is because POSIX opendir is defined to return ENOENT if the argument is an
empty string:
> [ENOENT] A component of dirname does not name an existing directory or dirname is an empty string.
Although the call to dirEntries can be changed to dirEntries("."), this has the
unpleasant effect of prepending "./" to all paths returned by dirEntries. It is
additionally a portability hazard (code that works on one OS but not another).
I thus propose to make dirEntries("") call opendir(".") under the hood.
--
More information about the Digitalmars-d-bugs
mailing list