summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-04-26 19:33:35 -0400
committerJune McEnroe <june@causal.agency>2020-04-26 19:34:25 -0400
commit1af3e4b0d325565abcb3dc3dac1fcaf960f6e9d6 (patch)
tree5d222cde61b1d2552da0167ecf27de7fa935d8de
parentInclude Cc address in reply mailtos (diff)
downloadbubger-1af3e4b0d325565abcb3dc3dac1fcaf960f6e9d6.tar.gz
bubger-1af3e4b0d325565abcb3dc3dac1fcaf960f6e9d6.zip
Iterate through nested multiparts to find content for Atom
Also fixes content for multipart/signed.
-rw-r--r--export.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/export.c b/export.c
index ab77587..fb26e74 100644
--- a/export.c
+++ b/export.c
@@ -120,16 +120,17 @@ static void exportAtom(
 	if (error) err(EX_IOERR, "%s", path);
 
 	const struct BodyPart *part = structure;
-	if (bodyPartType(part, "multipart", "mixed")) {
-		part = &part->parts.ptr[0];
-		body = dataCheck(body, List).list.ptr[0];
-	}
-	if (bodyPartType(part, "multipart", "alternative")) {
-		for (size_t i = part->parts.len - 1; i < part->parts.len; --i) {
-			if (!isInline(&part->parts.ptr[i])) continue;
-			part = &part->parts.ptr[i];
-			body = dataCheck(body, List).list.ptr[i];
-			break;
+	while (part->multipart) {
+		if (bodyPartType(part, "multipart", "alternative")) {
+			for (size_t i = part->parts.len - 1; i < part->parts.len; --i) {
+				if (!isInline(&part->parts.ptr[i])) continue;
+				part = &part->parts.ptr[i];
+				body = dataCheck(body, List).list.ptr[i];
+				break;
+			}
+		} else {
+			part = &part->parts.ptr[0];
+			body = dataCheck(body, List).list.ptr[0];
 		}
 	}
 	if (isInline(part)) {
ass='logmsg'> 2018-09-13Add IRCDefault to colors enumJune McEnroe 2018-09-13Return a format->split even at the end of the stringJune McEnroe 2018-09-13Fix weird tab-complete after commaJune McEnroe I have no idea why I did this. 2018-09-13Rewrite UI againJune McEnroe The persistent topic is gone and the status line is now at the top. The status formatting still needs to be reworked. I also want to try showing the nick in the input window so it really looks like your next message. 2018-09-12Add note about C-oJune McEnroe Why are there so few well usable ctrl key bindings? 2018-09-12Use formatParse split to position input cursorJune McEnroe 2018-09-12Factor out IRC formatting parsingJune McEnroe 2018-09-11Add /help equivalent to /manJune McEnroe 2018-09-11Don't render every PM as a pingJune McEnroe 2018-09-11Add urlOpenMatchJune McEnroe 2018-09-10Depend on man.sh for chroot.tar targetJune McEnroe 2018-09-10Set LESSSECURE=1 in man.shJune McEnroe Ridiculous. 2018-09-10Add /man commandJune McEnroe 2018-09-10Install man page in chrootJune McEnroe 2018-09-10Install man pageJune McEnroe 2018-09-10Split keys into subsections and document colorsJune McEnroe 2018-09-10Add "blank" lines to chatte.1June McEnroe 2018-09-10Document key bindings in chatte.1June McEnroe 2018-09-08Document slash commands in chatte.1June McEnroe