チケット #11239

MIME encode で、長大な ASCII 単語を与えたときの処理が変
登録: 2007-10-30 23:04 最終更新: 2008-05-28 23:52

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
受領
ファイル:
5

詳細

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

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

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

チケットの履歴 (17 件中 3 件表示)

2007-11-01 01:33 更新者: naruse
コメント
Logged In: YES
user_id=3487

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

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

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

とりあえずパッチ。LF の件には何も手をつけていません。
2007-11-02 13:26 更新者: efialtes
  • 添付ファイル 2075: diff1.txt が付加されました
コメント
Logged In: YES
user_id=3309

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

#これでいいのかどうかはちょっと微妙ですけど。
2007-11-02 14:30 更新者: efialtes
  • 添付ファイル 2076: diff1.txt が付加されました
2007-11-02 14:32 更新者: efialtes
  • 添付ファイル 2077: diff1.txt が付加されました
2007-11-03 07:14 更新者: naruse
コメント
Logged In: YES
user_id=3487

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

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

LF云々というのが理解できていないのですが何のことでしょう。
2007-11-03 17:04 更新者: naruse
コメント
Logged In: YES
user_id=3487

nkf.c rev:1.147で件のlongascii.txtはまともになった気がしま
す。
2007-11-04 23:10 更新者: efialtes
コメント
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 更新者: efialtes
コメント
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 更新者: naruse
コメント
Logged In: YES
user_id=3487

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

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

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

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

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

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

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

デフォルトの改行コードを決めて、それを出力することにしまし
た。
2008-05-28 23:52 更新者: efialtes
  • チケット完了時刻2008-05-28 23:52 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 受領 に更新されました

添付ファイルリスト

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする