diff options
Diffstat (limited to 'Utility/Path.hs')
-rw-r--r-- | Utility/Path.hs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Utility/Path.hs b/Utility/Path.hs index 216b2401d..0a9931c46 100644 --- a/Utility/Path.hs +++ b/Utility/Path.hs @@ -21,6 +21,7 @@ import Data.Char import qualified System.FilePath.Posix as Posix #else import qualified "MissingH" System.Path as MissingH +import System.Posix.Files #endif import Utility.Monad @@ -217,3 +218,21 @@ toCygPath p | hasTrailingPathSeparator p = Posix.addTrailingPathSeparator s | otherwise = s #endif + +{- Maximum size to use for a file in a specified directory. + - + - Many systems have a 255 byte limit to the name of a file, + - so that's taken as the max if the system has a larger limit, or has no + - limit. + -} +fileNameLengthLimit :: FilePath -> IO Int +#ifdef __WINDOWS__ +fileNameLengthLimit _ = return 255 +#else +fileNameLengthLimit dir = do + l <- fromIntegral <$> getPathVar dir FileNameLimit + if l <= 0 + then return 255 + else return $ minimum [l, 255] + where +#endif |