id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
1535,Proposal: expose the drive functions in the filepath package,igloo,,"This comes out of #1490, where, in createDirectoryIfMissing, we use stat to determine if a directory exists.

(I don't think catching an exception is a possibility in this case, as mkdir returns EEXIST if ""pathname already exists (not necessarily as a directory)"", so we can't distinguish between the directory already existing and a file existing with the name that we want. Short of doing something ugly like trying to make (path ++ ""/."") and seeing if we get ENOTDIR, anyway).

The problem is that mingw's stat succeeds for C:\ and C:\foo but fails for C: and C:\foo\. The current code strips a trailing \ before calling stat, and thus fails if asked to create C:\ (which we always do if ""make parents"" is true, and of course this path could be given explicitly by a user).

What we want is something like
{{{
if isDrive x
then addTrailingPathSeparator x
else dropTrailingPathSeparator x
}}}
except filepath currently doesn't export isDrive, for reasons I'm not entirely clear on.

Thus I propose exposing the *Drive functions from the filepath package. The patch, which I will attach, is rather trivial as the code is already written, tested etc, just not exposed.

Let's try until 21 July for a discussion period.

Please try to accompany any objections with a (clean) alternative solution to the original problem.",proposal,closed,normal,Not GHC,libraries/base,6.6.1,fixed,,,Unknown/Multiple,Unknown/Multiple,,Unknown,,,,
