about summary refs log tree commit diff
path: root/mshow.c
diff options
context:
space:
mode:
Diffstat (limited to 'mshow.c')
-rw-r--r--mshow.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/mshow.c b/mshow.c
index f66e7b2..5ab309a 100644
--- a/mshow.c
+++ b/mshow.c
@@ -336,7 +336,7 @@ nofilter:
 static void
 choose_alternative(struct message *msg, int depth)
 {
-	int n = 1;
+	int n = 0;
 	int m = 0;
 	char *p = Aflag + strlen(Aflag);
 
@@ -363,6 +363,13 @@ choose_alternative(struct message *msg, int depth)
 	}
 	blaze822_free(imsg);
 
+	if (n == 0) {
+		// No part matched, use last part as per RFC1341 7.2.3
+		// "In general, choosing the best type means displaying
+		// only the LAST part that can be displayed."
+		n = m;
+	}
+
 	imsg = 0;
 	while (blaze822_multipart(msg, &imsg))
 		if (--n == 0)