[mew-dist 25971] Mew 3 のマークを Mew 4 へ変換
Isao Harada
harada at example.com
2005年 1月 23日 (日) 19:37:11 JST
原田と申します。
Mew 4 も 4.2rc1 となりましたので、ぼちぼち Mew 3.3 から移行しようと
試していたのですが、Mew 3.3 のサマリのマークが Mew 4 のサマリに反映さ
れないので、とても残念でした。
ちょっと調べて見ると、.mew-sinfo というファイルにマークが保存されて
いることがわかったので、添付の perl スクリプトを作って変換できましたが、
これも残念ながら、一度 Mew 4 でスキャンしたフォルダにしか使えませんで
した。
より良い方法がありましたら、教えていただけると幸いです。
なお、添付のスクリプトは、引数としてディレクトリを指定するもので、下
記のコマンドで変換するつもりでした。
% find ~/Mail -type d -exec msm3to4 {} \;
以上よろしくお願い致します。
-------------- next part --------------
#!/usr/local/bin/perl
#
# msm3to4: Mew 3 のサマリーのマークを Mew 4 に変換
#
# -c を指定された場合は * マークを $ マークに変換
#
# $Id: msm3to4,v 1.1 2005/01/23 08:32:31 harada Exp $
require "getopts.pl";
&Getopts('c');
&usage() unless ($#ARGV == 0);
&usage() unless (-d $ARGV[0]);
$DIR = $ARGV[0];
$MEW3 = '.mew-cache';
$MEW4 = '.mew-sinfo';
my(@r) = &readSummary("$DIR/$MEW3");
&convertMark("$DIR/$MEW4", @r) unless ($#r == -1);
exit 0;
#
# 利用方法
#
sub usage {
die "Usage: msm3to4 [-c] directory";
}
#
# サマリファイルの読み込み
#
sub readSummary {
my($f) = @_;
my(@r) = ();
exit 0 unless (-f $f);
open(IN, $f);
while (<IN>){
next unless (/^\s*\d+[D@*o]/);
my($n, $t) = $_ =~ m,^\s*(\d+)(\S),;
push(@r, "$n $t");
}
close(IN);
return @r;
}
#
# マークファイルの生成
#
sub convertMark {
my($f, @r) = @_;
if (-f $f){
my($new) = "${f}~";
print STDERR "backuped: $new\n";
rename($f, $new);
}
print STDERR "converted: $f\n";
open(OUT, "> $f");
print OUT "[nil (\n";
foreach (@r){
@_ = split(/ /, $_);
$_[1] = '$' if (defined $opt_c && ($_[1] eq '*'));
printf OUT "(\"%d\" %d)\n", $_[0], ord($_[1]);
}
print OUT " )]\n";
close(OUT);
}
Mew-dist メーリングリストの案内