Symlink timestamp preservation code uses functions from unix-2.7.0 when available, which should be more portable.
This commit is contained in:
parent
15d7709031
commit
268800d590
2 changed files with 25 additions and 3 deletions
|
@ -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
|
||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue