aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorC. McEnroe <june@causal.agency>2020-02-14 05:20:22 -0500
committerC. McEnroe <june@causal.agency>2020-02-14 05:20:22 -0500
commit0d23f8f1b8d264e2dce82bd740e376a5731a2478 (patch)
tree7edec6bc4e9d44dc417a80b5e9efe7ff2ceb7427
parentTrack unreadTotal and unreadWarm separately (diff)
downloadcatgirl-0d23f8f1b8d264e2dce82bd740e376a5731a2478.tar.gz
catgirl-0d23f8f1b8d264e2dce82bd740e376a5731a2478.zip
Save heat, unreadTotal, unreadWarm
-rw-r--r--ui.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/ui.c b/ui.c
index f5c4936..3b1fdc1 100644
--- a/ui.c
+++ b/ui.c
@@ -950,7 +950,8 @@ void uiRead(void) {
}
static const time_t Signatures[] = {
- 0x6C72696774616301,
+ 0x6C72696774616301, // no heat, unreadTotal, unreadWarm
+ 0x6C72696774616302,
};
static size_t signatureVersion(time_t signature) {
@@ -971,10 +972,13 @@ int uiSave(const char *name) {
FILE *file = dataOpen(name, "w");
if (!file) return -1;
- if (writeTime(file, Signatures[0])) return -1;
+ if (writeTime(file, Signatures[1])) return -1;
for (size_t num = 0; num < windows.len; ++num) {
const struct Window *window = windows.ptrs[num];
if (writeString(file, idNames[window->id])) return -1;
+ if (writeTime(file, window->heat)) return -1;
+ if (writeTime(file, window->unreadTotal)) return -1;
+ if (writeTime(file, window->unreadWarm)) return -1;
for (size_t i = 0; i < BufferCap; ++i) {
time_t time = bufferTime(&window->buffer, i);
const char *line = bufferLine(&window->buffer, i);
@@ -1017,12 +1021,17 @@ void uiLoad(const char *name) {
fclose(file);
return;
}
- signatureVersion(signature);
+ size_t version = signatureVersion(signature);
char *buf = NULL;
size_t cap = 0;
while (0 < readString(file, &buf, &cap)) {
struct Window *window = windows.ptrs[windowFor(idFor(buf))];
+ if (version > 0) {
+ window->heat = readTime(file);
+ window->unreadTotal = readTime(file);
+ window->unreadWarm = readTime(file);
+ }
for (;;) {
time_t time = readTime(file);
if (!time) break;
@@ -1031,6 +1040,7 @@ void uiLoad(const char *name) {
}
reflow(window);
waddch(window->pad, '\n');
+ window->unreadLines++;
}
free(buf);