diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-02-15 11:47:33 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-02-15 11:47:33 -0400 |
commit | cd8e2e4eeb70d22f9a7daa375474d80aa188574b (patch) | |
tree | 6b3f01c14a5b64e40c15210d3baf916825a47dcb /Utility | |
parent | 98a2b312fd0297dcb09f6efdc3bd2e3b05b6dfc0 (diff) |
move old ghc compat code into separate module; eliminate WITH_CLIBS
This avoids hsc2hs being run except when building for the old version of ghc.
Should speed up builds.
Diffstat (limited to 'Utility')
-rw-r--r-- | Utility/Touch.hs | 52 | ||||
-rw-r--r-- | Utility/Touch/Old.hsc (renamed from Utility/Touch.hsc) | 26 |
2 files changed, 54 insertions, 24 deletions
diff --git a/Utility/Touch.hs b/Utility/Touch.hs new file mode 100644 index 000000000..60b9cb928 --- /dev/null +++ b/Utility/Touch.hs @@ -0,0 +1,52 @@ +{- More control over touching a file. + - + - Copyright 2011 Joey Hess <id@joeyh.name> + - + - License: BSD-2-clause + -} + +{-# LANGUAGE CPP #-} + +module Utility.Touch ( + TimeSpec(..), + touchBoth, + touch +) where + +#if ! defined(mingw32_HOST_OS) && ! defined(__ANDROID__) + +#if MIN_VERSION_unix(2,7,0) + +import System.Posix.Files +import System.Posix.Types + +newtype TimeSpec = TimeSpec EpochTime + +{- Changes the access and modification times of an existing file. + Can follow symlinks, or not. Throws IO error on failure. -} +touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO () +touchBoth file (TimeSpec atime) (TimeSpec mtime) follow + | follow = setFileTimes file atime mtime + | otherwise = setSymbolicLinkTimesHiRes file (realToFrac atime) (realToFrac mtime) + +touch :: FilePath -> TimeSpec -> Bool -> IO () +touch file mtime = touchBoth file mtime mtime + +#else +import Utility.Touch.Old +#endif + +#else + +import System.PosixCompat + +newtype TimeSpec = TimeSpec EpochTime + +{- Noop for Windows -} +touchBoth FilePath -> TimeSpec -> TimeSpec -> Bool -> IO () +touchBoth _ _ _ _ = return () + +touch :: FilePath -> TimeSpec -> Bool -> IO () +touch _ _ = return () + +#endif diff --git a/Utility/Touch.hsc b/Utility/Touch/Old.hsc index e1b1e887e..5345285f4 100644 --- a/Utility/Touch.hsc +++ b/Utility/Touch/Old.hsc @@ -1,4 +1,4 @@ -{- More control over touching a file. +{- Compatability interface for old version of unix, to be removed eventally. - - Copyright 2011 Joey Hess <id@joeyh.name> - @@ -7,32 +7,12 @@ {-# LANGUAGE ForeignFunctionInterface, CPP #-} -module Utility.Touch ( +module Utility.Touch.Old ( TimeSpec(..), touchBoth, touch ) where -#if MIN_VERSION_unix(2,7,0) - -import System.Posix.Files -import System.Posix.Types - -newtype TimeSpec = TimeSpec EpochTime - -{- Changes the access and modification times of an existing file. - Can follow symlinks, or not. Throws IO error on failure. -} -touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO () -touchBoth file (TimeSpec atime) (TimeSpec mtime) follow - | follow = setFileTimes file atime mtime - | otherwise = setSymbolicLinkTimesHiRes file (realToFrac atime) (realToFrac mtime) - -touch :: FilePath -> TimeSpec -> Bool -> IO () -touch file mtime = touchBoth file mtime mtime - -#else -{- Compatability interface for old version of unix, to be removed eventally. -} - #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -141,5 +121,3 @@ touchBoth file atime mtime follow = touchBoth _ _ _ _ = return () #endif #endif - -#endif |