summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Logs/Presence/Pure.hs4
-rw-r--r--doc/internals.mdwn4
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: