[mew-dist 28391] Re: "&" -- mew-summary-thread-child()
Hideyuki SHIRAI ( 白井秀行 )
shirai at example.com
2008年 5月 8日 (木) 19:16:25 JST
白井です。
From: Kazu Yamamoto (山本和彦) <kazu at example.com> さん曰く
Subject: [mew-dist 28390] Re: "&" -- mew-summary-thread-child()
Message-ID: <20080508.185709.23867486.kazu at example.com>
Date: Thu, 08 May 2008 18:57:09 +0900 (JST)
> > | | それで、"&" なんですが、ときどき動作がおかしくありませんかね?
> > | | "^" で行ったのに、"&" で帰って来れないことがあるようです。
> > |
> > | そこまで使い込んでないのでわからないのですが
> > | smew -c は最初の1つだけを返すので
> > | ^ & で兄弟のところに行ってしまう可能性はあるとおもいます。
> >
> > あと考えられるのが、id.db が古くて
> > 親は登録されているが子が未登録だと & で戻ってこられない
> > ということになります。
>
> その子は DB に登録されているが、兄弟は DB に登録されてない状況だったよ
> うです。
(1) +inbox に 1, 2 というメッセージがあって、DB に登録してある。
(2) この状態で +inbox/1 の上で '^' すると +hoge/100 に飛んで、
+hoge/100 で '&' すると +inbox/1 に戻ってくる。正常な動作
(3) +inbox で(リアルな)ソートをして、1 => 2, 2 => 1 と順番が変わっ
た。その後 'ki' 実行。
(4) +inbox/2 で '^' ==> +hoge/100 に飛ぶ。
+hoge/100 で '&' ==> +inbox/1 に戻る。
ってなりませんかね。(3) の 'ki' で下の様にやるとうまくいくような
気がしますが、本当かどうかよくわかっていません。
def register(db, maildir, ignore_regex, target, last_mod)
....
elsif FileTest.file?(fpath) and fpath =~ /\/[0-9]+(\.mew)?$/
next if File.dirname(fpath) == skipdir
next if last_mod > File.ctime(fpath).tv_sec
m = Mail.new(fpath)
id = get_id(m)
parid = get_parid(m)
date = get_date(m)
path = get_path(fpath)
newpath = true
if last_mod > 0
get_entry.execute!(id) do |row|
past_path = row['path']
unless File.exist?(past_path)
del_entry.execute(id, past_path)
deleted = deleted + 1
end
『fpath と path_path が同じフォルダなら、path_path を消す処理追加。
もともと二つ以上あっても一つでいいだろう < 本当?』
newpath = false if path == past_path
end
end
if newpath == true
add_entry.execute('id' => id, 'path' => path, 'parid' => parid, 'date' => date)
registred = registred + 1
end
# next
--
白井秀行 (mailto:shirai at example.com)
Mew-dist メーリングリストの案内