X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=charset.c;h=4dc0f3be02434b43c5e3287246b3e7b2628dd0f4;hb=16ff93bd19515d67ea15468b4adb35395970a559;hp=19c3a2b5440c579ab0898a9f608803d29c0b1a7b;hpb=6833ce8bdca2d64e14485118f2a4417b7e1cb1b1;p=apps%2Fmadmutt.git diff --git a/charset.c b/charset.c index 19c3a2b..4dc0f3b 100644 --- a/charset.c +++ b/charset.c @@ -19,6 +19,9 @@ * Boston, MA 02111, USA. */ +#if HAVE_CONFIG_H +# include "config.h" +#endif #include #include @@ -196,6 +199,7 @@ PreferredMIMENames[] = /* seems to be common on some systems */ { "sjis", "Shift_JIS" }, + { "euc-jp-ms", "eucJP-ms" }, /* @@ -379,18 +383,24 @@ size_t mutt_iconv (iconv_t cd, ICONV_CONST char **inbuf, size_t *inbytesleft, if (*t) continue; } - if (outrepl) + /* Replace the output */ + if (!outrepl) + outrepl = "?"; + iconv (cd, 0, 0, &ob, &obl); + if (obl) { - /* Try replacing the output */ int n = strlen (outrepl); - if (n <= obl) + if (n > obl) { - memcpy (ob, outrepl, n); - ++ib, --ibl; - ob += n, obl -= n; - ++ret; - continue; + outrepl = "?"; + n = 1; } + memcpy (ob, outrepl, n); + ++ib, --ibl; + ob += n, obl -= n; + ++ret; + iconv (cd, 0, 0, 0, 0); /* for good measure */ + continue; } } *inbuf = ib, *inbytesleft = ibl;