[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 メーリングリストの案内