[Mew-dist 10749] immknmz for mew-nmz.el.
Shuichi KITAGUCHI ( 北口修一 )
kit at example.com
1999年 9月 25日 (土) 23:35:38 JST
北口です。
mew-nmz.el は便利なのですが、mew-nmz-mknmz-all-folders をすると、
・長時間 Emacs を占有される
・(会社の Win98 では)動作が怪しい
という問題があったので、mew-nmz-mknmz-all-folders と(たぶん)同じことを
する簡単な Perl Script(immknmz) を書いてみました。
つかいかた:
・immknmz の先頭の方を見て、必要だったらいじる
・immknmz を実行させる
なお、エラーチェックはほとんどしていませんのでご注意下さい(普通の
環境なら動くでしょうし、おかしくなっても致命的ではないと思いますが)。
--
Shuichi Kitaguchi <kit at example.com>
-------------- next part --------------
#!/usr/local/bin/perl
#
# "mew-nmz-mknmz-all-folders" (in mew-nmz.el)
#
# Copyright (C) 1999 Shuichi Kitaguchi <kit at example.com>
#
# Created: Sep 23, 1999
# $Id: immknmz,v 1.2 1999/09/25 13:44:23 kit Exp $
#
###
### Modify these variables if you need.
###
my $nmzdir = "Namazu"; # "~/$nmzdir"
my $mknmz_args = "-uUhPq"; # mknmz argument
my $mknmz_include = "mknmz-inc.pl"; # mknmz -I <file>
my @ignorefolders = ( "draft", "trash", "schedule", "queue", );
# Code:
my $VERSION = "immknmz version 0.1.2";
$Prog = 'immknmz';
use IM::Config;
use IM::Util;
use IM::Folder;
use strict;
use vars qw($Prog $EXPLANATION @OptConfig $opt_help);
$EXPLANATION = "$Prog :: mew-nmz-mknmz-all-folders";
@OptConfig = ( 'help;b;;' => "Show this message.", );
init_opt(\@OptConfig);
read_cfg();
read_opt(\@ARGV);
help($EXPLANATION) && exit $EXIT_SUCCESS if $opt_help;
my $mailpath = mail_path()."/";
my $namazupath = home_dir()."/$nmzdir/".mail_dir()."/";
my $incfile = home_dir()."/$nmzdir/$mknmz_include";
if ( ! -f $incfile ){
$incfile = "";
}
my $folderspath = $mailpath."/.folders";
my $msgfolder;
my $flag;
my $nmzfolder;
my $ret;
my @filelist;
my $tempfile;
if ( $ENV{'TEMP'} eq "" ){
if ( $ENV{'TMP'} eq "" ){
$tempfile = "/tmp"; # UNIX system, may be.
} else {
$tempfile = $ENV{'TMP'};
}
} else {
$tempfile = $ENV{'TEMP'};
}
$tempfile =~ s:\\:/:g;
$tempfile =~ s/\/$//;
$tempfile = "$tempfile/immknmz_temporary_file";
open( FILE, "<$folderspath" );
while ( <FILE> ){
chomp;
$msgfolder = $_;
$flag = 0;
foreach ( @ignorefolders ){
if ( $msgfolder !~ /^\+/ ){ # ! local folder
print "$_\n";
$flag=1;
last;
} elsif ( $msgfolder =~ /^\+$_/ ){ # == @ignorefolders
$flag=1;
last;
}
}
if ( $flag != 0 ){
print "skipping $msgfolder...\n";
} else {
$nmzfolder = $msgfolder;
$msgfolder =~ s/^\+/$mailpath/g;
$nmzfolder =~ s/^\+/$namazupath/g;
create_folder($nmzfolder);
opendir(DIR,$msgfolder);
@filelist = grep(/^[0-9]*$/ && -f "$msgfolder/$_",readdir(DIR));
closedir(DIR);
if ( scalar(@filelist) > 0 ){
open(TEMPFILE,">$tempfile");
foreach ( @filelist ){
print TEMPFILE "$msgfolder/$_\n";
}
close(TEMPFILE);
print "$Prog: processing $msgfolder ...\n";
if ( $incfile eq "" ){
# print "mknmz $mknmz_args -O $nmzfolder -F $tempfile $msgfolder\n";
$ret = system "mknmz $mknmz_args -O $nmzfolder -F $tempfile $msgfolder";
} else {
# print "mknmz $mknmz_args -O $nmzfolder -F $tempfile -I $incfile $msgfolder\n";
$ret = system "mknmz $mknmz_args -O $nmzfolder -F $tempfile -I $incfile $msgfolder";
}
unlink $tempfile;
if ( $ret == 2 ){
print "$Prog: abort.\n";
last;
}
}
}
}
close(FILE);
# immknmz ends here.
Mew-dist メーリングリストの案内