Ticket #11239

MIME encode で、長大な ASCII 単語を与えたときの処理が変
Open Date: 2007-10-30 23:04 Last Update: 2008-05-28 23:52

Reporter:
Owner:
(None)
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Accepted
File:
5

Details

CVS 先頭でもほぼ同じく駄目です。正直言って処理がメチャ
メチャレベルですが、以下は確認しました。

(1) 指定したエンコーディングとは無関係に、ASCII-Q
(2.0.7 では EUC) が使われる。ついでに、この動作について
は現在の man は誤り。
(2) Q-encoding が正しく動かない。エスケープすべき文字が
筒抜けになる。
(3) 74 文字の wordwrap 処理が無視される。

見た感じだと相当直さなければ、って感触ですけど、いちお
う修正パッチを検討中。

Ticket History (3/17 Histories)

2007-11-01 01:33 Updated by: naruse
Comment
Logged In: YES
user_id=3487

もともとあったコードに空白が来た時の処理等を加えたらカオスに
なってしまったのですよね・・・。全部捨てて、他から頂いてくる
かスクラッチから書き直すかを検討しつつ今に至っています。

1と2は容易に直せそうなのですが、手元で再現できないので再現コ
ードいただけませんか。
2007-11-01 22:24 Updated by: efialtes
Comment
Logged In: YES
user_id=3309

とりあえず。
ちなみに 2, 3 は単純な処理抜けっぽいですけど、1 と、現在検出
している改行コードと無関係に LF を吐く、ってのは修正が結構大
変なような。後者はなんか闇試合っぽくてよくわかりません。
2007-11-01 22:24 Updated by: efialtes
  • File 2073: longascii.txt is attached
2007-11-02 10:37 Updated by: efialtes
  • File 2074: diff0.txt is attached
Comment
Logged In: YES
user_id=3309

とりあえずパッチ。LF の件には何も手をつけていません。
2007-11-02 13:26 Updated by: efialtes
  • File 2075: diff1.txt is attached
Comment
Logged In: YES
user_id=3309

あー、MIME-B の方も駄目ですね。diff1 の方を使ってください。

#これでいいのかどうかはちょっと微妙ですけど。
2007-11-02 14:30 Updated by: efialtes
  • File 2076: diff1.txt is attached
2007-11-02 14:32 Updated by: efialtes
  • File 2077: diff1.txt is attached
2007-11-03 07:14 Updated by: naruse
Comment
Logged In: YES
user_id=3487

ありがとうございます、一部マージしました。

(1)ですが、これは意図した挙動です。ASCIIのみの文字列の場合は
ASCII-Qにするようにした・・・ような記憶があります。たぶんそ
のほうが容量が少なくて済むからでしょう。マニュアルのJISに変
換云々は非ASCII文字列についてという解釈です。これでも特に問
題ないですよね。

LF云々というのが理解できていないのですが何のことでしょう。
2007-11-03 17:04 Updated by: naruse
Comment
Logged In: YES
user_id=3487

nkf.c rev:1.147で件のlongascii.txtはまともになった気がしま
す。
2007-11-04 23:10 Updated by: efialtes
Comment
Logged In: YES
user_id=3309

UTF-8 のときも ASCII/ISO8859-1 になるのは変だと思いますけ
ど、JISについては現状でも趣味の範囲と思います。ただ、マニュ
アルの件はそういう話ではなく、EUC 出力だと EUC-JP, UTF-8 だ
と UTF-8 の MIME になっていますから、JIS ではないでしょうと
いうことです。man は直す必要あると思う。
LF絡みに関しては、現在 MIME 用の folding は必ず LF 改行に
なってません? これは私の錯覚かも。
2007-11-04 23:11 Updated by: efialtes
Comment
Logged In: YES
user_id=3309

UTF-8 のときも ASCII/ISO8859-1 になるのは変だと思いますけ
ど、JISについては現状でも趣味の範囲と思います。ただ、マニュ
アルの件はそういう話ではなく、EUC 出力だと EUC-JP, UTF-8 だ
と UTF-8 の MIME になっていますから、JIS ではないでしょうと
いうことです。man は直す必要あると思う。
LF絡みに関しては、現在 MIME 用の folding は必ず LF 改行に
なってません? これは私の錯覚かも。
2007-11-05 01:14 Updated by: naruse
Comment
Logged In: YES
user_id=3487

UTF-8でISO-8859-1は確かに微妙ですね、これは直します。ASCIIは
そのままにしとこうかな。
あー、言われてみればそうですね。JISに変換の記述は削除してお
きます。
LFは確かにそうですね。これも直します。
2007-11-05 22:58 Updated by: efialtes
Comment
Logged In: YES
user_id=3309

ごめんなさい。() の二文字も Q-encode のエスケープ対象に含め
てください。

# 知ってはいたんですけど、パッチでの修正からファイルの出し入
れの都合で漏れていたため。
2007-11-06 21:28 Updated by: naruse
Comment
Logged In: YES
user_id=3487

* UTF-8出力の場合のISO-8859-1
* JISに変換の記述
* nkf_noescape_mime()に()を追加
* 多少の調整
を行いました。

改行の検出を実装したのでいけるかと思ったのですが、
一行目から折り返しが必要な場合どうするか考え中。
2007-11-06 22:50 Updated by: efialtes
Comment
Logged In: YES
user_id=3309

folding と一緒で、あちらは確定していない場合既定値の改行コー
ドを吐いていたはずなので、MIME だけ頑張っても仕方がないと思う。

# ちなみに、skf は文字コード判定論理内で改行コードの検出をす
る処理を含ませていますが、perl/ruby を考えるとあまり意味がな
かったかなという気はしています。
2007-12-26 18:18 Updated by: naruse
Comment
Logged In: YES
user_id=3487

デフォルトの改行コードを決めて、それを出力することにしまし
た。
2008-05-28 23:52 Updated by: efialtes
  • Ticket Close date is changed to 2008-05-28 23:52
  • Status Update from Open to Closed
  • Resolution Update from None to Accepted

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login