summary refs log tree commit diff
path: root/concat.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-04-10 17:22:13 -0400
committerJune McEnroe <june@causal.agency>2020-04-10 17:22:13 -0400
commit93aa78f326683d14f243f74809f7bf000d7faebf (patch)
tree31226dad12ccc6dac51d6649d514a84cf9132a61 /concat.c
parentConcatenate mbox threads (diff)
downloadbubger-93aa78f326683d14f243f74809f7bf000d7faebf.tar.gz
bubger-93aa78f326683d14f243f74809f7bf000d7faebf.zip
Concatenate Atom threads
Diffstat (limited to 'concat.c')
-rw-r--r--concat.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/concat.c b/concat.c
index 2c58d8a..eeab073 100644
--- a/concat.c
+++ b/concat.c
@@ -119,14 +119,36 @@ void concatData(struct List threads, struct List items) {
 	if (error || file.st_mtime < uidNewest(flat, "mbox")) {
 		FILE *mbox = fopen(path, "w");
 		if (!mbox) err(EX_CANTCREAT, "%s", path);
+
 		for (size_t i = 0; i < flat.len; ++i) {
 			uint32_t uid = dataCheck(flat.ptr[i], Number).number;
 			error = concatFile(mbox, uidPath(uid, "mbox"));
 			if (error) err(EX_IOERR, "%s", path);
 		}
+
 		error = fclose(mbox);
 		if (error) err(EX_IOERR, "%s", path);
 	}
 
+	path = threadPath(envelope.messageID, "atom");
+	error = stat(path, &file);
+	if (error || file.st_mtime < uidNewest(flat, "atom")) {
+		FILE *atom = fopen(path, "w");
+		if (!atom) err(EX_CANTCREAT, "%s", path);
+
+		error = atomFeedHead(atom, &envelope);
+		if (error) err(EX_IOERR, "%s", path);
+
+		for (size_t i = 0; i < flat.len; ++i) {
+			uint32_t uid = dataCheck(flat.ptr[i], Number).number;
+			error = concatFile(atom, uidPath(uid, "atom"));
+			if (error) err(EX_IOERR, "%s", path);
+		}
+
+		error = atomFeedTail(atom)
+			|| fclose(atom);
+		if (error) err(EX_IOERR, "%s", path);
+	}
+
 	listFree(flat);
 }
.source-filterLars Hjemli 2009-08-08Expose file extension in tree lists as class to allow nicer tree stylingMartin Szulecki 2009-08-08Introduce noplainemail option to hide email adresses from spambotsMartin Szulecki 2009-07-31ui-commit: add support for 'commit-filter' optionLars Hjemli 2009-07-31ui-tree: add support for source-filter optionLars Hjemli 2009-07-31ui-snapshot: use cgit_{open|close}_filter() to execute compressorsLars Hjemli 2009-07-31Add generic filter/plugin infrastructureLars Hjemli 2009-07-25Add support for mime type registration and lookupLars Hjemli 2009-07-25cgit.h: keep config flags sortedLars Hjemli 2009-07-25cgitrc.5.txt: document 'embedded' and 'noheader'Lars Hjemli 2009-07-25Add support for 'noheader' optionLars Hjemli 2009-07-25cgitrc.5.txt: document 'head-include'Lars Hjemli 2009-07-25ui-blob: return 'application/octet-stream' for binary blobsLars Hjemli 2009-07-25ui-plain: Return 'application/octet-stream' for binary files.Remko Tronçon 2009-06-11use cgit_httpscheme() for atom feedDiego Ongaro 2009-06-11add cgit_httpscheme() -> http:// or https://Diego Ongaro 2009-06-07Return http statuscode 404 on unknown branchLars Hjemli 2009-06-07Add head-include configuration option.Mark Lodato 2009-03-15CGIT 0.8.2.1Lars Hjemli 2009-03-15Fix doc-related glitches in Makefile and .gitignoreLars Hjemli 2009-03-15ui-snapshot: avoid segfault when no filename is specifiedLars Hjemli 2009-03-15fix segfault when displaying empty blobsEric Wong 2009-02-19Add support for HEAD requestsLars Hjemli 2009-02-19Add support for ETag in 'plain' viewLars Hjemli 2009-02-12ui-tree: escape ascii-text properly in hexdump viewLars Hjemli 2009-02-12Makefile: add doc-related targetsLars Hjemli