[Issue 8291] dirEntry cannot handle root directories + unhandled exception causes crash

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Dec 21 21:31:52 PST 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8291


Vladimir Panteleev <thecybershadow at gmail.com> changed:

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


--- Comment #1 from Vladimir Panteleev <thecybershadow at 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: -------


More information about the Digitalmars-d-bugs mailing list