[Mew-dist 271] Re: From line & "r" in news
SAKAI Kiyotaka
ksakai at example.com
1996年 12月 12日 (木) 19:57:50 JST
>> In article <9611281453.AA10605 at example.com>, Yuichi Sakumura <saku at example.com> writes:
saku> 1)
saku> From: hoge at example.com ("hogehoge poipoi")
saku> のように,From: 行の () の中に "" で囲われた文字列があるとき,
saku> reply すると
saku> To: hoge at example.com("hogehoge
saku> のようにアドレスの切り出しに失敗してしまいます.
> もっと詳しくは ("...") の間にスペースが入った場合に起きるようです.
この件について原因を調べてみましたが、
From: ksakai at example.com ("SAKAI Kiyotaka")
だったとした場合、Mew では以下のようなアルゴリズムでアドレスを取り出し
ていることが分かりました。
ksakai at example.com ("SAKAI Kiyotaka")
↓ ',' で区切った文字列に変換
",ksakai at example.com (\"SAKAI Kiyotaka\")"
↓ '"' の前後で文字列を分割
",ksakai at example.com (" "\"SAKAI Kiyotaka\"" ")"
↓ '"' で始まる文字列を除いて、各文字列の空白を削除
",ksakai at example.com(" "\"SAKAI Kiyotaka\"" ")"
↓ 再び各文字列を連結
",ksakai at example.com(\"SAKAI Kiyotaka\")"
↓ ',' で区切った文字列から、リストに変換
("" "ksakai at example.com(\"SAKAI Kiyotaka\")")
↓ 各要素からアドレスを取り出す
↓ 取り出し方は、<> を含む場合はその内側、それ以外は最初
↓ の空白まで。
"ksakai at example.com(\"SAKAI"
さて、どう対処すればいいか考えるために RFC822 をあたってみたところ、
APPENDIX D に
comment = "(" *(ctext / quoted-pair / comment) ")"
ctext = <any CHAR excluding "(", ; => may be folded
")", "\" & CR, & including
linear-white-space>
delimiters = specials / linear-white-space / comment
linear-white-space = 1*([CRLF] LWSP-char) ; semantics = SPACE
; CRLF => folding
LWSP-char = SPACE / HTAB ; semantics = SPACE
quoted-pair = "\" CHAR ; may quote any char
という記述がありました。これから判断するに、以下のようなアドレスはすべ
て正しいと思うのですが、これは正しいでしょうか?
foo1 at example.com(name)
foo2 at example.com ( sei " mei )
(name) foo3 at example.com
("name)foo4 at example.com
これが正しいとすれば、他の手順を辿る前に、コメントの削除 (というより、
スペースへの変換かな) を行う必要があると思います。
--
酒井 清隆 (E-mail: ksakai at example.com)
Mew-dist メーリングリストの案内