⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refileto

📁 早期freebsd实现
💻
字号:
#!/usr/bin/perl$program = $0;$program =~ s|.*/||;$| = 1;unshift(@INC, $ENV{'DELIVERPATH'});require 'audit.pl' || die "$program: cannot include audit.pl: $@";require 'mh.pl' || die "$program: cannot include mh.pl: $@";@SW = (	'-debug',	'-draft',        '-file file',	'-help',	'-link',	'-log +folder',		# defaults to +log	'-nolink',	'-nopreserve',	'-preserve',  	'-rmmproc program',	'-src +folder',		# defaults to current folder	'-verbose',      );&mh_profile();&mh_parse();defined($SW{'help'}) && do {    print "syntax: $program [msgs] [switches]\n";    &print_switches();    exit;};@args = (defined(@MSGS) ? @MSGS : @ARGV);$logdir = $SW{'log'} || $MH{'logdir'} || "+log";($logdir = '+' . $logdir) if ($logdir !~ /\+/);$folder = `mhpath cur`; chop $folder; $folder =~ s|/\d+$||;$folder = $SW{'src'} if defined($SW{'src'});($folder = '+' . $folder) if ($folder !~ /\+/);$SW{'file'} = "$MH{'path'}/draft" if defined($SW{'draft'});if (defined($SW{'file'})) {    @paths = ($file);} else {    @paths = `mhpath $folder @args`; chop @paths;};@refileargs = ( );for ('link', 'nolink', 'preserve', 'nopreserve') {    push(@refileargs, "-$_") if defined($SW{$_});};push(@refileargs, "-rmmproc", $SW{'rmmproc'}) if defined($SW{'rmmproc'});foreach $msg (@paths) {    open(MESSAGE, "< $msg") || next;    &local_parse_message(MESSAGE);    # -----    # if -from was specified use the From line; if -to is specified use    # the To line.     #    $header = $headers{'from'} if ($program eq "refilefrom");    $header = $headers{'to'} if ($program eq "refileto");    $header = $header . ',' . $headers{'cc'} if 	(($program eq "refileto") && defined($headers{'cc'}));    @nfolders = ( );     foreach $addr (split(',', $header)) {       ($friendly, $address, $name, $org) = &parse_email_address($addr);       $org = "local" if ($org eq "unknown");       push(@nfolders, "$logdir/$org/$name");    };    @mfolders = ( );    foreach $folder (@nfolders) {       $fpath = `mhpath $folder`; chop $fpath;       if (-d $fpath || ! &make_mhpath($fpath)) {           push(@mfolders, $folder);       } else {	   warn "cannot make directory $fpath: $!\n";       };    };    print "refile @refileargs -file $msg @mfolders\n" if 	(@mfolders && defined($SW{'verbose'}));    system "refile -file $msg @mfolders" if 	(@mfolders && !defined($SW{'debug'}));    close(MESSAGE);};# =====# Subroutine local_parse_message#	A simplified version of parse_message that does#	not care about the body of the message#sub local_parse_message {    local(*INFILE) = @_;    local($header, $body, $mheader);    $/ = '';		# read input in paragraph mode    %headers = ( );    @received = ( );    $header = <INFILE>;    $/ = "\n";		    $* = 0;    # -----    # fill out the headers associative array with fields from the mail    # header.    #    $_ = $header;    s/\n\s+//g;    @lines = split('\n');    for ( @lines ) {	/^(\w*):\s*(.*)/ && do {	    $mheader = $1;	    $mheader =~ tr/A-Z/a-z/;	    if (($mheader eq "cc" || $mheader eq "to") && $headers{$mheader}) {		$headers{$mheader} .= ", $2";	    } else {		$headers{$mheader} = $2;	    };	};    }    return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -