From 8ef46b1838eea40488617df6d344d50fd5877ea5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 11 Jul 2013 11:39:42 -0400 Subject: fix: Preserve the original mtime of fixed symlinks. --- Command/Fix.hs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'Command') diff --git a/Command/Fix.hs b/Command/Fix.hs index c6b4df257..da2627619 100644 --- a/Command/Fix.hs +++ b/Command/Fix.hs @@ -5,6 +5,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Command.Fix where import System.PosixCompat.Files @@ -12,6 +14,9 @@ import System.PosixCompat.Files import Common.Annex import Command import qualified Annex.Queue +#ifndef __ANDROID__ +import Utility.Touch +#endif def :: [Command] def = [notDirect $ noCommit $ command "fix" paramPaths seek @@ -30,9 +35,18 @@ start file (key, _) = do perform :: FilePath -> FilePath -> CommandPerform perform file link = do - liftIO $ createDirectoryIfMissing True (parentDir file) - liftIO $ removeFile file - liftIO $ createSymbolicLink link file + liftIO $ do +#ifndef __ANDROID__ + -- preserve mtime of symlink + mtime <- catchMaybeIO $ TimeSpec . modificationTime + <$> getSymbolicLinkStatus file +#endif + createDirectoryIfMissing True (parentDir file) + removeFile file + createSymbolicLink link file +#ifndef __ANDROID__ + maybe noop (\t -> touch file t False) mtime +#endif next $ cleanup file cleanup :: FilePath -> CommandCleanup -- cgit v1.2.3