#
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
# YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
# All rights reserved.
#
# Redistribution and use of this software in source and binary forms, with
# or without modification, are permitted provided that the following
# conditions and disclaimer are agreed and accepted by the user:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the names of the copyrighters, the name of the project which
# is related to this software (hereinafter referred to as "project") nor
# the names of the contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# 4. No merchantable use may be permitted without prior written
# notification to the copyrighters. However, using this software for the
# purpose of testing or evaluating any products including merchantable
# products may be permitted without any notification to the copyrighters.
#
#
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING
# BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
########################################################################
package V6evalCommon;
use Exporter;
@ISA = qw(Exporter);
use File::Basename;
@EXPORT = qw(
pathinit
searchPath
$SeqName
$SeqDir
$V6EVALPREFX
$V6EVALROOT
$V6EVALBIN
$V6EVALETC
$V6EVALINC
);
sub pathinit(@);
sub searchPath($$);
#sub readTnDef($);
#sub readNutDef($);
########################################################################
# Path Init
#-----------------------------------------------------------------------
sub pathinit(@) { my(
$path, # path
) = @_;
($SeqName,$SeqDir,$SeqSuffix) = fileparse($0,'.seq');
$V6EVALPREFIX= "/usr/local/v6eval";
$V6EVALROOT = $path || $ENV{V6EVALROOT} || $V6EVALPREFIX;
$V6EVALBIN = $ENV{V6EVALBIN} || "$V6EVALROOT/bin/";
$V6EVALETC = $ENV{V6EVALETC} || "./:$V6EVALROOT/etc/";
$V6EVALINC = $ENV{V6EVALINC} || "$SeqDir:./:$V6EVALROOT/include/";
}
########################################################################
# Search Path
#-----------------------------------------------------------------------
sub searchPath($$) { my(
$path, # path
$filename # filename for search
) = @_;
my $fullname="";
if($filename =~ m!.*/.+!) {
$fullname=$filename;
}
my @paths=split(/:/,($path));
foreach(@paths) {
my $tmpname=$_ . "/" . $filename;
#my $tmpname=$_ . $filename;
if($fullname eq "") {
$fullname=$tmpname if(-r $tmpname);
}
}
$fullname;
}
__END__
sub readTnDef($) { my(
$tn
) = @_;
#---------------------------------------------------------------
# Check TN definition and setup environment
#---------------------------------------------------------------
my (%TnDef);
prTrace("Looking up $tn");
open(FILE,"$tn") || prErrExit("Can not open $tn");
my $lines=0;
while(<FILE>){
$lines++;
# skip comment line
next if(/^\s*$/ || /^#/);
#
chomp;
# check syntax
if( /^(socketpath)\s+(\S+)/ ) {
$SocketPath=$2;
}
elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-f]{1,2}:){5}[0-9a-f]{1,2})/){
$TnDef{$1."_device"}=$2;
$TnDef{$1."_addr"}=$3;
}
elsif( /^(RemoteCuPath)\s+(\S+)/ ||
/^(RemoteDevice)\s+(\S+)/ ||
/^(RemoteDebug)\s+(\S+)/ ||
/^(RemoteIntDebug)\s+(\S+)/ ||
/^(RemoteLog)\s+(\S+)/ ||
/^(RemoteSpeed)\s+(\S+)/ ||
/^(RemoteLogout)\s+(\S+)/ ||
/^(RemoteMethod)\s+(\S+)/ ||
/^(filter)\s+(\S+)/){
}
else{ $TnDef{'error'} .= "line $lines : unknown directive $_\n";}
# set
if( /^(\S+)\s+(.*)/ ) {
if($TnDef{$1}){
$TnDef{'error'} .= "line $lines : duplicate entry $_\n";}
} else {
$TnDef{$1} = $2;
}
}
prTrace("TN : $_");
}
close FILE;
return %TnDef;
}
sub readNutDef($) { my(
$nut
) = @_;
#---------------------------------------------------------------
# Check NUT definition and setup environment
#---------------------------------------------------------------
my (%NutDef);
prTrace("Looking up $nut");
open(FILE, "$nut") || prErrExit("Can not open $nut");
while(<FILE>){
next if(/^\s*$/ || /^#/); # remove comment
chomp;
if( /^(\S+)\s+(.*)/ ) {
$NutDef{$1} = $2;
}
if( /^(System)\s+(.*)/ ||
/^(TargetName)\s+(.*)/ ||
/^(HostName)\s+(.*)/ ||
/^(Type)\s+(.*)/ ) {
prLog("<TR><TD>$1</TD><TD>$2</TD></TR>");
} elsif(
/^(User)\s+(\S+)/ ||
/^(Password)\s+(\S+)/ ){
}
elsif( /^(Link[0-9]+)\s+(\S+)\s+(([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2})/){
$NutDef{$1."_device"}=$2;
$NutDef{$1."_addr"}=$3;
}
else{ $NutDef{'error'} .= "line $lines : unknown directive $_\n";}
prTrace("NUT: $_");
}
close FILE;
return %NutDef;
}
syntax highlighted by Code2HTML, v. 0.9.1