June 24, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8291

           Summary: dirEntry cannot handle root directories + unhandled
                    exception causes crash
           Product: D
           Version: D2
          Platform: All
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: Phobos
        AssignedTo: nobody@puremagic.com
        ReportedBy: mp81ss@rambler.ru


--- Comment #0 from Michele Pes <mp81ss@rambler.ru> 2012-06-24 10:03:15 PDT ---
1) Wrong root handling api/params.
To stat a root directory, the "GetFileAttributes" API must be used instead of
"FindFirstFile".
To stat all files in a root dir, "C:\*" must be passed to FindFirstFile.
In all other cases, a path with [back]slash removed can be passed to
"FindFirstFile".
I know this in crazy, if you don't believe me, read CAREFULLY the FindFirstFile
docs.
P.S.:
This should make you see that the dirEntries method may have some problems...

2) Crash
The result of FindFirstFile is "enforced" in _init private method and NOT
CAUGHT in the caller public method dirEntry, and this crashes the client app.
It would be better to throw a FileException in _init and catch+rethrow it in
dirEntry.

Found on 2.059

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
December 22, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8291


Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com


--- Comment #1 from Vladimir Panteleev <thecybershadow@gmail.com> 2012-12-21 21:31:50 PST ---
(In reply to comment #0)
> 1) Wrong root handling api/params.
> To stat a root directory, the "GetFileAttributes" API must be used instead of
> "FindFirstFile".
> To stat all files in a root dir, "C:\*" must be passed to FindFirstFile.
> In all other cases, a path with [back]slash removed can be passed to
> "FindFirstFile".
> I know this in crazy, if you don't believe me, read CAREFULLY the FindFirstFile
> docs.
> P.S.:
> This should make you see that the dirEntries method may have some problems...

The following program works as expected, and prints the files/directories in the root of my C: drive:

import std.stdio;
import std.file;

void main()
{
    writeln(dirEntries(`C:\`, SpanMode.shallow));
}

Can you clarify the problem?

> 2) Crash
> The result of FindFirstFile is "enforced" in _init private method and NOT
> CAUGHT in the caller public method dirEntry, and this crashes the client app.
> It would be better to throw a FileException in _init and catch+rethrow it in
> dirEntry.

So what is the exact problem? Isn't a FileException thrown in either case?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------