#!/usr/bin/perl

#    Copyright (c) International Business Machines  Corp., 2001
#
#    This program is free software;  you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY;  without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
#    the GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program;  if not, write to the Free Software
#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

#   FILE        : ltpoutput2
#   DESCRIPTION : reads from STDIN and rips failures out of the output from PAN
#   HISTORY	:
#	12/12/2001 Robbie Williamson (robbiew@us.ibm.com)
#		adapted from `ltpoutput`


$buf = <STDIN>;
foreach $_ (<>) {
  $line = $_;
  $buf = $buf . $line;
  if($line =~ '<<<test_end>>>') {
    if($buf =~ "termination_id=[^0]") {
      $buf =~ tr/<>/-/;
      print $buf;
    }
    $buf = "";
  }
  if($line =~ "^pan reported") {
    print $line;
  }
}
