pathParents p =
root'' : map ((++) root') (dropEmptyPath $ inits path')
where
-#ifdef mingw32_TARGET_OS
+#ifdef mingw32_HOST_OS
(root,path) = case break (== ':') p of
(path, "") -> ("",path)
(root,_:path) -> (root++":",path)
-- | The function splits the given string to substrings
-- using the 'searchPathSeparator'.
parseSearchPath :: String -> [FilePath]
-parseSearchPath path = split searchPathSeparator path
+parseSearchPath path = split path
where
- split :: Char -> String -> [String]
- split c s =
- case rest of
- [] -> [chunk]
- _:rest' -> chunk : split c rest'
+ split :: String -> [String]
+ split s =
+ case rest' of
+ [] -> [chunk]
+ _:rest -> chunk : split rest
where
- (chunk, rest) = break (==c) s
+ chunk =
+ case chunk' of
+#ifdef mingw32_HOST_OS
+ ('\"':xs@(_:_)) | last xs == '\"' -> init xs
+#endif
+ _ -> chunk'
+
+ (chunk', rest') = break (==searchPathSeparator) s
--------------------------------------------------------------
-- * Separators
-- separator is a slash (@\"\/\"@) on Unix and Macintosh, and a backslash
-- (@\"\\\"@) on the Windows operating system.
pathSeparator :: Char
-#ifdef mingw32_TARGET_OS
+#ifdef mingw32_HOST_OS
pathSeparator = '\\'
#else
pathSeparator = '/'
-- environment variables. The separator is a colon (@\":\"@) on Unix and
-- Macintosh, and a semicolon (@\";\"@) on the Windows operating system.
searchPathSeparator :: Char
-#ifdef mingw32_TARGET_OS
+#ifdef mingw32_HOST_OS
searchPathSeparator = ';'
#else
searchPathSeparator = ':'
-- | Extension for executable files
-- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2)
exeExtension :: String
-#ifdef mingw32_TARGET_OS
+#ifdef mingw32_HOST_OS
exeExtension = "exe"
#else
exeExtension = ""