diff options
-rw-r--r-- | Utility/Touch.hsc | 26 | ||||
-rw-r--r-- | debian/changelog | 2 |
2 files changed, 25 insertions, 3 deletions
diff --git a/Utility/Touch.hsc b/Utility/Touch.hsc index c3318e6da..e1b1e887e 100644 --- a/Utility/Touch.hsc +++ b/Utility/Touch.hsc @@ -5,7 +5,7 @@ - License: BSD-2-clause -} -{-# LANGUAGE ForeignFunctionInterface #-} +{-# LANGUAGE ForeignFunctionInterface, CPP #-} module Utility.Touch ( TimeSpec(..), @@ -13,6 +13,26 @@ module Utility.Touch ( 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> @@ -35,8 +55,6 @@ import Foreign.C newtype TimeSpec = TimeSpec CTime -{- 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 () touch :: FilePath -> TimeSpec -> Bool -> IO () @@ -123,3 +141,5 @@ touchBoth file atime mtime follow = touchBoth _ _ _ _ = return () #endif #endif + +#endif diff --git a/debian/changelog b/debian/changelog index 9d768ad28..289242429 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,8 @@ git-annex (5.20151020) UNRELEASED; urgency=medium * Use statvfs on OSX. + * Symlink timestamp preservation code uses functions + from unix-2.7.0 when available, which should be more portable. -- Joey Hess <id@joeyh.name> Mon, 19 Oct 2015 17:00:21 -0400 |