File: servevent_parse.pl

package info (click to toggle)
ppc64-diag 2.7.9-1.1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 3,452 kB
  • sloc: ansic: 29,337; cpp: 2,716; sh: 1,516; perl: 715; makefile: 488; yacc: 338; lex: 197
file content (59 lines) | stat: -rwxr-xr-x 1,727 bytes parent folder | download | duplicates (5)
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;