mail-uplift fix lines before and after message separator
authorTony Finch <dot@dotat.at>
Fri, 28 Nov 2014 20:14:54 +0000 (20:14 +0000)
committerTony Finch <dot@dotat.at>
Fri, 28 Nov 2014 20:14:54 +0000 (20:14 +0000)
ipreg-mail-uplift

index ac1289f..1e70fd8 100755 (executable)
@@ -15,16 +15,22 @@ for my $f (<ipreg-mail/Institutions/*>) {
   open my $in, '<', $f
     or shite "open < $f";
   my @f = <$in>;
-  map 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,
-       @f;
+  for (my $i = 0; $i < @f; $i++) {
+    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;
+  }
   open my $out, '>', "$f.new"
     or shite "open > $f.new";
   print $out @f;