diff options
-rw-r--r-- | Logs/Presence/Pure.hs | 4 | ||||
-rw-r--r-- | doc/internals.mdwn | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/Logs/Presence/Pure.hs b/Logs/Presence/Pure.hs index ec4415aad..b1fc212fd 100644 --- a/Logs/Presence/Pure.hs +++ b/Logs/Presence/Pure.hs @@ -20,7 +20,7 @@ data LogLine = LogLine { info :: String } deriving (Eq, Show) -data LogStatus = InfoPresent | InfoMissing +data LogStatus = InfoPresent | InfoMissing | InfoDead deriving (Eq, Show, Bounded, Enum) {- Parses a log file. Unparseable lines are ignored. -} @@ -38,6 +38,7 @@ parseLog = mapMaybe parseline . lines parseStatus :: String -> Maybe LogStatus parseStatus "1" = Just InfoPresent parseStatus "0" = Just InfoMissing +parseStatus "X" = Just InfoDead parseStatus _ = Nothing {- Generates a log file. -} @@ -47,6 +48,7 @@ showLog = unlines . map genline genline (LogLine d s i) = unwords [show d, genstatus s, i] genstatus InfoPresent = "1" genstatus InfoMissing = "0" + genstatus InfoDead = "X" {- Given a log, returns only the info that is are still in effect. -} getLog :: String -> [String] diff --git a/doc/internals.mdwn b/doc/internals.mdwn index 7e8f4b19a..c6dcb9621 100644 --- a/doc/internals.mdwn +++ b/doc/internals.mdwn @@ -171,8 +171,8 @@ for file contents. These are placed in two levels of subdirectories for hashing. See [[hashing]] for details. The name of the key is the filename, and the content -consists of a timestamp, either 1 (present) or 0 (not present), and -the UUID of the repository that has or lacks the file content. +consists of a timestamp, either 1 (present) or 0 (not present) or X (dead), +and the UUID of the repository that has or lacks the file content. Example: |