|
@@ -0,0 +1,45 @@
|
|
|
|
+#!/usr/bin/perl
|
|
|
|
+use strict;
|
|
|
|
+use warnings;
|
|
|
|
+
|
|
|
|
+my ($block, $blockOK);
|
|
|
|
+
|
|
|
|
+sub endBlock(_) {
|
|
|
|
+ return unless $block;
|
|
|
|
+ if ($blockOK) {
|
|
|
|
+ print @$block;
|
|
|
|
+ }
|
|
|
|
+ undef $block;
|
|
|
|
+ undef $blockOK;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+sub startBlock(_) {
|
|
|
|
+ $block = [@_];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+sub addToBlock(_) {
|
|
|
|
+ my ($line) = @_;
|
|
|
|
+ push @$block, $line;
|
|
|
|
+ return unless $line =~ /^==\d+==\s+(at|by) 0x[0-9A-F]+: (.*) \(.+:\d+\)$/;
|
|
|
|
+ $_ = $2;
|
|
|
|
+ return $blockOK = 1 if /^isc::/;
|
|
|
|
+ return $blockOK = 1 if /^asiolink:/;
|
|
|
|
+ return if /^main \(/;
|
|
|
|
+ return if /^testing::/;
|
|
|
|
+ return if /^\(anonymous namespace\)::/;
|
|
|
|
+ $blockOK = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+while(<>) {
|
|
|
|
+ if (/^==\d+==\s*$/) {
|
|
|
|
+ print;
|
|
|
|
+ endBlock;
|
|
|
|
+ } elsif (/^==\d+==\s+\d+bytes.*lost in loss record/) {
|
|
|
|
+ startBlock;
|
|
|
|
+ } elsif ($block) {
|
|
|
|
+ addToBlock;
|
|
|
|
+ } else {
|
|
|
|
+ print;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+endBlock;
|