[mew-win32 4587] Re: Haskell 版 cmew の差分更新
Masamichi HOSODA
trueroad at example.com
2011年 9月 9日 (金) 00:04:03 JST
細田です。
Windows 用の Haskell 版 cmew の動作で、
差分更新がうまくいかない件について、
なんとなく原因がわかりました。
とりあえず以下のパッチで差分更新できるようになります。
ただし、他の OS だと、恐らく副作用があって、
本来意図した動作ではなくなってしまうかと思います。
原因は、Windows だと getChangeTime が常に Nothing を返してしまうため、
ファイル変更時刻が取得できず、すべてのファイルが変更なし、
とみなされてしまうため、と思われます。
とりあえず以下のパッチでは getChangeTime のかわりに
getModificationTime を使うようにしてみただけです。
本来は、他の OS の動作も考えると、
getChangeTime が Nothing を返したときだけ、
getModificationTime を使うようにする、とかすべきかと思いますが、
どうやって書けばいいのか分からず、力尽きました…。
--- Index.hs.org 2011-09-06 17:54:08.000000000 +0900
+++ Index.hs 2011-09-08 23:49:13.893982300 +0900
@@ -190,10 +190,8 @@
exist <- doesFileExist file
if exist
then do
- tm <- getChangeTime file
- case tm of
- Just x -> return . (dbmt <) . utctimeToInteger $ x
- Nothing -> return False
+ tm <- getModificationTime file
+ return . (dbmt <) . utctimeToInteger $ tm
else return False
deleteMsgIfMoved msg = case dbModTime ctl of
Nothing -> return True
細田 真道 <trueroad at example.com>
Mew-win32 メーリングリストの案内