6c21015b44436ab97a383a91c3a53808bfb28ef0
[nethome.git] / bin / upsc-log-diff
1 #! /usr/bin/perl
2 use strict;
3 use warnings;
4 local *F;
5 my $ta="/tmp/upsc-log-diff.".$$."a";
6 my $tb="/tmp/upsc-log-diff.".$$."b";
7 unlink $ta; unlink $tb;
8 END {
9   unlink $ta; unlink $tb;
10 }
11 my $F="/var/log/upsc.log";
12 open F,$F or die "$F: $!";
13 my $prev;
14 my $this="";
15 while (<F>) {
16   chomp;
17   if (!/^$/) {
18     $this.="$_\n";
19     next;
20   }
21   if ($prev) {
22     local *TA;
23     local *TB;
24     open TA,">$ta" or die "$ta: $!";
25     open TB,">$tb" or die "$tb: $!";
26     print TA $prev or die "$ta: $!";
27     print TB $this or die "$tb: $!";
28     close TA or die "$ta: $!";
29     close TB or die "$ta: $!";
30     local *TD;
31     my $td="diff -u $ta $tb|";
32     open TD,$td or die "$td: $!";
33     <TD>=~/^\Q--- / or die $_;
34     <TD>=~/^\Q+++ / or die $_;
35     while (<TD>) {
36       next if /^[@ ]/;
37       print;
38     }
39     close TD; # or die "$td: $!";
40     print "\n";
41   }
42   $prev=$this;
43   $this="";
44 }
45 die $this if $this;