9931cd58a5
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@11119 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
54 lines
1.2 KiB
Perl
54 lines
1.2 KiB
Perl
#!/usr/bin/env perl
|
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
|
|
|
package xCAT::Enabletrace;
|
|
use Filter::Util::Call;
|
|
|
|
our @ISA = qw(Exporter);
|
|
our @EXPORT_OK = qw(loadtrace filter);
|
|
|
|
sub loadtrace{
|
|
my (undef, $filename) = caller();
|
|
my (%args) = (
|
|
filename => $filename,
|
|
inside => 0,
|
|
lineno => 0,
|
|
);
|
|
|
|
filter_add(bless \%args);
|
|
}
|
|
|
|
sub filter {
|
|
my ($self) = @_;
|
|
my $line= filter_read();
|
|
$self->{lineno}++;
|
|
# deal with EOF/error first
|
|
if ($line<= 0) {
|
|
if ($self->{inside}) {
|
|
die "Do not find the END of the trace block. [$self->{filename}:$self->{lineno}]";
|
|
}
|
|
return $line;
|
|
}
|
|
if ($self->{inside}) {
|
|
if (/^\s*##\s*TRACE_BEGIN/ ) {
|
|
die "The trace block is nested. [$self->{filename}:$self->{lineno}]";
|
|
} elsif (/^\s*##\s*TRACE_END/) {
|
|
$self->{inside} = 0;
|
|
} else {
|
|
# remove the #.. at the begin of the line
|
|
s/^\s*#+//;
|
|
}
|
|
} elsif ( /^\s*##\s*TRACE_BEGIN/ ) {
|
|
$self->{inside} = 1;
|
|
} elsif ( /^\s*##\s*TRACE_END/ ) {
|
|
die "Do not see the BEGIN of the trace block. [$self->{filename}:$self->{lineno}]";
|
|
} elsif ( /^\s*##\s*TRACE_LINE/ ) {
|
|
s/^\s*##\s*TRACE_LINE//;
|
|
}
|
|
|
|
return $line;
|
|
}
|
|
|
|
|
|
1;
|