
Hi all, This is proposal 1535: http://hackage.haskell.org/trac/ghc/ticket/1535 This comes out of http://hackage.haskell.org/trac/ghc/ticket/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, attached to the bug, 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. Thanks Ian