import Prelude
-#include "../../includes/ghcconfig.h"
-
import System.Console.GetOpt
-#if __GLASGOW_HASKELL__ >= 609
import qualified Control.Exception as Exception
-#else
-import qualified Control.Exception.Extensible as Exception
-#endif
import Data.Maybe
import Data.Char ( isSpace, toLower )
#if __GLASGOW_HASKELL__ < 612
import System.Posix.Internals
-#if __GLASGOW_HASKELL__ >= 611
-import GHC.IO.Handle.FD (fdToHandle)
-#else
import GHC.Handle (fdToHandle)
#endif
-#endif
#ifdef mingw32_HOST_OS
import GHC.ConsoleHandler
| "$topdir" `isPrefixOf` d = return ()
| "$httptopdir" `isPrefixOf` d = return ()
-- can't check these, because we don't know what $(http)topdir is
+ | isRelative d = verror ForceFiles $
+ thisfield ++ ": " ++ d ++ " is a relative path"
+ -- relative paths don't make any sense; #4134
| otherwise = do
there <- liftIO $ doesDirectoryExist d
when (not there) $
_ <- installHandler sigQUIT (Catch interrupt) Nothing
_ <- installHandler sigINT (Catch interrupt) Nothing
return ()
-#elif __GLASGOW_HASKELL__ >= 603
+#else
-- GHC 6.3+ has support for console events on Windows
-- NOTE: running GHCi under a bash shell for some reason requires
-- you to press Ctrl-Break rather than Ctrl-C to provoke
_ <- installHandler (Catch sig_handler)
return ()
-#else
- return () -- nothing
-#endif
-
-#if __GLASGOW_HASKELL__ <= 604
-isInfixOf :: (Eq a) => [a] -> [a] -> Bool
-isInfixOf needle haystack = any (isPrefixOf needle) (tails haystack)
#endif
#if mingw32_HOST_OS || mingw32_TARGET_OS
oflags = rw_flags .|. o_EXCL
-#if __GLASGOW_HASKELL__ < 611
withFilePath = withCString
-#endif
findTempName x = do
fd <- withFilePath filepath $ \ f ->
-- as any exceptions etc will only be able to report the
-- fd currently
h <-
-#if __GLASGOW_HASKELL__ >= 609
fdToHandle fd
-#else
- fdToHandle (fromIntegral fd)
-#endif
`Exception.onException` c_close fd
return (filepath, h)
where