diff options
author | June McEnroe <june@causal.agency> | 2020-04-10 17:22:13 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-04-10 17:22:13 -0400 |
commit | 93aa78f326683d14f243f74809f7bf000d7faebf (patch) | |
tree | 31226dad12ccc6dac51d6649d514a84cf9132a61 /concat.c | |
parent | Concatenate mbox threads (diff) | |
download | bubger-93aa78f326683d14f243f74809f7bf000d7faebf.tar.gz bubger-93aa78f326683d14f243f74809f7bf000d7faebf.zip |
Concatenate Atom threads
Diffstat (limited to '')
-rw-r--r-- | concat.c | 22 |
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); } |