From: epg <> Date: Sun, 1 Sep 2002 05:32:11 +0000 (+0000) Subject: Revert rev 243. X-Git-Url: https://diplodocus.org/git/minc/commitdiff_plain/c68695d2fad241c53969d25d8081edcf8f57a1bb Revert rev 243. --- diff --git a/minc b/minc index 9f9f28d..0e6135a 100755 --- a/minc +++ b/minc @@ -329,12 +329,19 @@ sub get_highest_msgnum { 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; + my $status; # 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)"); } + + # 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 { @@ -545,36 +567,10 @@ sub filter_mail { my @msglist = @_; my $msg; my $mhfolder; - my $msgnum; - my %folders; - my $ref; - my $messages; - my $status; 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); } }