From 93aa78f326683d14f243f74809f7bf000d7faebf Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Fri, 10 Apr 2020 17:22:13 -0400 Subject: Concatenate Atom threads --- concat.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'concat.c') 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); } -- cgit 1.4.1