diff options
author | Leah Neukirchen <leah@vuxu.org> | 2021-01-17 23:23:15 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2021-01-17 23:23:52 +0100 |
commit | e96f0707de039d8a58fb6b3d4037a345ae6f31cc (patch) | |
tree | 0bb1a1e3dab125b03bd4a976257569637d893678 | |
parent | 318ac214f1de06b0ee69106a36368b2d3b2ac902 (diff) | |
download | mblaze-e96f0707de039d8a58fb6b3d4037a345ae6f31cc.tar.gz mblaze-e96f0707de039d8a58fb6b3d4037a345ae6f31cc.tar.xz mblaze-e96f0707de039d8a58fb6b3d4037a345ae6f31cc.zip |
mshow: show last part of multipart/mixed when none matched
This is in conformance with RFC 1341.
-rw-r--r-- | man/mshow.1 | 2 | ||||
-rw-r--r-- | mshow.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/man/mshow.1 b/man/mshow.1 index 9126787..a19db2a 100644 --- a/man/mshow.1 +++ b/man/mshow.1 @@ -56,7 +56,7 @@ in the order given, when rendering .Sq Li "multipart/alternative" parts. -If no MIME type matches, the first MIME part will be rendered. +If no MIME type matches, the last MIME part will be rendered. .Pp When .Ar mimetypes 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) |