574 lines
15 KiB
Perl
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;
|