package Util::AttTool; ############################################################################## # # DESCRIPTION: This class provides an interface to external programs. # DESCRIPTION: It handles error checking and logging and allows access # DESCRIPTION: to all aspects of input and output to the program. # DESCRIPTION: Any output to stderr or a non-zero exit status from the program # DESCRIPTION: signals an error. # DESCRIPTION: # DESCRIPTION: Sub-classes like Util::Ftool, Util::PseudoFtool, # DESCRIPTION: Util::Extractor, and Util::Stool give additional functionality # DESCRIPTION: for specific types of programs. # # HISTORY: # HISTORY: $Log: AttTool.pm,v $ # HISTORY: Revision 1.3 2004/05/06 19:58:40 dah # HISTORY: Add version number back into the header comments. # HISTORY: # HISTORY: Revision 1.2 2004/04/16 20:20:37 dah # HISTORY: Begin using embedded history records # HISTORY: # # VERSION: 0.0 # # ############################################################################## use Util::Tool; @ISA=("Util::Tool"); use strict; my $BIN; my @LIBS = (); sub new { my $self = shift; my $tool = shift; ######################################## # inherit the generic Tool constructor ######################################## $self=$self->SUPER::new($BIN,$tool); $self->{LIBS} = \@LIBS; return $self; } sub dirs { my $self = shift; $BIN = shift; @LIBS = @_; return $self; } ######################################################################### # return all shared object library directories for this software package # These will be prepended to LD_LIBRARY_PATH when the tool is run ######################################################################### sub libs { my $self=shift; return @{$self->{LIBS}}; } sub init { my $self=shift; ############################ # do the inherited init ############################ $self->SUPER::init(); ######################################################### # set the LD_LIBRARY_PATH environment variable # to include all the shared object libraries # for this package. Remember the original value # so we can restore it after running the tool. ######################################################### $self->{ORIGINAL_LD_LIBRARY_PATH}=$ENV{LD_LIBRARY_PATH}; $ENV{LD_LIBRARY_PATH}=join(':', $self->libs()) . ":$ENV{LD_LIBRARY_PATH}"; } sub cleanup { my $self=shift; ##################################### # inherit generic tool cleanup stuff ##################################### $self->SUPER::cleanup(); ####################################### # reset the path environment variables ####################################### $ENV{LD_LIBRARY_PATH} = $self->{ORIGINAL_LD_LIBRARY_PATH}; } 1;