office-gobmx/testgraphical/source/ConvwatchHelper.pm
2010-05-10 14:21:51 +02:00

574 lines
15 KiB
Perl

package ConvwatchHelper;
use English;
use warnings;
use strict;
use Cwd;
use Cwd 'chdir';
use CallExternals;
use stringhelper;
use filehelper;
use oshelper;
use loghelper;
BEGIN {
use Exporter ();
our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
$VERSION = 1.00;
# if using RCS/CVS, this may be preferred
$VERSION = do { my @r = (q$Revision: 1.39 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
@ISA = qw(Exporter);
@EXPORT = qw(&getQADEVToolsPath &setProjectRoot &getProjectRoot &checkForStop &getSofficeExe &setINPATH);
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
# as well as any optionally exported functions
@EXPORT_OK = ( ); # qw($Var1 %Hashit &func3);
}
# ------------------------------------------------------------------------------
our $tempprefix;
# sub getTempDir()
# {
# my $sTempDir;
# if (! $tempprefix)
# {
# if ($OSNAME eq "MSWin32" || $OSNAME eq "cygwin")
# {
# # $tempdir = "C:/gfxcmp/temp";
# $tempprefix = "//so-gfxcmp-lin/gfxcmp-data/wntmsci/temp";
# }
# elsif ($OSNAME eq "linux")
# {
# $tempprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxlngi/temp";
# }
# elsif ($OSNAME eq "solaris")
# {
# # $tempdir = "/space/gfxcmp/temp";
# $tempprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxsoli/temp";
# }
# else
# {
# print "Error: This environment isn't supported yet.\n";
# exit(1);
# }
# }
# $sTempDir = $tempprefix;
# return $sTempDir;
# }
# ------------------------------------------------------------------------------
# in filehelper
# our $programprefix;
#
# sub getProgramPrefix($)
# {
# my $sDBDistinct = shift;
#
# my $sProgramPrefix;
# if (! $programprefix)
# {
# if ($OSNAME eq "MSWin32")
# {
# # $programprefix = "C:/gfxcmp/programs";
# $programprefix = "C:/gp";
# }
# elsif ($OSNAME eq "linux")
# {
# $programprefix = "/space/gfxcmp/programs";
# }
# elsif ($OSNAME eq "solaris")
# {
# $programprefix = "/space/gfxcmp/programs";
# }
# else
# {
# print "Error: This environment isn't supported yet.\n";
# exit(1);
# }
# }
# $sProgramPrefix = appendPath($programprefix, substr($sDBDistinct, 0, 19));
# return $sProgramPrefix;
# }
# ------------------------------------------------------------------------------
sub getQADEVToolsPath()
{
my $sNewPath = appendPath(getToolsPrefix(), "qadev");
$sNewPath = appendPath($sNewPath, "scripts");
$sNewPath = appendPath($sNewPath, "gfxcmp_ui");
return $sNewPath;
}
# in filehelper
# our $toolsprefix;
#
# sub getToolsPrefix()
# {
# my $sToolsPrefix;
# if (! $toolsprefix)
# {
# if ($OSNAME eq "MSWin32")
# {
# $toolsprefix = "C:/gfxcmp/tools";
# }
# elsif ($OSNAME eq "linux")
# {
# $toolsprefix = "/space/gfxcmp/tools";
# }
# elsif ($OSNAME eq "solaris")
# {
# $toolsprefix = "/space/gfxcmp/tools";
# }
# else
# {
# print "Error: This environment isn't supported yet.\n";
# exit(1);
# }
# }
# $sToolsPrefix = $toolsprefix;
# return $sToolsPrefix;
# }
# ------------------------------------------------------------------------------
our $sProjectRoot;
sub setProjectRoot($)
{
$sProjectRoot = shift;
log_print "\$sProjectRoot := $sProjectRoot\n";
}
sub getProjectRoot()
{
if ($sProjectRoot)
{
return $sProjectRoot;
}
die "setProjectRoot(PATH) not set.\n";
}
our $sINPATH;
sub setINPATH($)
{
$sINPATH = shift;
}
sub getINPATH()
{
if ($sINPATH)
{
return $sINPATH;
}
die "setINPATH(PATH) not set.\n";
}
our $dataprefix;
# sub getDataPrefix()
# {
# my $sDataPrefix;
# if (! $dataprefix)
# {
# if ($OSNAME eq "MSWin32" || $OSNAME eq "cygwin")
# {
# # $dataprefix = "C:/gfxcmp/data";
# # $dataprefix = "//so-gfxcmp-lin/gfxcmp-data/wntmsci";
# $dataprefix = getProjectRoot();
# }
# elsif ($OSNAME eq "linux")
# {
# # $dataprefix = "/space/gfxcmp/data";
# # $dataprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxlngi";
# $dataprefix = getProjectRoot();
# }
# elsif ($OSNAME eq "solaris")
# {
# # $dataprefix = "/space/gfxcmp/data";
# # $dataprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxsoli";
# $dataprefix = getProjectRoot();
# }
# else
# {
# print "Error: This environment isn't supported yet.\n";
# exit(1);
# }
# $dataprefix = appendPath(getProjectRoot(), getINPATH());
# $dataprefix = appendPath($dataprefix, "data");
# }
# $sDataPrefix = $dataprefix;
# return $sDataPrefix;
# }
# ------------------------------------------------------------------------------
# sub _shortsleep($)
# {
# # sleep 1;
# select(undef, undef, undef, 0.333);
# }
#
# sub _waitInSeconds($)
# {
# my $nLength = shift;
# my $i;
# my $j;
#
# for ($j=0;$j<$nLength;$j++)
# {
# for ($i=0;$i<$j;$i++)
# {
# print ".";
# }
# for ($i=$j;$i<$nLength;$i++)
# {
# print " ";
# }
# _shortsleep( 1 );
# print "\r";
# }
#
# for ($j=0;$j<=$nLength;$j++)
# {
# for ($i=0;$i<$j;$i++)
# {
# print " ";
# }
# for ($i=$j;$i<$nLength;$i++)
# {
# print ".";
# }
# _shortsleep( 1 );
# print "\r";
# }
# }
#
# sub wait30seconds()
# {
# _waitInSeconds(20);
# _waitInSeconds(20);
# }
sub checkForStop($)
{
my $sStopFilename = shift;
my $sStopFilePath;
if ($OSNAME eq "MSWin32")
{
$sStopFilePath = "C:/temp/";
}
else
{
$sStopFilePath = "/tmp/";
}
my $sStopFile = $sStopFilePath . $sStopFilename;
if ( -e "$sStopFile" )
{
print "Stop of Convwatch tool forced!\n";
unlink($sStopFile);
exit(2);
}
}
# ----------------------------------------------------------------------------------------
sub readdirectory($$$);
sub readdirectory($$$)
{
my $startdir = shift;
my $sUserParameter = shift;
my $hook = shift;
my $myfile;
local *DIR;
chdir $startdir;
cwd();
my $nCountFiles = 0;
if (opendir (DIR, $startdir)) # Directory oeffnen
{
while ($myfile = readdir(DIR))
{ # ein filename holen
#if (! -l $myfile) # not a link
#{
if (-d $myfile ) # is a directory
{
if ( -l $myfile)
{
next;
}
# if ( $myfile eq "help" ||
# $myfile eq "presets" ||
# $myfile eq "registry" ||
# $myfile eq "uno_packages" ||
# $myfile eq "lib" ||
# $myfile eq "user_tree" )
# {
# next;
# }
if ($myfile ne "." && $myfile ne "..")
{
my $sNewStartDir = appendPath($startdir, $myfile); # neuen Directorystring erstellen
# if ($sNewStartDir =~ "^\/proc" ||
# $sNewStartDir =~ "^\/dev" ||
# $sNewStartDir =~ "^\/udev" ||
# $sNewStartDir =~ "lost+found" )
# {
# next;
# }
# my $sNewSUserParameter = $sUserParameter . $myfile ."/";
# do a recursive call
# $nCountFiles++;
my $nFileCount = readdirectory($sNewStartDir, $sUserParameter, $hook);
# workOnDir($sNewDir, $nFileCount);
$nCountFiles += $nFileCount;
chdir ($startdir); # zurueckwechseln.
cwd();
}
}
else
{
# File must exist, be a regular file and must not be the $onlyOnFile
if (-f $myfile)
{
# print STDERR " $startdir" . "$myfile\n";
$nCountFiles++;
# workOnFile($startdir, $myfile, $destdir);
$hook->($startdir, $myfile, $sUserParameter);
}
}
#}
#else
#{
# print STDERR "linked file: $dir/$myfile\n";
#}
}
closedir(DIR);
}
else
{
print STDERR "could not open $startdir\n";
}
return $nCountFiles;
}
our $lcl_sSofficeBinPath;
our $lcl_sSofficeBinName;
sub searchSofficeBin($$$)
{
my $currentDir = shift;
my $currentFile = shift;
my $sUserParameter = shift;
if ($currentFile eq $sUserParameter)
{
my $sSourceFilename;
$sSourceFilename = appendPath($currentDir, $currentFile);
if ( -e "$sSourceFilename" )
{
$lcl_sSofficeBinPath = $currentDir;
$lcl_sSofficeBinName = $currentFile;
}
}
}
# our $lcl_sUnoPkgPath;
#
# sub searchUnoPkgBin($$$)
# {
# my $currentDir = shift;
# my $currentFile = shift;
# my $sUserParameter = shift;
#
# if ($currentFile eq $sUserParameter)
# {
# my $sSourceFilename;
# $sSourceFilename = appendPath($currentDir, $currentFile);
# if ( -e "$sSourceFilename" )
# {
# $lcl_sUnoPkgPath = $currentDir;
# }
# }
# }
# our $lcl_sJARPath;
# sub searchJARFile($$$)
# {
# my $currentDir = shift;
# my $currentFile = shift;
# my $sUserParameter = shift;
#
# if ($currentFile eq $sUserParameter)
# {
# my $sSourceFilename;
# $sSourceFilename = appendPath($currentDir, $currentFile);
# if ( -e "$sSourceFilename" )
# {
# $lcl_sJARPath = $currentDir;
# }
# }
# }
# return the PATH, where the file was found
# sub searchForJAR($$)
# {
# my $sPathToInstallOffice = shift;
# my $sJARFileName = shift;
#
# my $sCurrentPath = cwd();
#
# $lcl_sJARPath = "";
# readdirectory(${sPathToInstallOffice}, ${sJARFileName}, \&searchJARFile);
#
# chdir $sCurrentPath;
# cwd();
#
# return $lcl_sJARPath;
# }
# sub getUnoPkg($)
# {
# my $sPathToInstallOffice = shift;
#
# my $sUnoPkgName = "unopkg.bin";
# if (isWindowsEnvironment())
# {
# $sUnoPkgName = "unopkg.exe";
# }
#
# my $sCurrentPath = cwd();
#
# $lcl_sUnoPkgPath = "";
# readdirectory(${sPathToInstallOffice}, ${sUnoPkgName}, \&searchUnoPkgBin);
#
# chdir $sCurrentPath;
# cwd();
#
# return ($lcl_sUnoPkgPath, $sUnoPkgName);
# }
sub getSofficeExe($)
{
my $sPathToOffice = shift;
my $sSofficeExeName = "soffice";
if (isWindowsEnvironment())
{
$sSofficeExeName = "soffice.exe";
}
my $sCurrentPath = cwd();
$lcl_sSofficeBinPath = "";
$lcl_sSofficeBinName = "";
readdirectory(${sPathToOffice}, ${sSofficeExeName}, \&searchSofficeBin);
chdir $sCurrentPath;
cwd();
return ($lcl_sSofficeBinPath, $lcl_sSofficeBinName);
}
# sub checkOfficeAlreadyInstalled($)
# {
# my $sOfficePath = shift;
#
# my $sCurrentPath = cwd();
#
# $lcl_sSofficeBinPath = "";
# my $sOldOfficePath = appendPath($sOfficePath, "program");
# if ( -d "$sOldOfficePath" )
# {
# $sOldOfficePath = appendPath($sOldOfficePath, "soffice.bin");
# if ( -e $sOldOfficePath )
# {
# return 1;
# }
# }
# else
# {
# if (isWindowsEnvironment())
# {
# my $sThreeLayerOffice = appendPath($sOfficePath, "Sun");
# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "StarOffice 9");
# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "program");
# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "soffice.bin");
#
# if ( -e "$sThreeLayerOffice" )
# {
# return 1;
# }
# }
# else
# {
# my $sThreeLayerOffice = appendPath($sOfficePath, "staroffice9");
# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "program");
# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "soffice.bin");
# if ( -e "$sThreeLayerOffice" )
# {
# return 1;
# }
# }
# }
#
# # soffice.bin not found in fast path
# readdirectory($sOfficePath, "soffice.bin", \&searchSofficeBin);
# chdir $sCurrentPath;
# cwd();
#
# if ( $lcl_sSofficeBinPath ne "" )
# {
# return 1;
# }
# return 0;
# # this is the old check
# # my $sOfficePathCheck = appendPath(${sPathToInstallOffice}, "program");
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "soffice.bin");
# # if ( -e $sOfficePathCheck )
# # {
# # return 1;
# # }
# #
# # # check path system of tree layer office
# # if ( isWindowsEnvironment() )
# # {
# # $sOfficePathCheck = appendPath(${sPathToInstallOffice}, "Sun");
# # if ( ! -e $sOfficePathCheck)
# # {
# # # could be an OpenOffice.org
# # return 0;
# # }
# # else
# # {
# #
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "StarOffice 9");
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "program");
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "soffice.bin");
# # if ( -e $sOfficePathCheck )
# # {
# # return 1;
# # }
# # print "Error: There exist no Office, maybe an unsupported version?\n";
# # }
# # }
# # elsif ( isUnixEnvironment() )
# # {
# # $sOfficePathCheck = appendPath(${sPathToInstallOffice}, "staroffice9");
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "staroffice9");
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "program");
# # $sOfficePathCheck = appendPath($sOfficePathCheck, "soffice.bin");
# # if ( -e $sOfficePathCheck )
# # {
# # return 1;
# # }
# # print "Error: There exist no Office, maybe an unsupported version?\n";
# # }
# # else
# # {
# # print "Error: There exist no Office, maybe an unsupported version?\n";
# # }
# # return 0;
# }
1;