1#!/usr/bin/perl
2# Copyright (c) 2012 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6sub process_raw($$) {
7  my $file = shift;
8  my $search = shift;
9
10  my %leaks = ();
11
12  my $save = 0;
13  my $print = 0;
14  my $bytes = 0;
15  my $calls = 0;
16  my $sum_bytes = 0;
17  my $sum_calls = 0;
18
19  open (LOGFILE, "$file") or die("could not open $file");
20  while(<LOGFILE>) {
21    my $line = $_;
22    if ($line =~ m/([0-9]*) bytes, ([0-9]*) allocs/) {
23      $save = "";
24      $print = 0;
25      $bytes = $1;
26      $calls = $2;
27    }
28    elsif ($line =~ m/$search/) {
29      $print = 1;
30    }
31    elsif ($line =~ m/=============/) {
32      $save .= $line;
33      if ($print) {
34        print "$bytes bytes ($calls calls)\n";
35        print $save;
36        $sum_bytes += $bytes;
37        $sum_calls += $calls;
38        $save = "";
39        $print = 0;
40        $calls = 0;
41      }
42    }
43    $save .= $line;
44  }
45  print("TOTAL: $sum_bytes bytes ($sum_calls calls)\n");
46}
47
48
49# ----- Main ------------------------------------------------
50
51# Get the command line argument
52my $filename = shift;
53my $search = shift;
54
55# Process the file.
56process_raw($filename, $search);
57