[Mew-dist 1599] qmail patch of LocalMbox.pm

Yoshitomi Kentaro yositomi at example.com
1997年 8月 23日 (土) 17:04:53 JST


吉冨です。

 IM-62 の LocalMbox.pm.in の qmail の maildir 形式への
暫定対応版 patch です。たたけばきっとほこりが出てきます。(^ ^;
l.75 に 
$qmail = 1;
と決めうちしているところがあります。
patch をあてたあと, qmail を使ってなければ
これを 0 にしないと当然動きません。
$qmail = 1 のとき、環境変数 MAILDIR, MAILDROP,
MAIL を見に行き、いずれもなければ $home/Maildir, $home/Mailbox
の順に見に行きます。 /var/spool とかは全く
検索対象外にしました。

あとは motonori さんが、Config の解析に $qmail 
を入れてくれはるのを待つばかりです。これができたら、
$qmail = 1 の行をさくっと削除して下さい。

qmail を Mailbox でお使いの Mew な方、テスト
してみてください。ただし、安全のため ~/.qmail に
/home/user/Mailbox
/home/user/Mail/
のように両方指定しておかれた方がいいと思います。

では、debug の方よろしくお願いします。


-------------- next part --------------
--- LocalMbox.pm.in.orig	Tue Aug 19 14:49:19 1997
+++ LocalMbox.pm.in	Sat Aug 23 16:46:13 1997
@@ -72,19 +72,37 @@
 
     $src =~ /local:(.*)/i;
     my ($mbox) = $1;
-
+$qmail = 1;
     unless ($mbox) {
 	# set default
 #	my $user = $ENV{'USER'};
 #	$user = $ENV{'LOGNAME'} unless ($user);
 	my $user = getlogin;
 	$user = (getpwuid($<))[0] unless ($user);
+	my $home = $ENV{'HOME'};
+	$home = (getpwuid($<))[7] unless ($home);
 
-	foreach $p (@MailDrops) {
-	    if ( -f "$p/$user" ) {
-		$mbox = "$p/$user";
-		last;
+	if ($qmail) {
+	    my (@QMailDrops) = (
+		$ENV{'MAILDIR'},
+		$ENV{'MAILDROP'},
+		$ENV{'MAIL'},
+		"$home/Maildir",
+		"$home/Mailbox"
+	    );
+	    foreach $p (@QMailDrops) {
+		if ( -x $p || -f $p ) {
+		    $mbox = $p;
+		    last;
+		}
 	    }
+	} else {
+	    foreach $p (@MailDrops) {
+		if ( -f "$p/$user" ) {
+		    $mbox = "$p/$user";
+		    last;
+		}
+            }
 	}
 	unless ($mbox) {
 	    im_warn("mailbox for $user not found\n");
@@ -95,21 +113,39 @@
     if (-d $mbox) {
 	# DIRECTORY
 	my $msgs = 0;
+	if ($qmail) {
+	    $mbox = "$mbox/new";
+	}
 	unless (opendir(FOLDER, $mbox)) {
 	    im_warn("can't open directory: $mbox\n");
 	    return -1;
 	}
 	im_info("Getting new messages from maildir into $dst....\n")
 	  if ($how eq 'get');
-	foreach $f (sort {$a <=> $b} readdir(FOLDER)) {
-	    if ($f =~ /^\d+$/ && -s "$mbox/$f") {
-		if (&process_file("$mbox/$f", $dst, $how) < 0) {
-		    return -1;
+	if ($qmail) {
+	    foreach $f (sort {(-M $b) <=> (-M $a) || $a cmp $b} 
+		readdir(FOLDER)) {
+		if ($f =~ /^\d+\.\d+\..+/ && -s "$mbox/$f") {
+		    if (&process_file("$mbox/$f", $dst, $how) < 0) {
+		        return -1;
+		    }
+		    if ($how eq 'get' && $main::opt_keep == 0) {
+		        unlink("$mbox/$f");
+		    }
+		    $msgs++;
 		}
-		if ($how eq 'get' && $main::opt_keep == 0) {
-		    unlink("$mbox/$f");
+	    }
+        } else {
+	    foreach $f (sort {$a <=> $b} readdir(FOLDER)) {
+	        if ($f =~ /^\d+$/ && -s "$mbox/$f") {
+		    if (&process_file("$mbox/$f", $dst, $how) < 0) {
+		        return -1;
+		    }
+		    if ($how eq 'get' && $main::opt_keep == 0) {
+		        unlink("$mbox/$f");
+		    }
+		    $msgs++;
 		}
-		$msgs++;
 	    }
 	}
 	closedir(FOLDER);


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