equal
  deleted
  inserted
  replaced
  
    
    
     1 #! /usr/bin/perl  | 
         | 
     2 use 5.14.0;  | 
         | 
     3 use strict;  | 
         | 
     4 use warnings;  | 
         | 
     5 use Template;  | 
         | 
     6 use List::Util qw(max);  | 
         | 
     7   | 
         | 
     8 my %fail;  | 
         | 
     9   | 
         | 
    10 foreach my $file (glob "out*/log.*") { | 
         | 
    11     my ($name, $platform) = $file =~ /out-?(.*?)\/log\.(.*)/;  | 
         | 
    12     my ($os) = $platform =~ /(^.*?)-/;  | 
         | 
    13     $_ = do { local @ARGV = $file; local $/ = undef; <> }; | 
         | 
    14     s/  | 
         | 
    15 /\n/g;  | 
         | 
    16     my ($version) = /^Exim version (\S+)/mi;  | 
         | 
    17     my ($ssl) =  | 
         | 
    18         /^Support for: .*\bGnuTLS/mi    ? 'GnuTLS'  | 
         | 
    19       : /^Support for: .*\bOpenSSL\b/mi ? 'OpenSSL'  | 
         | 
    20       :                                   'No SSL';  | 
         | 
    21   | 
         | 
    22     $fail{$os}{$ssl}{$version} = {}; | 
         | 
    23   | 
         | 
    24     foreach (/^\*{2}.*\/(\d+)\s+failed.*?=+/mg) { | 
         | 
    25         $fail{$os}{$ssl}{$version}{_failed}{$_} = 1; | 
         | 
    26         $fail{$os}{$ssl}{_failed}{$_} = 1; | 
         | 
    27     }  | 
         | 
    28 }  | 
         | 
    29   | 
         | 
    30 my $os_len = max map { length } keys %fail; | 
         | 
    31 my $ssl_len = max map { length } map { keys %$_ } values %fail; | 
         | 
    32 my $version_len =  | 
         | 
    33   max map { length } map { keys %$_ } map { values %$_ } values %fail; | 
         | 
    34   | 
         | 
    35 foreach my $os (sort keys %fail) { | 
         | 
    36     foreach my $ssl (sort keys %{ $fail{$os} }) { | 
         | 
    37         foreach my $version (grep { !/^_/ } sort keys %{ $fail{$os}{$ssl} }) { | 
         | 
    38             printf "%*s %*s %*s: ",  | 
         | 
    39               -$os_len      => $os,  | 
         | 
    40               -$ssl_len     => $ssl,  | 
         | 
    41               -$version_len => $version;  | 
         | 
    42   | 
         | 
    43             foreach my $failed (sort { $a <=> $b } | 
         | 
    44                 keys %{ $fail{$os}{$ssl}{_failed} }) | 
         | 
    45             { | 
         | 
    46                 printf "%4s ",  | 
         | 
    47                   $fail{$os}{$ssl}{$version}{_failed}{$failed} ? $failed : '-'; | 
         | 
    48             }  | 
         | 
    49   | 
         | 
    50             print "\n";  | 
         | 
    51         }  | 
         | 
    52         print "\n";  | 
         | 
    53     }  | 
         | 
    54 }  | 
         | 
    55   | 
         |