close FOLDERLIST;
foreach $folderlist (@folderlist) {
- if ($folderlist =~ m/<folder type="mh"/) {
- $folderlist =~ s/<folder type="mh" name="//;
- $folderlist =~ s/" path="[A-Z0-9]+">\n//ig;
- $folderlist =~ s/^ +//;
- $mailbox = $folderlist;
- }
+ unless ($mailbox) {
+ if ($folderlist =~ m/<folder type="mh"/) {
+ $folderlist =~ s/<folder type="mh" name="//;
+ $folderlist =~ s/" path="[A-Z0-9]+"//ig;
+ $folderlist =~ s/ collapsed="1"//;
+ $folderlist =~ s/>\n//ig;
+ $folderlist =~ s/^ +//;
+ $mailbox = $folderlist;
+ }
+ }
}
open (FILTERRC, "<filterrc") || die("Can't find your old filter rules\n");
@filterrc = <FILTERRC>;
close FILTERRC;
+if (!@filterrc) {
+ print "\nYou don't have any filter rules\n\n";
+ exit;
+}
+
$WRITE_THIS = "";
$COUNT = "0";
foreach $matcherrc (@matcherrc) {
$WRITE_THIS .= $matcherrc;
}
+ $WRITE_THIS .= "\n";
}
$WRITE_THIS .= "[global]\n";
foreach $filterrc (@filterrc) {
$COUNT++;
@split_lines = split("\t", $filterrc);
- if (($split_lines[3]) && ($split_lines[0] eq "To")) {
- $WRITE_THIS .= "to_or_cc match \"$split_lines[1]\"";
+ if ($split_lines[6] eq "0") {
+ $match_type = "matchcase";
+ $predicate_one = "~";
+ } elsif ($split_lines[6] eq "1") {
+ $match_type = "matchcase";
+ $predicate_one = "";
+ } elsif ($split_lines[6] eq "4") {
+ $match_type = "regexpcase";
+ $predicate_one = "~";
+ } elsif ($split_lines[6] eq "5") {
+ $match_type = "regexpcase";
+ $predicate_one = "";
+ }
+ if ($split_lines[7] eq "0") {
+ $match_type = "matchcase";
+ $predicate_two = "~";
+ } elsif ($split_lines[7] eq "1") {
+ $match_type = "matchcase";
+ $predicate_two = "";
+ } elsif ($split_lines[7] eq "4") {
+ $match_type = "regexpcase";
+ $predicate_two = "~";
+ } elsif ($split_lines[7] eq "5") {
+ $match_type = "regexpcase";
+ $predicate_two = "";
+ }
+
+ if ($split_lines[2] eq "&") {
+ $operator = "&";
+ &sort_data;
+ }
+ elsif ($split_lines[2] eq "|") {
+ $operator = "|";
+ &sort_data;
} elsif ($split_lines[0] eq "To") {
- $WRITE_THIS .= "to match \"$split_lines[1]\"";
+ $WRITE_THIS .= "$predicate_one"."to $match_type \"$split_lines[1]\"";
} elsif ($split_lines[0] eq "Reply-To") {
- $WRITE_THIS .= "inreplyto match \"$split_lines[1]\"";
+ $WRITE_THIS .= "$predicate_one"."inreplyto $match_type \"$split_lines[1]\"";
} elsif ($split_lines[0] eq "Subject") {
- $WRITE_THIS .= "subject match \"$split_lines[1]\"";
- } elsif (($split_lines[0] eq "From") || ($split_lines[0] eq "Sender")){
- $WRITE_THIS .= "from match \"$split_lines[1]\"";
+ $WRITE_THIS .= "$predicate_one"."subject $match_type \"$split_lines[1]\"";
+ } elsif ($split_lines[0] eq "From"){
+ $WRITE_THIS .= "$predicate_one"."from $match_type \"$split_lines[1]\"";
+ } elsif ($split_lines[0] eq "Sender" || $split_lines[0] eq "List-Id" ||
+ $split_lines[0] eq "X-ML-Name" || $split_lines[0] eq "X-List" ||
+ $split_lines[0] eq "X-Sequence" || $split_lines[0] eq "X-Mailer" ||
+ $split_lines[0] eq "Cc") {
+ $WRITE_THIS .= "$predicate_one"."header \"$split_lines[0]\" $match_type \"$split_lines[1]\"";
}
- if (!$split_lines[5]) {
+ if ($split_lines[8] eq "n\n") {
$WRITE_THIS .= " delete";
- } elsif ($split_lines[8] == "m"){
+ } elsif ($split_lines[8] eq "m\n"){
$WRITE_THIS .= " move \"\#mh/$mailbox/$split_lines[5]\"";
}
$WRITE_THIS .= "\n";
print MATCHERRC $WRITE_THIS;
close MATCHERRC;
+rename ("filterrc","filterrc.old");
+
print "\nYou have sucessfully converted $COUNT filtering rules\n\n";
+print "'filterrc' has been renamed 'filterrc.old'\n\n";
exit;
+sub sort_data {
+ if ($split_lines[0] eq "To" && $split_lines[3] eq "Cc" &&
+ $split_lines[1] eq $split_lines[4]) {
+ $WRITE_THIS .= "$predicate_one"."to_or_cc $match_type \"$split_lines[1]\"";
+ }
+ elsif ($split_lines[0] eq "To") {
+ $WRITE_THIS .= "$predicate_one"."to $match_type \"$split_lines[1]\" $operator ";
+ } elsif ($split_lines[0] eq "Reply-To") {
+ $WRITE_THIS .= "$predicate_one"."inreplyto $match_type \"$split_lines[1]\" $operator ";
+ } elsif ($split_lines[0] eq "Subject") {
+ $WRITE_THIS .= "$predicate_one"."subject $match_type \"$split_lines[1]\" $operator ";
+ } elsif ($split_lines[0] eq "From") {
+ $WRITE_THIS .= "$predicate_one"."from $match_type \"$split_lines[1]\" $operator ";
+ } elsif ($split_lines[0] eq "Sender" || $split_lines[0] eq "List-Id" ||
+ $split_lines[0] eq "X-ML-Name" || $split_lines[0] eq "X-List" ||
+ $split_lines[0] eq "X-Sequence" || $split_lines[0] eq "X-Mailer" ||
+ $split_lines[0] eq "Cc") {
+ $WRITE_THIS .= "$predicate_one"."header \"$split_lines[0]\" $match_type \"$split_lines[1]\" $operator ";
+ }
+
+ if ($split_lines[3] eq "To") {
+ $WRITE_THIS .= "$predicate_two"."to $match_type \"$split_lines[4]\"";
+ } elsif ($split_lines[3] eq "Reply-To") {
+ $WRITE_THIS .= "$predicate_two"."inreplyto $match_type \"$split_lines[4]\"";
+ } elsif ($split_lines[3] eq "Subject") {
+ $WRITE_THIS .= "$predicate_two"."subject $match_type \"$split_lines[4]\"";
+ } elsif ($split_lines[3] eq "From") {
+ $WRITE_THIS .= "$predicate_two"."from $match_type \"$split_lines[4]\"";
+ } elsif ($split_lines[3] eq "Sender" || $split_lines[3] eq "List-Id" ||
+ $split_lines[3] eq "X-ML-Name" || $split_lines[3] eq "X-List" ||
+ $split_lines[3] eq "X-Sequence" || $split_lines[3] eq "X-Mailer" ||
+ $split_lines[3] eq "Cc") {
+ $WRITE_THIS .= "$predicate_two"."header \"$split_lines[3]\" $match_type \"$split_lines[4]\"";
+ }
+
+}