TAKAHASHI Tamotsu
ttaka****@lapis*****
2005年 3月 19日 (土) 12:05:01 JST
高橋全です。 On Fri, 18 Mar 2005, TAKAHASHI Tamotsu wrote: > > assumed_charset なんですが、Alain や Vincent が言うには > > 「変換に失敗しても変換前のを strncpy() するだけじゃあヤダ」 > > 「失敗してもとにかく '?' とかにして変換してくれ」 > > ということです。 > > > > それで mutt-dev には > > http://marc.theaimsgroup.com/?l=mutt-dev&m=110873485407136&w=2 > > のようなパッチを送ってあるのですが、どうでしょうか。 > > convert_nonmime_string() の中で、最後まで行っちゃったら > > AssumedCharset の最初の値で mutt_convert_string() を呼ぶように > > してあります。そして convert_nonmime_string() の返り値が何で > > あろうと、その変換された文字列を使うようにしてあるんです。 > > > > こうするとボディと似てて一貫性がありますよね。 > > 実際、よくわからないデータが来たときにそのまま画面に出ちゃうと > > 化け化けで気持ち悪いので、こういう動作は好きです。 すみません。 この部分のキモを忘れていました。 修正版を添付します。 -- tamo -------------- next part -------------- diff -u mutt-1.5.9/rfc2047.c mutt-1.5.9/rfc2047.c --- mutt-1.5.9/rfc2047.c 2005-03-14 23:22:11.421597240 +0900 +++ mutt-1.5.9/rfc2047.c 2005-03-14 23:22:11.421597240 +0900 @@ -109,7 +109,7 @@ c1 = strchr (c, ':'); n = c1 ? c1 - c : mutt_strlen (c); if (!n) - continue; + return 0; fromcode = safe_malloc (n + 1); strfcpy (fromcode, c, n + 1); m = convert_string (u, ulen, fromcode, Charset, &s, &slen); @@ -121,6 +121,9 @@ return 0; } } + mutt_convert_string (ps, + (const char *)mutt_get_default_charset (AssumedCharset), + Charset, M_ICONV_HOOK_FROM); return -1; } @@ -829,17 +832,10 @@ n = mutt_strlen (s); t = safe_malloc (n + 1); strfcpy (t, s, n + 1); - if (convert_nonmime_string (&t) == 0) - { - tlen = mutt_strlen (t); - strncpy (d, t, tlen); - d += tlen; - } - else - { - strncpy (d, s, n); - d += n; - } + convert_nonmime_string (&t); + tlen = mutt_strlen (t); + strncpy (d, t, tlen); + d += tlen; FREE (&t); break; }