1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#
# Copyright 2007 IBM Corporation
#
# 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.
#
#
# parse_se
# Parses serviceable event data that is stored in servicelog. The data should
# be made available on stdin.
#
# First return value: a hash containing all the variables in the serviceable
# event except for FRU callouts
# Second return value: an array containing all the FRU callouts; each
# element contains a space-separated callout description
sub parse_se
{
my %se_vars = ();
my @callouts = ();
while (<STDIN>) {
chomp;
$pos = index($_, ":");
if ($pos > 0) {
$tag = substr($_, 0, $pos);
$value = substr($_, $pos+2);
}
else {
$tag = $_;
$value = "";
}
if ($tag eq "Callout") {
($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8) = split /\s/, $value;
push(@callouts, "$p1 $p2 $p3 $p4 $p5 $p6 $p7 $p8");
}
elsif (substr($tag, 0, 8) eq "AddlWord") {
$se_vars{$tag} = sprintf("%08X", hex(lc($value)));
}
else {
$se_vars{$tag} = $value;
}
}
return (\%se_vars, \@callouts);
}
1;
|