X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fmhshowsbr.c;fp=uip%2Fmhshowsbr.c;h=fe3afc4c7cf37e7c7952443a2ef93a7afd43dbd2;hp=adb0da7bbf1d1444e0ff347023c6b2e4b7990d19;hb=2433122c20baccb10b70b49c04c6b0497b5b3b60;hpb=559039d546e7eb1d160c4e3bd3538845b645546e diff --git a/uip/mhshowsbr.c b/uip/mhshowsbr.c index adb0da7..fe3afc4 100644 --- a/uip/mhshowsbr.c +++ b/uip/mhshowsbr.c @@ -335,6 +335,13 @@ show_content_aux(CT ct, int alternate, char *cp, char *cracked) } break; + case 'c': + /* insert charset */ + if (ct->c_charset) { + strncpy(bp, ct->c_charset, buflen); + } + break; + case 'd': /* insert content description */ if (ct->c_descr) { @@ -446,25 +453,6 @@ raw: } } - if (buflen <= 0 || (ct->c_termproc && - (size_t)buflen <= strlen(ct->c_termproc))) { - /* - ** content_error would provide a more useful error message - ** here, except that if we got overrun, it probably would - ** too. - */ - fprintf(stderr, "Buffer overflow constructing show command!\n"); - return NOTOK; - } - - /* use charset string to modify display method */ - if (ct->c_termproc) { - char term[BUFSIZ]; - - strncpy(term, buffer, sizeof(term)); - snprintf(buffer, sizeof(buffer), ct->c_termproc, term); - } - got_command: return show_content_aux2(ct, alternate, cracked, buffer, fd, xlist, xstdin, xtty); @@ -573,7 +561,12 @@ show_text(CT ct, int alternate) ** if it is not a text part of a multipart/alternative */ if (!alternate || ct->c_subtype == TEXT_PLAIN) { - snprintf(buffer, sizeof(buffer), "%%p%s '%%F'", defaultpager); + if (!check_charset(ct->c_charset, strlen(ct->c_charset))) { + snprintf(buffer, sizeof(buffer), "%%liconv -f '%s'", + ct->c_charset); + } else { + snprintf(buffer, sizeof(buffer), "%%lcat"); + } cp = (ct->c_showproc = getcpy(buffer)); return show_content_aux(ct, alternate, cp, NULL); } @@ -768,6 +761,13 @@ show_multi_aux(CT ct, int alternate, char *cp) } break; + case 'c': + /* insert charset */ + if (ct->c_charset) { + strncpy(bp, ct->c_charset, buflen); + } + break; + case 'd': /* insert content description */ if (ct->c_descr) { @@ -887,25 +887,6 @@ raw: } } - if (buflen <= 0 || (ct->c_termproc && - (size_t)buflen <= strlen(ct->c_termproc))) { - /* - ** content_error would provide a more useful error message - ** here, except that if we got overrun, it probably would - ** too. - */ - fprintf(stderr, "Buffer overflow constructing show command!\n"); - return NOTOK; - } - - /* use charset string to modify display method */ - if (ct->c_termproc) { - char term[BUFSIZ]; - - strncpy(term, buffer, sizeof(term)); - snprintf(buffer, sizeof(buffer), ct->c_termproc, term); - } - return show_content_aux2(ct, alternate, NULL, buffer, NOTOK, xlist, 0, xtty); }