summaryrefslogtreecommitdiff
path: root/Utility/Path.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-01-06 19:00:01 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-01-06 19:00:01 -0400
commit6be8289158fd30d972ac22766452e7c9dc809e6f (patch)
treeba4929c7c8f27d2b43051f637394115cda39258b /Utility/Path.hs
parent6ea1214fa5d19241851a977ab82437563e2afc81 (diff)
parent971ed2a464a1a1e4d5e650e32390d232cd354d9d (diff)
Merge branch 'master' into relativepaths
Conflicts: Locations.hs debian/changelog
Diffstat (limited to 'Utility/Path.hs')
-rw-r--r--Utility/Path.hs16
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