diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-01-06 19:00:01 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-01-06 19:00:01 -0400 |
commit | 6be8289158fd30d972ac22766452e7c9dc809e6f (patch) | |
tree | ba4929c7c8f27d2b43051f637394115cda39258b /Utility/Path.hs | |
parent | 6ea1214fa5d19241851a977ab82437563e2afc81 (diff) | |
parent | 971ed2a464a1a1e4d5e650e32390d232cd354d9d (diff) |
Merge branch 'master' into relativepaths
Conflicts:
Locations.hs
debian/changelog
Diffstat (limited to 'Utility/Path.hs')
-rw-r--r-- | Utility/Path.hs | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/Utility/Path.hs b/Utility/Path.hs index 7427bfe27..cc6c35485 100644 --- a/Utility/Path.hs +++ b/Utility/Path.hs @@ -77,14 +77,12 @@ absNormPathUnix dir path = todos <$> MissingH.absNormPath (fromdos dir) (fromdos todos = replace "/" "\\" #endif -{- Returns the parent directory of a path. - - - - To allow this to be easily used in loops, which terminate upon reaching the - - top, the parent of / is "" -} -parentDir :: FilePath -> FilePath +{- Just the parent directory of a path, or Nothing if the path has no + - parent (ie for "/") -} +parentDir :: FilePath -> Maybe FilePath parentDir dir - | null dirs = "" - | otherwise = joinDrive drive (join s $ init dirs) + | null dirs = Nothing + | otherwise = Just $ joinDrive drive (join s $ init dirs) where -- on Unix, the drive will be "/" when the dir is absolute, otherwise "" (drive, path) = splitDrive dir @@ -94,8 +92,8 @@ parentDir dir prop_parentDir_basics :: FilePath -> Bool prop_parentDir_basics dir | null dir = True - | dir == "/" = parentDir dir == "" - | otherwise = p /= dir + | dir == "/" = parentDir dir == Nothing + | otherwise = p /= Just dir where p = parentDir dir |