+bin/upsc-log,+bin/upsc-log-diff
[nethome.git] / bin / upsc-log-diff
diff --git a/bin/upsc-log-diff b/bin/upsc-log-diff
new file mode 100755 (executable)
index 0000000..6c21015
--- /dev/null
@@ -0,0 +1,45 @@
+#! /usr/bin/perl
+use strict;
+use warnings;
+local *F;
+my $ta="/tmp/upsc-log-diff.".$$."a";
+my $tb="/tmp/upsc-log-diff.".$$."b";
+unlink $ta; unlink $tb;
+END {
+  unlink $ta; unlink $tb;
+}
+my $F="/var/log/upsc.log";
+open F,$F or die "$F: $!";
+my $prev;
+my $this="";
+while (<F>) {
+  chomp;
+  if (!/^$/) {
+    $this.="$_\n";
+    next;
+  }
+  if ($prev) {
+    local *TA;
+    local *TB;
+    open TA,">$ta" or die "$ta: $!";
+    open TB,">$tb" or die "$tb: $!";
+    print TA $prev or die "$ta: $!";
+    print TB $this or die "$tb: $!";
+    close TA or die "$ta: $!";
+    close TB or die "$ta: $!";
+    local *TD;
+    my $td="diff -u $ta $tb|";
+    open TD,$td or die "$td: $!";
+    <TD>=~/^\Q--- / or die $_;
+    <TD>=~/^\Q+++ / or die $_;
+    while (<TD>) {
+      next if /^[@ ]/;
+      print;
+    }
+    close TD; # or die "$td: $!";
+    print "\n";
+  }
+  $prev=$this;
+  $this="";
+}
+die $this if $this;