summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assistant/DaemonStatus.hs10
-rw-r--r--Command/Fsck.hs8
-rw-r--r--Command/Log.hs6
-rw-r--r--Logs/MapLog.hs7
-rw-r--r--Logs/Presence/Pure.hs5
-rw-r--r--Logs/SingleValue.hs5
-rw-r--r--Logs/Transfer.hs7
-rw-r--r--Logs/Transitions.hs8
-rw-r--r--Logs/UUIDBased.hs7
-rw-r--r--Logs/Unused.hs4
10 files changed, 28 insertions, 39 deletions
diff --git a/Assistant/DaemonStatus.hs b/Assistant/DaemonStatus.hs
index 1ed40595e..4c42ffdbe 100644
--- a/Assistant/DaemonStatus.hs
+++ b/Assistant/DaemonStatus.hs
@@ -16,6 +16,7 @@ import Assistant.Types.NetMessager
import Utility.NotificationBroadcaster
import Logs.Transfer
import Logs.Trust
+import Logs.TimeStamp
import qualified Remote
import qualified Types.Remote as Remote
import qualified Git
@@ -23,8 +24,6 @@ import qualified Git
import Control.Concurrent.STM
import System.Posix.Types
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
import qualified Data.Map as M
import qualified Data.Set as S
import qualified Data.Text as T
@@ -125,21 +124,18 @@ readDaemonStatusFile file = parse <$> newDaemonStatus <*> readFile file
where
parse status = foldr parseline status . lines
parseline line status
- | key == "lastRunning" = parseval readtime $ \v ->
+ | key == "lastRunning" = parseval parsePOSIXTime $ \v ->
status { lastRunning = Just v }
| key == "scanComplete" = parseval readish $ \v ->
status { scanComplete = v }
| key == "sanityCheckRunning" = parseval readish $ \v ->
status { sanityCheckRunning = v }
- | key == "lastSanityCheck" = parseval readtime $ \v ->
+ | key == "lastSanityCheck" = parseval parsePOSIXTime $ \v ->
status { lastSanityCheck = Just v }
| otherwise = status -- unparsable line
where
(key, value) = separate (== ':') line
parseval parser a = maybe status a (parser value)
- readtime s = do
- d <- parseTime defaultTimeLocale "%s%Qs" s
- Just $ utcTimeToPOSIXSeconds d
{- Checks if a time stamp was made after the daemon was lastRunning.
-
diff --git a/Command/Fsck.hs b/Command/Fsck.hs
index be59484d9..479f4521c 100644
--- a/Command/Fsck.hs
+++ b/Command/Fsck.hs
@@ -24,6 +24,7 @@ import Annex.Link
import Logs.Location
import Logs.Trust
import Logs.Activity
+import Logs.TimeStamp
import Annex.NumCopies
import Annex.UUID
import Utility.DataUnits
@@ -37,9 +38,7 @@ import Utility.PID
import qualified Database.Fsck as FsckDb
import Data.Time.Clock.POSIX
-import Data.Time
import System.Posix.Types (EpochTime)
-import System.Locale
cmd :: [Command]
cmd = [withOptions fsckOptions $ command "fsck" paramPaths seek
@@ -476,14 +475,11 @@ getStartTime u = do
liftIO $ catchDefaultIO Nothing $ do
timestamp <- modificationTime <$> getFileStatus f
let fromstatus = Just (realToFrac timestamp)
- fromfile <- readishTime <$> readFile f
+ fromfile <- parsePOSIXTime <$> readFile f
return $ if matchingtimestamp fromfile fromstatus
then Just timestamp
else Nothing
where
- readishTime :: String -> Maybe POSIXTime
- readishTime s = utcTimeToPOSIXSeconds <$>
- parseTime defaultTimeLocale "%s%Qs" s
matchingtimestamp fromfile fromstatus =
#ifndef mingw32_HOST_OS
fromfile == fromstatus
diff --git a/Command/Log.hs b/Command/Log.hs
index 4bc7bb89a..e1438ba15 100644
--- a/Command/Log.hs
+++ b/Command/Log.hs
@@ -5,15 +5,19 @@
- Licensed under the GNU GPL version 3 or higher.
-}
+{-# LANGUAGE CPP #-}
+
module Command.Log where
import qualified Data.Set as S
import qualified Data.Map as M
import qualified Data.ByteString.Lazy.Char8 as L
+import Data.Char
import Data.Time.Clock.POSIX
import Data.Time
+#if ! MIN_VERSION_time(1,5,0)
import System.Locale
-import Data.Char
+#endif
import Common.Annex
import Command
diff --git a/Logs/MapLog.hs b/Logs/MapLog.hs
index 3c7eef26b..d5bb67f68 100644
--- a/Logs/MapLog.hs
+++ b/Logs/MapLog.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
{- git-annex Map log
-
- This is used to store a Map, in a way that can be union merged.
@@ -13,10 +15,9 @@ module Logs.MapLog where
import qualified Data.Map as M
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
import Common
+import Logs.TimeStamp
data TimeStamp = Unknown | Date POSIXTime
deriving (Eq, Ord, Show)
@@ -42,7 +43,7 @@ parseMapLog fieldparser valueparser = M.fromListWith best . mapMaybe parse . lin
parse line = do
let (ts, rest) = splitword line
(sf, sv) = splitword rest
- date <- Date . utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" ts
+ date <- Date <$> parsePOSIXTime ts
f <- fieldparser sf
v <- valueparser sv
Just (f, LogEntry date v)
diff --git a/Logs/Presence/Pure.hs b/Logs/Presence/Pure.hs
index 88f18435f..ec4415aad 100644
--- a/Logs/Presence/Pure.hs
+++ b/Logs/Presence/Pure.hs
@@ -8,11 +8,10 @@
module Logs.Presence.Pure where
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
import qualified Data.Map as M
import Common.Annex
+import Logs.TimeStamp
import Utility.QuickCheck
data LogLine = LogLine {
@@ -29,7 +28,7 @@ parseLog :: String -> [LogLine]
parseLog = mapMaybe parseline . lines
where
parseline l = LogLine
- <$> (utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" d)
+ <$> parsePOSIXTime d
<*> parseStatus s
<*> pure rest
where
diff --git a/Logs/SingleValue.hs b/Logs/SingleValue.hs
index dbbe996f3..213bcd217 100644
--- a/Logs/SingleValue.hs
+++ b/Logs/SingleValue.hs
@@ -15,11 +15,10 @@ module Logs.SingleValue where
import Common.Annex
import qualified Annex.Branch
+import Logs.TimeStamp
import qualified Data.Set as S
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
class SingleValueSerializable v where
serialize :: v -> String
@@ -42,7 +41,7 @@ parseLog = S.fromList . mapMaybe parse . lines
where
parse line = do
let (ts, s) = splitword line
- date <- utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" ts
+ date <- parsePOSIXTime ts
v <- deserialize s
Just (LogEntry date v)
splitword = separate (== ' ')
diff --git a/Logs/Transfer.hs b/Logs/Transfer.hs
index 5b5b8f8cb..078157208 100644
--- a/Logs/Transfer.hs
+++ b/Logs/Transfer.hs
@@ -18,11 +18,10 @@ import Utility.Percentage
import Utility.QuickCheck
import Utility.PID
import Utility.LockFile
+import Logs.TimeStamp
import Data.Time.Clock
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
import Control.Concurrent
{- Enough information to uniquely identify a transfer, used as the filename
@@ -276,10 +275,6 @@ readTransferInfo mpid s = TransferInfo
then Just <$> readish =<< headMaybe (drop 1 bits)
else pure Nothing -- not failure
-parsePOSIXTime :: String -> Maybe POSIXTime
-parsePOSIXTime s = utcTimeToPOSIXSeconds
- <$> parseTime defaultTimeLocale "%s%Qs" s
-
{- The directory holding transfer information files for a given Direction. -}
transferDir :: Direction -> Git.Repo -> FilePath
transferDir direction r = gitAnnexTransferDir r </> showLcDirection direction
diff --git a/Logs/Transitions.hs b/Logs/Transitions.hs
index d782455a6..5ccfd7e8c 100644
--- a/Logs/Transitions.hs
+++ b/Logs/Transitions.hs
@@ -15,11 +15,10 @@
module Logs.Transitions where
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
import qualified Data.Set as S
import Common.Annex
+import Logs.TimeStamp
transitionsLog :: FilePath
transitionsLog = "transitions.log"
@@ -66,12 +65,13 @@ showTransitionLine :: TransitionLine -> String
showTransitionLine (TransitionLine ts t) = unwords [show t, show ts]
parseTransitionLine :: String -> Maybe TransitionLine
-parseTransitionLine s = TransitionLine <$> pdate ds <*> readish ts
+parseTransitionLine s = TransitionLine
+ <$> parsePOSIXTime ds
+ <*> readish ts
where
ws = words s
ts = Prelude.head ws
ds = unwords $ Prelude.tail ws
- pdate = utcTimeToPOSIXSeconds <$$> parseTime defaultTimeLocale "%s%Qs"
combineTransitions :: [Transitions] -> Transitions
combineTransitions = S.unions
diff --git a/Logs/UUIDBased.hs b/Logs/UUIDBased.hs
index ac876e65f..5613c6fb4 100644
--- a/Logs/UUIDBased.hs
+++ b/Logs/UUIDBased.hs
@@ -30,12 +30,11 @@ module Logs.UUIDBased (
import qualified Data.Map as M
import Data.Time.Clock.POSIX
-import Data.Time
-import System.Locale
import Common
import Types.UUID
import Logs.MapLog
+import Logs.TimeStamp
type Log v = MapLog UUID v
@@ -73,9 +72,9 @@ parseLogWithUUID parser = M.fromListWith best . mapMaybe parse . lines
info
| ts == Unknown = drop 1 ws
| otherwise = drop 1 $ beginning ws
- pdate s = case parseTime defaultTimeLocale "%s%Qs" s of
+ pdate s = case parsePOSIXTime s of
Nothing -> Unknown
- Just d -> Date $ utcTimeToPOSIXSeconds d
+ Just d -> Date d
showLogNew :: (v -> String) -> Log v -> String
showLogNew = showMapLog fromUUID
diff --git a/Logs/Unused.hs b/Logs/Unused.hs
index 883ab8c5b..7a12f186c 100644
--- a/Logs/Unused.hs
+++ b/Logs/Unused.hs
@@ -32,12 +32,12 @@ import qualified Data.Map as M
import qualified Data.Set as S
import Data.Time.Clock.POSIX
import Data.Time
-import System.Locale
import Common.Annex
import qualified Annex
import Types.Key
import Utility.Tmp
+import Logs.TimeStamp
-- everything that is stored in the unused log
type UnusedLog = M.Map Key (Int, Maybe POSIXTime)
@@ -81,7 +81,7 @@ readUnusedLog prefix = do
, return M.empty
)
where
- parse line = case (readish sint, file2key skey, utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" ts) of
+ parse line = case (readish sint, file2key skey, parsePOSIXTime ts) of
(Just int, Just key, mtimestamp) -> Just (key, (int, mtimestamp))
_ -> Nothing
where