From 0583e4c0c36ac3ebd4479c674ebd1dd0d5e8fe0d Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sun, 12 Apr 2020 14:09:34 -0400 Subject: Fetch and parse BODYSTRUCTURE --- archive.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'archive.c') diff --git a/archive.c b/archive.c index c84b74e..69d3c77 100644 --- a/archive.c +++ b/archive.c @@ -112,6 +112,7 @@ int main(int argc, char *argv[]) { Concat, Logout, } state = Ready; + size_t exportTags = 0; enum Atom login = atom("login"); enum Atom examine = atom("examine"); @@ -185,6 +186,7 @@ int main(int argc, char *argv[]) { threads = resp.data; resp.data = (struct List) {0}; if (exportFetch(imap, export, threads)) { + exportTags = 1; state = Export; } else { concatFetch(imap, concat, threads); @@ -195,9 +197,10 @@ int main(int argc, char *argv[]) { break; case Export: { if (resp.resp == AtomFetch) { if (!resp.data.len) errx(EX_PROTOCOL, "missing FETCH data"); - exportData(dataCheck(resp.data.ptr[0], List).list); + struct List items = dataCheck(resp.data.ptr[0], List).list; + if (exportData(imap, export, items)) exportTags++; } - if (resp.tag != export) break; + if (resp.tag != export || --exportTags) break; concatFetch(imap, concat, threads); state = Concat; } -- cgit 1.4.1