[Mew-dist 05466] Re: About imstore
Nobuhiro Tsuchie
tsuchie at example.com
1998年 7月 10日 (金) 10:27:26 JST
いつもお世話になっています。土江です。
>>>>> On Fri, 10 Jul 1998 00:18:27 +0900
>>>>> mokkun at example.com(Akihiro Motoki) said:
元木> ・immv や imrm ( imclean もか)を行ったときに、きちんとunseenから消す。
元木> Mew では refile や delete を(IMを利用せずに)自分で行うので、
元木> そっちでもインターフェースが必要である。
MH のコマンドがどんな挙動をしていたか憶えていません。
調べてから、考えます。
元木> ・pack や sort を行ったときはどうするのか?
元木> (これが一番むずかしいかも。IMでするのかMewでするか、それとも無視?)
元木> そういえば、マークの保存の話がありましたね。どうなったんでしょう。
これも、MH の挙動を調べてからにします。ところで、"マークの保存" とは、
何でしょうか?
元木> ・今の get.sbr ではファイル番号(filename)を並べて書いていくので、
元木> mh と同じ形式の方で短かく書けるようにしたい。
元木> (これはget.sbrを適当にいじくればいいかも)
パッチを作りました。添付します。他にも問題がありました。列挙します。
(1) 予め、.mh_sequences が存在しなければならない。
(2) 予め、.mh_sequences の中に unseen の行が存在しなければならない。
(3) imget で複数のメールを取り込むと、次のようになる。
unseen: 301 301-302
元木> 土江さんの最初の要望ですと、到着したメールのうちフォルダにいきなり
元木> 放り込むものがあるが、それをチェックしたいということだと理解しています。
元木> 私も同じことをしようとして、昔は新着メールの数だけをチェックする
元木> シェルスクリプトを書いて使っていました。処理は、mew-cache の最終行と
元木> MHのfolderコマンドを使って、引き算して未読数を出すものでしたが、
元木> お手軽なチェックには便利でした。(今思えば、mhpath last で十分だなぁ)
監視してくれないのであれば、直接 prom-mew を起動した方が良いと思います。
また、imget は、いつも空の /usr/spool/mail/ログイン名 というファイルを
見に行くようにしており、全てのメールを fetchmail & procmail & rcvstore で
各フォルダに振り分けていました。
元木> xpnbiff は使用したことがないのですが、複数のフォルダの場合も一度に
元木> チェックしてくれるものなのでしょうか?
そうです。監視したい複数のフォルダを指定できます。
動作は、xbiff と似ています。
本来は、ニュースグループの新着記事の有無を監視するツールであり、
MH フォルダを監視する機能は、あとから追加されたようです。
archie で、次のファイルを探してみて下さい。
xpnbiff-1.6.tar.gz
xpnbiff-1.7.patch
土江 伸宏
tsuchie at example.com
-------------- next part --------------
*** im-94/dot.im/get.sbr.bak Sun Nov 30 15:29:37 1997
--- im-94/dot.im/get.sbr Fri Jul 10 09:15:43 1998
***************
*** 13,43 ****
my $dir = expand_path($folder);
my ($name, $val);
! open(SEQ, "$dir/.mh_sequences") || return;
- while (<SEQ>) {
- chomp;
- ($name, $val) = split(': ');
- $hash{$name} = $val;
}
! close(SEQ);
! if (defined($hash{'unseen'})) {
! if ($first == $last) {
! $hash{'unseen'} .= " $first";
! } else {
! $hash{'unseen'} .= " $first-$last";
! }
!
! open(SEQ, ">$dir/.mh_sequences");
!
! foreach (keys %hash) {
! print SEQ "$_: $hash{$_}\n";
! }
! close (SEQ);
}
}
1;
--- 13,84 ----
my $dir = expand_path($folder);
my ($name, $val);
! $stat = open(SEQ, "$dir/.mh_sequences");
!
! if ($stat) {
!
! while (<SEQ>) {
! chomp;
! ($name, $val) = split(': ');
! $hash{$name} = " $val";
! }
!
! close(SEQ);
}
! if ($first == $last) {
! $hash{'unseen'} .= " $first";
! } else {
! $hash{'unseen'} .= " $first-$last";
! }
!
! @arts = split(' ', $hash{'unseen'});
!
! if (@arts >= 2) {
!
! $prepost = 0;
! foreach (@arts) {
! if (/[0-9]*-[0-9]*/) {
! ($pre, $post) = split(/-/);
! } else {
! $pre = $_;
! $post = $_;
! }
!
! if ($prepost + 1 == $pre) {
! if (!$prepost) {
! $hash{'unseen'} = " $pre";
! $prepre = $pre;
! }
! } else {
! if (!$prepost) {
! $hash{'unseen'} = " $pre";
! } else {
! if ($prepre != $prepost) {
! $hash{'unseen'} .= "-$prepost $pre";
! } else {
! $hash{'unseen'} .= " $pre";
! }
! }
! $prepre = $pre;
! }
! $prepost = $post;
!
! }
! $hash{'unseen'} .= "-$post" if ($prepre != $post);
!
! }
!
! open(SEQ, ">$dir/.mh_sequences");
!
! foreach (keys %hash) {
! print SEQ "$_:$hash{$_}\n";
}
+
+ close (SEQ);
}
1;
-------------- next part --------------
*** im-94/IM.in/Pop.pm.in.bak Wed May 6 12:52:09 1998
--- im-94/IM.in/Pop.pm.in Fri Jul 10 09:21:51 1998
***************
*** 143,150 ****
return $field[1];
}
! sub pop_retr ($$) {
! my ($num, $dst) = @_;
local ($_);
my (@Message);
im_notice("getting message $num.\n");
--- 143,150 ----
return $field[1];
}
! sub pop_retr ($$$) {
! my ($total, $num, $dst) = @_;
local ($_);
my (@Message);
im_notice("getting message $num.\n");
***************
*** 172,178 ****
alarm(0) unless win95p();
return -1 if (&store_message(\@Message, $dst) < 0);
! &exec_getsbrfile($dst);
return 0;
}
--- 172,178 ----
alarm(0) unless win95p();
return -1 if (&store_message(\@Message, $dst) < 0);
! &exec_getsbrfile($dst) if ($total == $num);
return 0;
}
***************
*** 496,502 ****
# # XXX everything will be kept
}
}
! return -1 if (&pop_retr($i, $dst) < 0);
$got++;
if ($main::opt_keep == 0) {
# delete current message
--- 496,502 ----
# # XXX everything will be kept
}
}
! return -1 if (&pop_retr($msgs, $i, $dst) < 0);
$got++;
if ($main::opt_keep == 0) {
# delete current message
Mew-dist メーリングリストの案内