Hiroyuki Yamamoto
hiro-****@kcn*****
2002年 9月 30日 (月) 15:13:13 JST
山本です。 On Sat, 28 Sep 2002 00:26:04 +0900 Munesato - NAK - Nakada <munes****@post*****> wrote: > キャッシュフォルダが作成されない件の原因は、IMAP 機能部分から > 渡されるパス区切りが '/' になっていることが原因でした。 > Win32 版的には、'/' を '\' に置換してしまえばよいと思いますが、 > 軽く動かした感じでは影響範囲が大きいようで、所々不具合が > 見つかっていて面倒くさいことになっています。 > > Sylpheed 自体が IMAP の区切りである '/' と、OS のパス区切りが > 同一であることを前提としている感じがする(*1)ので、そこいら辺を > うまく切り分ける必要があります。 > # *1 imap.c 中に G_DIR_SEPARATOR が散見される。 imap.c では、 IMAP のパス区切りを一度 OS のパス区切りに変換してから 処理しています。 IMAP サーバにコマンドを送るときは再度 IMAP パス区切り に変換し直して処理します。 # ちなみに IMAP のパス区切りは '/' だけでなく '.' 等も有り得ます # (uw-imapd とか)。区切り文字はサーバから得ることができます。 今回のバグは、 imap_get_real_path() から呼ばれる imap_path_separator_subst() や、imap_create_folder() で IMAP パス区切りに変換する際に、 OS のパス区切りを '/' に決め打ち してしまっているのが原因かな? という気がします。 この決め打ちしている部分を全部 G_DIR_SEPARATOR(_S) に置き換えれば うまくいくかもしれません。 -- Hiroyuki Yamamoto <yamam****@good-*****> http://www.good-day.co.jp/ (Good-Day) http://www.good-day.net/ (Good-Day.NET) http://sylpheed.good-day.net/ (Sylpheed)