mail-uplift keep existing From_ lines and fix up (Message) lines
authorTony Finch <dot@dotat.at>
Fri, 28 Nov 2014 20:35:11 +0000 (20:35 +0000)
committerTony Finch <dot@dotat.at>
Fri, 28 Nov 2014 20:35:11 +0000 (20:35 +0000)
ipreg-mail-uplift

index fc32729..22f1be2 100755 (executable)
@@ -16,21 +16,23 @@ for my $f (<ipreg-mail/Institutions/*>) {
     or shite "open < $f";
   my @f = <$in>;
   for (my $i = 0; $i < @f; $i++) {
-    next if $f[$i] =~ s{^From }{>From };
-    next unless $f[$i] =~ s{
-      ^[+][+][+]\s+
-      ([a-z]+[0-9]*[ ] # user
-       [A-Z][a-z][a-z][ ] # day
-       [A-Z][a-z][a-z])\s+ # mon
-      ([0-9]+)\s+ # date
-      ([0-9][0-9]:[0-9][0-9]:[0-9][0-9][ ] # time
-       [A-Z][A-Z][A-Z][ ] # zone
-       [12][0-9][0-9][0-9])\s*$ # year
-     }{sprintf "From %s %2d %s\n", $1, $2, $3}xe;
-    splice @f, $i++, 0, "\n" if $i > 0 && $f[$i] !~ m{^\n$};
-    my $j = $i + 1;
-    $j++ while $f[$j] =~ m{^$|^From };
-    splice @f, $i + 1, $j - $i - 1;
+    if ($f[$i] =~ s{
+        ^(?:[+][+][+]|From)\s+
+        ([a-z]+[0-9]*[ ] # user
+         [A-Z][a-z][a-z][ ] # day
+         [A-Z][a-z][a-z])\s+ # mon
+        ([0-9]+)\s+ # date
+        ([0-9][0-9]:[0-9][0-9]:[0-9][0-9][ ] # time
+         [A-Z][A-Z][A-Z][ ] # zone
+         [12][0-9][0-9][0-9])\s*$ # year
+        }{sprintf "From %s %2d %s\n", $1, $2, $3}xe) {
+      splice @f, $i++, 0, "\n" if $i > 0 && $f[$i] !~ m{^\n$};
+      my $j = $i + 1;
+      $j++ while $f[$j] =~ m{^$|^From |^[(]Message .*[)]$};
+      splice @f, $i + 1, $j - $i - 1;
+    } else {
+      $f[$i] =~ s{^From }{>From };
+    }
   }
   open my $out, '>', "$f.new"
     or shite "open > $f.new";