packages feed

bamse-0.9.1: System/Path.hs

{- |
 
  Module      :  System.Path
  Copyright   :  (c) Galois Connections 2001-2004

  Maintainer      : lib@galois.com
  Stability       : 
  Portability     : 
  
  Platform specific path definitions.
-}
module System.Path
	( pathSep    	        -- :: Char
	, canonPath  	        -- :: String -> String
	, isPathSeparator       -- :: Char   -> Bool
	, drivePath             -- :: FilePath -> Maybe Char
	, isSeparator	        -- :: Char   -> Bool
	) where

-- | preferred path separator for the platform.
pathSep :: Char
pathSep = '\\'

-- | given a filepath, POSIX or otherwise, convert it into a
-- platform-friendly form.
canonPath :: FilePath -> FilePath
canonPath xs = map toBwd xs
  where toBwd '/' = '\\'
	toBwd x    = x

-- | returns 'True' if character is a separator\/divider in a filepath.
isSeparator :: Char -> Bool
isSeparator = isPathSeparator

-- deprecated (but I'll resist the temptation of
-- adding an annoying deprecated pragma.)
isPathSeparator :: Char -> Bool
isPathSeparator '/'  = True
isPathSeparator '\\' = True
isPathSeparator _    = False

-- | return drive portion part of path, if any (and meaningful.)
drivePath :: FilePath -> Maybe Char
drivePath (x:':':s:_) | isPathSeparator s = Just x
drivePath _ = Nothing