diff options
-rw-r--r-- | mshow.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mshow.c b/mshow.c index 4d4e217..d5bd971 100644 --- a/mshow.c +++ b/mshow.c @@ -210,12 +210,24 @@ render_mime(int depth, struct message *msg, char *body, size_t bodylen) if (e == 0) { printf(" render=\"%s\" ---\n", cmd); print_ascii(output, outlen); + } else if (e == 63) { // skip filter + free(output); + goto nofilter; } else if (e == 64) { // decode output again printf(" filter=\"%s\" ---\n", cmd); struct message *imsg = blaze822_mem(output, outlen); if (imsg) walk_mime(imsg, depth+1, render_mime); blaze822_free(imsg); + } else if (e >= 65 && e <= 80) { // choose N-64th part + struct message *imsg = 0; + int n = e - 64; + printf(" selector=\"%s\" part=%d ---\n", cmd, n); + while (blaze822_multipart(msg, &imsg)) { + if (--n == 0) + walk_mime(imsg, depth+1, render_mime); + } + blaze822_free(imsg); } else { printf(" filter=\"%s\" FAILED status=%d", cmd, e); free(output); |