]> diplodocus.org Git - minc/commitdiff
Revert rev 243.
authorepg <>
Sun, 1 Sep 2002 05:32:11 +0000 (05:32 +0000)
committerepg <>
Sun, 1 Sep 2002 05:32:11 +0000 (05:32 +0000)
minc

diff --git a/minc b/minc
index 9f9f28d..0e6135a 100755 (executable)
--- a/minc
+++ b/minc
@@ -329,12 +329,19 @@ sub get_highest_msgnum {
     return $highest;
 }
 
     return $highest;
 }
 
+# We want to print the name of each list that has new mail only once,
+# so use this hash to store the lists that have already been printed.
+# Start the list out with SPAM already in it, since we don't care when
+# new messages are added to it.
+my %FOLDERS = ('SPAM'=>1);
+
 sub store_message {
     my $msg = shift;
     my $mhfolder = shift;
     my $msgnum;
     my $try;
     my $mhmsg;
 sub store_message {
     my $msg = shift;
     my $mhfolder = shift;
     my $msgnum;
     my $try;
     my $mhmsg;
+    my $status;
 
     # We must do this even in -n mode because later steps fail without
     # it.  This should be harmless.
 
     # We must do this even in -n mode because later steps fail without
     # it.  This should be harmless.
@@ -382,9 +389,24 @@ sub store_message {
         if (not rename($msg, $mhmsg)) {
             err(&EX_TEMPFAIL, "Failed rename($msg, $mhmsg)");
         }
         if (not rename($msg, $mhmsg)) {
             err(&EX_TEMPFAIL, "Failed rename($msg, $mhmsg)");
         }
+
+        # XXX: Lame!  Instead, keep a hash of arrays.  Keys are folder
+        # names, array elements are message numbers in that list.
+        # Then after all the messages have been sorted, run one mark
+        # command per folder, marking all messages for that folder in
+        # one sweep.
+        if ($mhfolder ne 'SPAM') {
+            $status = system("mark +$mhfolder $msgnum -sequence unseen -add");
+            if (not (WIFEXITED($status) and WEXITSTATUS($status) == 0)) {
+                errx(&EX_TEMPFAIL, "Failed to mark message unseen");
+            }
+        }
     }
 
     }
 
-    return $msgnum;
+    if (not $FOLDERS{$mhfolder}) {
+        print("+$mhfolder\n");
+        $FOLDERS{$mhfolder} = 1;
+    }
 }
 
 sub get_headers {
 }
 
 sub get_headers {
@@ -545,36 +567,10 @@ sub filter_mail {
     my @msglist = @_;
     my $msg;
     my $mhfolder;
     my @msglist = @_;
     my $msg;
     my $mhfolder;
-    my $msgnum;
-    my %folders;
-    my $ref;
-    my $messages;
-    my $status;
 
     foreach $msg (@msglist) {
         $mhfolder = find_mh_folder($msg);
 
     foreach $msg (@msglist) {
         $mhfolder = find_mh_folder($msg);
-        $msgnum = store_message($msg, $mhfolder);
-
-        if (not $folders{$mhfolder}) {
-            print("+$mhfolder\n");
-            $folders{$mhfolder} = ();
-        }
-
-        push(@{$folders{$mhfolder}}, $msgnum);
-    }
-
-    foreach $mhfolder (keys(%folders)) {
-        $ref = $folders{$mhfolder};
-
-        $messages = '';
-        foreach $msgnum (@$ref) {
-            $messages .= ' ' . $msgnum;
-        }
-
-        $status = system("mark +$mhfolder $messages -sequence unseen -add");
-        if (not (WIFEXITED($status) and WEXITSTATUS($status) == 0)) {
-            errx(&EX_TEMPFAIL, "Failed to mark messages unseen");
-        }
+        store_message($msg, $mhfolder);
     }
 }
 
     }
 }