diff --git a/man/mshow.1 b/man/mshow.1 index 21c82f5..f58d2ec 100644 --- a/man/mshow.1 +++ b/man/mshow.1 @@ -76,8 +76,10 @@ Like .Fl x but write to standard output. When used together with -.Fl H , -print the headers of the MIME part too. +.Fl r , +the whole part is raw, +that is, +un-decoded and including MIME part headers. .It Fl t Switch to list mode: list all MIME parts of each diff --git a/mshow.c b/mshow.c index c24f31f..f836b76 100644 --- a/mshow.c +++ b/mshow.c @@ -443,13 +443,17 @@ extract_mime(int depth, struct message *msg, char *body, size_t bodylen) if (errno == 0 && !*b && d == mimecount) { // extract by id if (extract_stdout) { - if (Hflag) { + if (rflag) { fwrite(blaze822_orig_header(msg), 1, blaze822_headerlen(msg), stdout); printf("\n\n"); + fwrite(blaze822_body(msg), + 1, blaze822_bodylen(msg), + stdout); + } else { + fwrite(body, 1, bodylen, stdout); } - fwrite(body, 1, bodylen, stdout); } else { char buf[255]; char *bufptr; @@ -467,13 +471,17 @@ extract_mime(int depth, struct message *msg, char *body, size_t bodylen) fnmatch(a, filename, FNM_PATHNAME) == 0) { // extract by name if (extract_stdout) { - if (Hflag) { + if (rflag) { fwrite(blaze822_orig_header(msg), 1, blaze822_headerlen(msg), stdout); printf("\n\n"); + fwrite(blaze822_body(msg), + 1, blaze822_bodylen(msg), + stdout); + } else { + fwrite(body, 1, bodylen, stdout); } - fwrite(body, 1, bodylen, stdout); } else { printf("%s\n", filename); writefile(filename, body, bodylen);