From 243302a3ead05d463f4de092cb334ea06ae34ad3 Mon Sep 17 00:00:00 2001 From: joe Date: Tue, 29 Apr 2014 19:51:56 -0400 Subject: implemented getInputFileTime --- KeyRing.hs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'KeyRing.hs') diff --git a/KeyRing.hs b/KeyRing.hs index 3765f42..f9720fa 100644 --- a/KeyRing.hs +++ b/KeyRing.hs @@ -93,10 +93,11 @@ import qualified Crypto.Hash.SHA1 as SHA1 import qualified Data.Text as T ( Text, unpack, pack, strip, reverse, drop, break, dropAround ) import qualified System.Posix.Types as Posix -import System.Posix.Files ( modificationTime, getFileStatus +import System.Posix.Files ( modificationTime, getFileStatus, getFdStatus , setFileCreationMask, setFileTimes ) import System.FilePath ( takeDirectory ) import System.IO (hPutStrLn,withFile,IOMode(..)) +import Foreign.C.Types ( CTime ) import Data.IORef import System.Posix.IO ( fdToHandle ) import qualified Data.Traversable as Traversable ( mapM ) @@ -845,6 +846,16 @@ readInputFileL ctx inp = do let fname = resolveInputFile ctx inp fmap L.concat $ mapM L.readFile fname + +getInputFileTime :: InputFileContext -> InputFile -> IO CTime +getInputFileTime ctx (FileDesc fd) = do + handleIO_ (error $ "&"++show fd++": modificaiton time?") $ + modificationTime <$> getFdStatus fd +getInputFileTime ctx (resolveInputFile ctx -> [fname]) = do + handleIO_ (error $ fname++": modificaiton time?") $ + modificationTime <$> getFileStatus fname + + cachedContents :: InputFileContext -> InputFile -> IO (IO S.ByteString) cachedContents ctx fd = do ref <- newIORef Nothing -- cgit v1.2.3