summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-14 05:20:22 -0500
committerJune 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);
mmit/bin/htagml.c?id=4bd6bb0f36f1e234a6aa8f1cd3d2660c9888b838&follow=1'>Split fields by tab onlyJune McEnroe 2021-01-12List both Makefile and html.sh under README.7June McEnroe 2021-01-12Add htagml exampleJune McEnroe 2021-01-12Use mandoc and htagml for bin htmlJune McEnroe 2021-01-12Add htagmlJune McEnroe 2021-01-12Replace causal.agency with a simple mdoc pageJune McEnroe 2021-01-11Publish "Using vi"June McEnroe 2021-01-11Enable diff.colorMovedJune McEnroe 2021-01-10Set less search case-insensitiveJune McEnroe 2021-01-10Set EXINITJune McEnroe 2021-01-09Add c -t flag to print expression typeJune McEnroe 2021-01-05Update taglineJune McEnroe