src/Distribution/Compat/FilePath.hs

    {-# LANGUAGE CPP #-}

    {-# OPTIONS_GHC -fno-warn-unused-imports #-}

    module Distribution.Compat.FilePath
    ( isExtensionOf
    , stripExtension
    ) where

    import Data.List ( isSuffixOf, stripPrefix )
    import System.FilePath

    #if !MIN_VERSION_filepath(1,4,2)
    isExtensionOf :: String -> FilePath -> Bool
    isExtensionOf ext@('.':_) = isSuffixOf ext . takeExtensions
    isExtensionOf ext         = isSuffixOf ('.':ext) . takeExtensions
    #endif

    #if !MIN_VERSION_filepath(1,4,1)
    stripExtension :: String -> FilePath -> Maybe FilePath
    stripExtension []        path = Just path
    stripExtension ext@(x:_) path = stripSuffix dotExt path
     where
      dotExt = if isExtSeparator x then ext else '.':ext
      stripSuffix :: Eq a => [a] -> [a] -> Maybe [a]
      stripSuffix xs ys = fmap reverse $ stripPrefix (reverse xs) (reverse ys)
    #endif