[Mew-dist 644] Re: refile log

Yoshinari NOMURA nom at example.com
1997年 3月 11日 (火) 12:10:32 JST


乃村@九大・情報です。mew-refile も直そうと思いつつ。。

> 使い勝手としては、
>         ・自分で指定した auto-folder-alist にマッチしたときと、message-id,
>           From で guess したときで、ちょっとした違いがあるとうれしい。
>                 確認のアクションが増えるのはやだけど、ちょっと注意したい

priority の低いルールでマッチしたと、無意識のうちに ret たたいて
たりして、どこに行ったのか分かんなくなったりしますね。あくまでも 
guess なので、ちゃんと確認しないといけないのですが、つい。

デフォルトで multi-refile にするってのはどうかと思ってます。する
と、guess の方法自体も変わるかなと。

+from/foo はデフォルトで入るとか、+date/yymm を guess してしまう
とか。summary-exec が遅くなりそうですが。

> とはいえ、最近は、やはり auto-refile + unseen mark の設定がよ
> さそうに思えてきたので、暇ができたらチャレンジしてみようと思っ
> ています。

出先で refile するのが面倒なときに使っている script です。以下の
ような ~/.arefrc を書いて、

To|Cc   nom		NOP
>From    ushijima|cheng  NOP
To|Cc   kyushu-u-admin  +adm/kyushu-u-admin
To|Cc   wide\@wide      +wide/wide
To|Cc   mew-dist        +wide/mew-dist
>From    uucp\@kyu-cs    +adm/uucp
>From    news\@goma      +rec/nspool

% aref |sh

ってやります。mew-dist は置いとこと思ったら、

% aref | grep -v mew-dist | sh

です。お試し下さい。
--
nom


#!/usr/local/bin/perl

# $Id: aref,v 1.4 1996/06/15 18:05:43 nom Exp nom $
#
# aref - auto refile.
#
# Usage:  aref [+SrcFolder] | sh
#
# default +SrcFolder is +inbox
#
# ${HOME}/.arefrc -- see below.
#
#    To|Cc      nom             NOP             ; Don't refile.
#    To|Cc	ip-connection	+ip-connection
#    from	monkey          +animal
#     :		  :               :
#    .*         .*              +misc
#  
# todo:
#    get $MailDir from .mh_profile or  env MH.
#    accept normal refile options.
#    various error check.

# Global variables.

# %RefileTable;
# @RefileKey;

$USER = $ENV{'USER'} || $ENV{'LOGNAME'} || `whoami`;
$HOME = $ENV{'HOME'};
$USER =~ s/\n$//;

$SrcFolder = "inbox";
$SrcFolder = $1 if ($ARGV[$[] =~ /^\+(.*)/);
chop($MailDir = `mhpath +`);
$RcFile = "$HOME/.arefrc";

# Make %RefileTable, @RefileKey
#
&ReadRc($RcFile);

# Make @FieldArray and call Refile
#
foreach (`pick +$SrcFolder`)
{
    chop;
    $CurFileName = "$MailDir/$SrcFolder/$_";
    $CurMessNo   = $_;

    open(MAIL, $CurFileName);
    
    while(<MAIL>){
        chop;
        last if (/^$/);
        if (/^\S+:/){
            push(FieldArray, $_);
        } elsif (/^\s/){
            $FieldArray[$#FieldArray] .=  $_;
        }
    }
    close(MAIL);
    &Refile($SrcFolder, $CurMessNo, @FieldArray);
    undef(@FieldArray);
}

# Make %RefileTable, @RefileKey
#
sub ReadRc {
    local($field, $key, $folder, $regexp);
    local($rcfile) = $_[$[];

    open(AREFRC, $rcfile) || die "Can't open $rcfile";

    while(<AREFRC>)
    {
	next if (/^$/ || /^#/);

        chop;
        ($field, $key, $folder) = split;
        $regexp = "^($field):.*($key)";
        $RefileTable{$regexp} = $folder;
        push(RefileKey, $regexp);
    }
    close(AREFRC);
}

# Decide destination folder.
# Use, %RefileTable, @RefileKey.
#
sub Refile
{
    local($k, $f);
    local($srcfolder, $messno, @field) = @_;

    foreach $k (@RefileKey){
        foreach $f (@field){
            if ($f =~ /$k/i && $RefileTable{$k} ne "NOP" ){
                print "refile $messno -src +$srcfolder $RefileTable{$k}\n";
                return $RefileTable{$k};
            }
        }
    }
    return 0;
}



Mew-dist メーリングリストの案内