1*b1cdbd2cSJim Jagielski# ************************************************************* 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski# ************************************************************* 21*b1cdbd2cSJim Jagielskipackage ConvwatchHelper; 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielskiuse English; 24*b1cdbd2cSJim Jagielskiuse warnings; 25*b1cdbd2cSJim Jagielskiuse strict; 26*b1cdbd2cSJim Jagielskiuse Cwd; 27*b1cdbd2cSJim Jagielskiuse Cwd 'chdir'; 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielskiuse CallExternals; 30*b1cdbd2cSJim Jagielskiuse stringhelper; 31*b1cdbd2cSJim Jagielskiuse filehelper; 32*b1cdbd2cSJim Jagielskiuse oshelper; 33*b1cdbd2cSJim Jagielskiuse loghelper; 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim JagielskiBEGIN { 36*b1cdbd2cSJim Jagielski use Exporter (); 37*b1cdbd2cSJim Jagielski our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski $VERSION = 1.00; 40*b1cdbd2cSJim Jagielski # if using RCS/CVS, this may be preferred 41*b1cdbd2cSJim Jagielski $VERSION = do { my @r = (q$Revision: 1.39 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker 42*b1cdbd2cSJim Jagielski @ISA = qw(Exporter); 43*b1cdbd2cSJim Jagielski @EXPORT = qw(&getQADEVToolsPath &setProjectRoot &getProjectRoot &checkForStop &getSofficeExe &setINPATH); 44*b1cdbd2cSJim Jagielski %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], 45*b1cdbd2cSJim Jagielski # your exported package globals go here, 46*b1cdbd2cSJim Jagielski # as well as any optionally exported functions 47*b1cdbd2cSJim Jagielski @EXPORT_OK = ( ); # qw($Var1 %Hashit &func3); 48*b1cdbd2cSJim Jagielski} 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 51*b1cdbd2cSJim Jagielskiour $tempprefix; 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski# sub getTempDir() 54*b1cdbd2cSJim Jagielski# { 55*b1cdbd2cSJim Jagielski# my $sTempDir; 56*b1cdbd2cSJim Jagielski# if (! $tempprefix) 57*b1cdbd2cSJim Jagielski# { 58*b1cdbd2cSJim Jagielski# if ($OSNAME eq "MSWin32" || $OSNAME eq "cygwin") 59*b1cdbd2cSJim Jagielski# { 60*b1cdbd2cSJim Jagielski# # $tempdir = "C:/gfxcmp/temp"; 61*b1cdbd2cSJim Jagielski# $tempprefix = "//so-gfxcmp-lin/gfxcmp-data/wntmsci/temp"; 62*b1cdbd2cSJim Jagielski# } 63*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "linux") 64*b1cdbd2cSJim Jagielski# { 65*b1cdbd2cSJim Jagielski# $tempprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxlngi/temp"; 66*b1cdbd2cSJim Jagielski# } 67*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "solaris") 68*b1cdbd2cSJim Jagielski# { 69*b1cdbd2cSJim Jagielski# # $tempdir = "/space/gfxcmp/temp"; 70*b1cdbd2cSJim Jagielski# $tempprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxsoli/temp"; 71*b1cdbd2cSJim Jagielski# } 72*b1cdbd2cSJim Jagielski# else 73*b1cdbd2cSJim Jagielski# { 74*b1cdbd2cSJim Jagielski# print "Error: This environment isn't supported yet.\n"; 75*b1cdbd2cSJim Jagielski# exit(1); 76*b1cdbd2cSJim Jagielski# } 77*b1cdbd2cSJim Jagielski# } 78*b1cdbd2cSJim Jagielski# $sTempDir = $tempprefix; 79*b1cdbd2cSJim Jagielski# return $sTempDir; 80*b1cdbd2cSJim Jagielski# } 81*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 82*b1cdbd2cSJim Jagielski# in filehelper 83*b1cdbd2cSJim Jagielski# our $programprefix; 84*b1cdbd2cSJim Jagielski# 85*b1cdbd2cSJim Jagielski# sub getProgramPrefix($) 86*b1cdbd2cSJim Jagielski# { 87*b1cdbd2cSJim Jagielski# my $sDBDistinct = shift; 88*b1cdbd2cSJim Jagielski# 89*b1cdbd2cSJim Jagielski# my $sProgramPrefix; 90*b1cdbd2cSJim Jagielski# if (! $programprefix) 91*b1cdbd2cSJim Jagielski# { 92*b1cdbd2cSJim Jagielski# if ($OSNAME eq "MSWin32") 93*b1cdbd2cSJim Jagielski# { 94*b1cdbd2cSJim Jagielski# # $programprefix = "C:/gfxcmp/programs"; 95*b1cdbd2cSJim Jagielski# $programprefix = "C:/gp"; 96*b1cdbd2cSJim Jagielski# } 97*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "linux") 98*b1cdbd2cSJim Jagielski# { 99*b1cdbd2cSJim Jagielski# $programprefix = "/space/gfxcmp/programs"; 100*b1cdbd2cSJim Jagielski# } 101*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "solaris") 102*b1cdbd2cSJim Jagielski# { 103*b1cdbd2cSJim Jagielski# $programprefix = "/space/gfxcmp/programs"; 104*b1cdbd2cSJim Jagielski# } 105*b1cdbd2cSJim Jagielski# else 106*b1cdbd2cSJim Jagielski# { 107*b1cdbd2cSJim Jagielski# print "Error: This environment isn't supported yet.\n"; 108*b1cdbd2cSJim Jagielski# exit(1); 109*b1cdbd2cSJim Jagielski# } 110*b1cdbd2cSJim Jagielski# } 111*b1cdbd2cSJim Jagielski# $sProgramPrefix = appendPath($programprefix, substr($sDBDistinct, 0, 19)); 112*b1cdbd2cSJim Jagielski# return $sProgramPrefix; 113*b1cdbd2cSJim Jagielski# } 114*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 115*b1cdbd2cSJim Jagielskisub getQADEVToolsPath() 116*b1cdbd2cSJim Jagielski{ 117*b1cdbd2cSJim Jagielski my $sNewPath = appendPath(getToolsPrefix(), "qadev"); 118*b1cdbd2cSJim Jagielski $sNewPath = appendPath($sNewPath, "scripts"); 119*b1cdbd2cSJim Jagielski $sNewPath = appendPath($sNewPath, "gfxcmp_ui"); 120*b1cdbd2cSJim Jagielski return $sNewPath; 121*b1cdbd2cSJim Jagielski} 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski# in filehelper 124*b1cdbd2cSJim Jagielski# our $toolsprefix; 125*b1cdbd2cSJim Jagielski# 126*b1cdbd2cSJim Jagielski# sub getToolsPrefix() 127*b1cdbd2cSJim Jagielski# { 128*b1cdbd2cSJim Jagielski# my $sToolsPrefix; 129*b1cdbd2cSJim Jagielski# if (! $toolsprefix) 130*b1cdbd2cSJim Jagielski# { 131*b1cdbd2cSJim Jagielski# if ($OSNAME eq "MSWin32") 132*b1cdbd2cSJim Jagielski# { 133*b1cdbd2cSJim Jagielski# $toolsprefix = "C:/gfxcmp/tools"; 134*b1cdbd2cSJim Jagielski# } 135*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "linux") 136*b1cdbd2cSJim Jagielski# { 137*b1cdbd2cSJim Jagielski# $toolsprefix = "/space/gfxcmp/tools"; 138*b1cdbd2cSJim Jagielski# } 139*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "solaris") 140*b1cdbd2cSJim Jagielski# { 141*b1cdbd2cSJim Jagielski# $toolsprefix = "/space/gfxcmp/tools"; 142*b1cdbd2cSJim Jagielski# } 143*b1cdbd2cSJim Jagielski# else 144*b1cdbd2cSJim Jagielski# { 145*b1cdbd2cSJim Jagielski# print "Error: This environment isn't supported yet.\n"; 146*b1cdbd2cSJim Jagielski# exit(1); 147*b1cdbd2cSJim Jagielski# } 148*b1cdbd2cSJim Jagielski# } 149*b1cdbd2cSJim Jagielski# $sToolsPrefix = $toolsprefix; 150*b1cdbd2cSJim Jagielski# return $sToolsPrefix; 151*b1cdbd2cSJim Jagielski# } 152*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 153*b1cdbd2cSJim Jagielskiour $sProjectRoot; 154*b1cdbd2cSJim Jagielskisub setProjectRoot($) 155*b1cdbd2cSJim Jagielski{ 156*b1cdbd2cSJim Jagielski $sProjectRoot = shift; 157*b1cdbd2cSJim Jagielski log_print "\$sProjectRoot := $sProjectRoot\n"; 158*b1cdbd2cSJim Jagielski} 159*b1cdbd2cSJim Jagielskisub getProjectRoot() 160*b1cdbd2cSJim Jagielski{ 161*b1cdbd2cSJim Jagielski if ($sProjectRoot) 162*b1cdbd2cSJim Jagielski { 163*b1cdbd2cSJim Jagielski return $sProjectRoot; 164*b1cdbd2cSJim Jagielski } 165*b1cdbd2cSJim Jagielski die "setProjectRoot(PATH) not set.\n"; 166*b1cdbd2cSJim Jagielski} 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielskiour $sINPATH; 169*b1cdbd2cSJim Jagielskisub setINPATH($) 170*b1cdbd2cSJim Jagielski{ 171*b1cdbd2cSJim Jagielski $sINPATH = shift; 172*b1cdbd2cSJim Jagielski} 173*b1cdbd2cSJim Jagielskisub getINPATH() 174*b1cdbd2cSJim Jagielski{ 175*b1cdbd2cSJim Jagielski if ($sINPATH) 176*b1cdbd2cSJim Jagielski { 177*b1cdbd2cSJim Jagielski return $sINPATH; 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski die "setINPATH(PATH) not set.\n"; 180*b1cdbd2cSJim Jagielski} 181*b1cdbd2cSJim Jagielskiour $dataprefix; 182*b1cdbd2cSJim Jagielski 183*b1cdbd2cSJim Jagielski# sub getDataPrefix() 184*b1cdbd2cSJim Jagielski# { 185*b1cdbd2cSJim Jagielski# my $sDataPrefix; 186*b1cdbd2cSJim Jagielski# if (! $dataprefix) 187*b1cdbd2cSJim Jagielski# { 188*b1cdbd2cSJim Jagielski# if ($OSNAME eq "MSWin32" || $OSNAME eq "cygwin") 189*b1cdbd2cSJim Jagielski# { 190*b1cdbd2cSJim Jagielski# # $dataprefix = "C:/gfxcmp/data"; 191*b1cdbd2cSJim Jagielski# # $dataprefix = "//so-gfxcmp-lin/gfxcmp-data/wntmsci"; 192*b1cdbd2cSJim Jagielski# $dataprefix = getProjectRoot(); 193*b1cdbd2cSJim Jagielski# } 194*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "linux") 195*b1cdbd2cSJim Jagielski# { 196*b1cdbd2cSJim Jagielski# # $dataprefix = "/space/gfxcmp/data"; 197*b1cdbd2cSJim Jagielski# # $dataprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxlngi"; 198*b1cdbd2cSJim Jagielski# $dataprefix = getProjectRoot(); 199*b1cdbd2cSJim Jagielski# } 200*b1cdbd2cSJim Jagielski# elsif ($OSNAME eq "solaris") 201*b1cdbd2cSJim Jagielski# { 202*b1cdbd2cSJim Jagielski# # $dataprefix = "/space/gfxcmp/data"; 203*b1cdbd2cSJim Jagielski# # $dataprefix = "/net/so-gfxcmp-lin/export/gfxcmp/data/unxsoli"; 204*b1cdbd2cSJim Jagielski# $dataprefix = getProjectRoot(); 205*b1cdbd2cSJim Jagielski# } 206*b1cdbd2cSJim Jagielski# else 207*b1cdbd2cSJim Jagielski# { 208*b1cdbd2cSJim Jagielski# print "Error: This environment isn't supported yet.\n"; 209*b1cdbd2cSJim Jagielski# exit(1); 210*b1cdbd2cSJim Jagielski# } 211*b1cdbd2cSJim Jagielski# $dataprefix = appendPath(getProjectRoot(), getINPATH()); 212*b1cdbd2cSJim Jagielski# $dataprefix = appendPath($dataprefix, "data"); 213*b1cdbd2cSJim Jagielski# } 214*b1cdbd2cSJim Jagielski# $sDataPrefix = $dataprefix; 215*b1cdbd2cSJim Jagielski# return $sDataPrefix; 216*b1cdbd2cSJim Jagielski# } 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------ 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski# sub _shortsleep($) 221*b1cdbd2cSJim Jagielski# { 222*b1cdbd2cSJim Jagielski# # sleep 1; 223*b1cdbd2cSJim Jagielski# select(undef, undef, undef, 0.333); 224*b1cdbd2cSJim Jagielski# } 225*b1cdbd2cSJim Jagielski# 226*b1cdbd2cSJim Jagielski# sub _waitInSeconds($) 227*b1cdbd2cSJim Jagielski# { 228*b1cdbd2cSJim Jagielski# my $nLength = shift; 229*b1cdbd2cSJim Jagielski# my $i; 230*b1cdbd2cSJim Jagielski# my $j; 231*b1cdbd2cSJim Jagielski# 232*b1cdbd2cSJim Jagielski# for ($j=0;$j<$nLength;$j++) 233*b1cdbd2cSJim Jagielski# { 234*b1cdbd2cSJim Jagielski# for ($i=0;$i<$j;$i++) 235*b1cdbd2cSJim Jagielski# { 236*b1cdbd2cSJim Jagielski# print "."; 237*b1cdbd2cSJim Jagielski# } 238*b1cdbd2cSJim Jagielski# for ($i=$j;$i<$nLength;$i++) 239*b1cdbd2cSJim Jagielski# { 240*b1cdbd2cSJim Jagielski# print " "; 241*b1cdbd2cSJim Jagielski# } 242*b1cdbd2cSJim Jagielski# _shortsleep( 1 ); 243*b1cdbd2cSJim Jagielski# print "\r"; 244*b1cdbd2cSJim Jagielski# } 245*b1cdbd2cSJim Jagielski# 246*b1cdbd2cSJim Jagielski# for ($j=0;$j<=$nLength;$j++) 247*b1cdbd2cSJim Jagielski# { 248*b1cdbd2cSJim Jagielski# for ($i=0;$i<$j;$i++) 249*b1cdbd2cSJim Jagielski# { 250*b1cdbd2cSJim Jagielski# print " "; 251*b1cdbd2cSJim Jagielski# } 252*b1cdbd2cSJim Jagielski# for ($i=$j;$i<$nLength;$i++) 253*b1cdbd2cSJim Jagielski# { 254*b1cdbd2cSJim Jagielski# print "."; 255*b1cdbd2cSJim Jagielski# } 256*b1cdbd2cSJim Jagielski# _shortsleep( 1 ); 257*b1cdbd2cSJim Jagielski# print "\r"; 258*b1cdbd2cSJim Jagielski# } 259*b1cdbd2cSJim Jagielski# } 260*b1cdbd2cSJim Jagielski# 261*b1cdbd2cSJim Jagielski# sub wait30seconds() 262*b1cdbd2cSJim Jagielski# { 263*b1cdbd2cSJim Jagielski# _waitInSeconds(20); 264*b1cdbd2cSJim Jagielski# _waitInSeconds(20); 265*b1cdbd2cSJim Jagielski# } 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielskisub checkForStop($) 268*b1cdbd2cSJim Jagielski{ 269*b1cdbd2cSJim Jagielski my $sStopFilename = shift; 270*b1cdbd2cSJim Jagielski my $sStopFilePath; 271*b1cdbd2cSJim Jagielski if ($OSNAME eq "MSWin32") 272*b1cdbd2cSJim Jagielski { 273*b1cdbd2cSJim Jagielski $sStopFilePath = "C:/temp/"; 274*b1cdbd2cSJim Jagielski } 275*b1cdbd2cSJim Jagielski else 276*b1cdbd2cSJim Jagielski { 277*b1cdbd2cSJim Jagielski $sStopFilePath = "/tmp/"; 278*b1cdbd2cSJim Jagielski } 279*b1cdbd2cSJim Jagielski my $sStopFile = $sStopFilePath . $sStopFilename; 280*b1cdbd2cSJim Jagielski if ( -e "$sStopFile" ) 281*b1cdbd2cSJim Jagielski { 282*b1cdbd2cSJim Jagielski print "Stop of Convwatch tool forced!\n"; 283*b1cdbd2cSJim Jagielski unlink($sStopFile); 284*b1cdbd2cSJim Jagielski exit(2); 285*b1cdbd2cSJim Jagielski } 286*b1cdbd2cSJim Jagielski} 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski# ---------------------------------------------------------------------------------------- 289*b1cdbd2cSJim Jagielskisub readdirectory($$$); 290*b1cdbd2cSJim Jagielski 291*b1cdbd2cSJim Jagielskisub readdirectory($$$) 292*b1cdbd2cSJim Jagielski{ 293*b1cdbd2cSJim Jagielski my $startdir = shift; 294*b1cdbd2cSJim Jagielski my $sUserParameter = shift; 295*b1cdbd2cSJim Jagielski my $hook = shift; 296*b1cdbd2cSJim Jagielski 297*b1cdbd2cSJim Jagielski my $myfile; 298*b1cdbd2cSJim Jagielski 299*b1cdbd2cSJim Jagielski local *DIR; 300*b1cdbd2cSJim Jagielski chdir $startdir; 301*b1cdbd2cSJim Jagielski cwd(); 302*b1cdbd2cSJim Jagielski 303*b1cdbd2cSJim Jagielski my $nCountFiles = 0; 304*b1cdbd2cSJim Jagielski if (opendir (DIR, $startdir)) # Directory oeffnen 305*b1cdbd2cSJim Jagielski { 306*b1cdbd2cSJim Jagielski while ($myfile = readdir(DIR)) 307*b1cdbd2cSJim Jagielski { # ein filename holen 308*b1cdbd2cSJim Jagielski #if (! -l $myfile) # not a link 309*b1cdbd2cSJim Jagielski #{ 310*b1cdbd2cSJim Jagielski if (-d $myfile ) # is a directory 311*b1cdbd2cSJim Jagielski { 312*b1cdbd2cSJim Jagielski if ( -l $myfile) 313*b1cdbd2cSJim Jagielski { 314*b1cdbd2cSJim Jagielski next; 315*b1cdbd2cSJim Jagielski } 316*b1cdbd2cSJim Jagielski # if ( $myfile eq "help" || 317*b1cdbd2cSJim Jagielski # $myfile eq "presets" || 318*b1cdbd2cSJim Jagielski # $myfile eq "registry" || 319*b1cdbd2cSJim Jagielski # $myfile eq "uno_packages" || 320*b1cdbd2cSJim Jagielski # $myfile eq "lib" || 321*b1cdbd2cSJim Jagielski # $myfile eq "user_tree" ) 322*b1cdbd2cSJim Jagielski # { 323*b1cdbd2cSJim Jagielski # next; 324*b1cdbd2cSJim Jagielski # } 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski if ($myfile ne "." && $myfile ne "..") 327*b1cdbd2cSJim Jagielski { 328*b1cdbd2cSJim Jagielski my $sNewStartDir = appendPath($startdir, $myfile); # neuen Directorystring erstellen 329*b1cdbd2cSJim Jagielski # if ($sNewStartDir =~ "^\/proc" || 330*b1cdbd2cSJim Jagielski # $sNewStartDir =~ "^\/dev" || 331*b1cdbd2cSJim Jagielski # $sNewStartDir =~ "^\/udev" || 332*b1cdbd2cSJim Jagielski # $sNewStartDir =~ "lost+found" ) 333*b1cdbd2cSJim Jagielski # { 334*b1cdbd2cSJim Jagielski # next; 335*b1cdbd2cSJim Jagielski # } 336*b1cdbd2cSJim Jagielski # my $sNewSUserParameter = $sUserParameter . $myfile ."/"; 337*b1cdbd2cSJim Jagielski # do a recursive call 338*b1cdbd2cSJim Jagielski # $nCountFiles++; 339*b1cdbd2cSJim Jagielski my $nFileCount = readdirectory($sNewStartDir, $sUserParameter, $hook); 340*b1cdbd2cSJim Jagielski # workOnDir($sNewDir, $nFileCount); 341*b1cdbd2cSJim Jagielski $nCountFiles += $nFileCount; 342*b1cdbd2cSJim Jagielski 343*b1cdbd2cSJim Jagielski chdir ($startdir); # zurueckwechseln. 344*b1cdbd2cSJim Jagielski cwd(); 345*b1cdbd2cSJim Jagielski } 346*b1cdbd2cSJim Jagielski } 347*b1cdbd2cSJim Jagielski else 348*b1cdbd2cSJim Jagielski { 349*b1cdbd2cSJim Jagielski # File must exist, be a regular file and must not be the $onlyOnFile 350*b1cdbd2cSJim Jagielski if (-f $myfile) 351*b1cdbd2cSJim Jagielski { 352*b1cdbd2cSJim Jagielski # print STDERR " $startdir" . "$myfile\n"; 353*b1cdbd2cSJim Jagielski $nCountFiles++; 354*b1cdbd2cSJim Jagielski # workOnFile($startdir, $myfile, $destdir); 355*b1cdbd2cSJim Jagielski $hook->($startdir, $myfile, $sUserParameter); 356*b1cdbd2cSJim Jagielski } 357*b1cdbd2cSJim Jagielski } 358*b1cdbd2cSJim Jagielski #} 359*b1cdbd2cSJim Jagielski #else 360*b1cdbd2cSJim Jagielski #{ 361*b1cdbd2cSJim Jagielski # print STDERR "linked file: $dir/$myfile\n"; 362*b1cdbd2cSJim Jagielski #} 363*b1cdbd2cSJim Jagielski } 364*b1cdbd2cSJim Jagielski closedir(DIR); 365*b1cdbd2cSJim Jagielski } 366*b1cdbd2cSJim Jagielski else 367*b1cdbd2cSJim Jagielski { 368*b1cdbd2cSJim Jagielski print STDERR "could not open $startdir\n"; 369*b1cdbd2cSJim Jagielski } 370*b1cdbd2cSJim Jagielski return $nCountFiles; 371*b1cdbd2cSJim Jagielski} 372*b1cdbd2cSJim Jagielski 373*b1cdbd2cSJim Jagielskiour $lcl_sSofficeBinPath; 374*b1cdbd2cSJim Jagielskiour $lcl_sSofficeBinName; 375*b1cdbd2cSJim Jagielski 376*b1cdbd2cSJim Jagielskisub searchSofficeBin($$$) 377*b1cdbd2cSJim Jagielski{ 378*b1cdbd2cSJim Jagielski my $currentDir = shift; 379*b1cdbd2cSJim Jagielski my $currentFile = shift; 380*b1cdbd2cSJim Jagielski my $sUserParameter = shift; 381*b1cdbd2cSJim Jagielski 382*b1cdbd2cSJim Jagielski if ($currentFile eq $sUserParameter) 383*b1cdbd2cSJim Jagielski { 384*b1cdbd2cSJim Jagielski my $sSourceFilename; 385*b1cdbd2cSJim Jagielski $sSourceFilename = appendPath($currentDir, $currentFile); 386*b1cdbd2cSJim Jagielski 387*b1cdbd2cSJim Jagielski if ( -e "$sSourceFilename" ) 388*b1cdbd2cSJim Jagielski { 389*b1cdbd2cSJim Jagielski $lcl_sSofficeBinPath = $currentDir; 390*b1cdbd2cSJim Jagielski $lcl_sSofficeBinName = $currentFile; 391*b1cdbd2cSJim Jagielski } 392*b1cdbd2cSJim Jagielski } 393*b1cdbd2cSJim Jagielski} 394*b1cdbd2cSJim Jagielski 395*b1cdbd2cSJim Jagielski# our $lcl_sUnoPkgPath; 396*b1cdbd2cSJim Jagielski# 397*b1cdbd2cSJim Jagielski# sub searchUnoPkgBin($$$) 398*b1cdbd2cSJim Jagielski# { 399*b1cdbd2cSJim Jagielski# my $currentDir = shift; 400*b1cdbd2cSJim Jagielski# my $currentFile = shift; 401*b1cdbd2cSJim Jagielski# my $sUserParameter = shift; 402*b1cdbd2cSJim Jagielski# 403*b1cdbd2cSJim Jagielski# if ($currentFile eq $sUserParameter) 404*b1cdbd2cSJim Jagielski# { 405*b1cdbd2cSJim Jagielski# my $sSourceFilename; 406*b1cdbd2cSJim Jagielski# $sSourceFilename = appendPath($currentDir, $currentFile); 407*b1cdbd2cSJim Jagielski# if ( -e "$sSourceFilename" ) 408*b1cdbd2cSJim Jagielski# { 409*b1cdbd2cSJim Jagielski# $lcl_sUnoPkgPath = $currentDir; 410*b1cdbd2cSJim Jagielski# } 411*b1cdbd2cSJim Jagielski# } 412*b1cdbd2cSJim Jagielski# } 413*b1cdbd2cSJim Jagielski 414*b1cdbd2cSJim Jagielski# our $lcl_sJARPath; 415*b1cdbd2cSJim Jagielski 416*b1cdbd2cSJim Jagielski# sub searchJARFile($$$) 417*b1cdbd2cSJim Jagielski# { 418*b1cdbd2cSJim Jagielski# my $currentDir = shift; 419*b1cdbd2cSJim Jagielski# my $currentFile = shift; 420*b1cdbd2cSJim Jagielski# my $sUserParameter = shift; 421*b1cdbd2cSJim Jagielski# 422*b1cdbd2cSJim Jagielski# if ($currentFile eq $sUserParameter) 423*b1cdbd2cSJim Jagielski# { 424*b1cdbd2cSJim Jagielski# my $sSourceFilename; 425*b1cdbd2cSJim Jagielski# $sSourceFilename = appendPath($currentDir, $currentFile); 426*b1cdbd2cSJim Jagielski# if ( -e "$sSourceFilename" ) 427*b1cdbd2cSJim Jagielski# { 428*b1cdbd2cSJim Jagielski# $lcl_sJARPath = $currentDir; 429*b1cdbd2cSJim Jagielski# } 430*b1cdbd2cSJim Jagielski# } 431*b1cdbd2cSJim Jagielski# } 432*b1cdbd2cSJim Jagielski 433*b1cdbd2cSJim Jagielski# return the PATH, where the file was found 434*b1cdbd2cSJim Jagielski# sub searchForJAR($$) 435*b1cdbd2cSJim Jagielski# { 436*b1cdbd2cSJim Jagielski# my $sPathToInstallOffice = shift; 437*b1cdbd2cSJim Jagielski# my $sJARFileName = shift; 438*b1cdbd2cSJim Jagielski# 439*b1cdbd2cSJim Jagielski# my $sCurrentPath = cwd(); 440*b1cdbd2cSJim Jagielski# 441*b1cdbd2cSJim Jagielski# $lcl_sJARPath = ""; 442*b1cdbd2cSJim Jagielski# readdirectory(${sPathToInstallOffice}, ${sJARFileName}, \&searchJARFile); 443*b1cdbd2cSJim Jagielski# 444*b1cdbd2cSJim Jagielski# chdir $sCurrentPath; 445*b1cdbd2cSJim Jagielski# cwd(); 446*b1cdbd2cSJim Jagielski# 447*b1cdbd2cSJim Jagielski# return $lcl_sJARPath; 448*b1cdbd2cSJim Jagielski# } 449*b1cdbd2cSJim Jagielski 450*b1cdbd2cSJim Jagielski# sub getUnoPkg($) 451*b1cdbd2cSJim Jagielski# { 452*b1cdbd2cSJim Jagielski# my $sPathToInstallOffice = shift; 453*b1cdbd2cSJim Jagielski# 454*b1cdbd2cSJim Jagielski# my $sUnoPkgName = "unopkg.bin"; 455*b1cdbd2cSJim Jagielski# if (isWindowsEnvironment()) 456*b1cdbd2cSJim Jagielski# { 457*b1cdbd2cSJim Jagielski# $sUnoPkgName = "unopkg.exe"; 458*b1cdbd2cSJim Jagielski# } 459*b1cdbd2cSJim Jagielski# 460*b1cdbd2cSJim Jagielski# my $sCurrentPath = cwd(); 461*b1cdbd2cSJim Jagielski# 462*b1cdbd2cSJim Jagielski# $lcl_sUnoPkgPath = ""; 463*b1cdbd2cSJim Jagielski# readdirectory(${sPathToInstallOffice}, ${sUnoPkgName}, \&searchUnoPkgBin); 464*b1cdbd2cSJim Jagielski# 465*b1cdbd2cSJim Jagielski# chdir $sCurrentPath; 466*b1cdbd2cSJim Jagielski# cwd(); 467*b1cdbd2cSJim Jagielski# 468*b1cdbd2cSJim Jagielski# return ($lcl_sUnoPkgPath, $sUnoPkgName); 469*b1cdbd2cSJim Jagielski# } 470*b1cdbd2cSJim Jagielski 471*b1cdbd2cSJim Jagielskisub getSofficeExe($) 472*b1cdbd2cSJim Jagielski{ 473*b1cdbd2cSJim Jagielski my $sPathToOffice = shift; 474*b1cdbd2cSJim Jagielski 475*b1cdbd2cSJim Jagielski my $sSofficeExeName = "soffice"; 476*b1cdbd2cSJim Jagielski if (isWindowsEnvironment()) 477*b1cdbd2cSJim Jagielski { 478*b1cdbd2cSJim Jagielski $sSofficeExeName = "soffice.exe"; 479*b1cdbd2cSJim Jagielski } 480*b1cdbd2cSJim Jagielski 481*b1cdbd2cSJim Jagielski my $sCurrentPath = cwd(); 482*b1cdbd2cSJim Jagielski 483*b1cdbd2cSJim Jagielski $lcl_sSofficeBinPath = ""; 484*b1cdbd2cSJim Jagielski $lcl_sSofficeBinName = ""; 485*b1cdbd2cSJim Jagielski readdirectory(${sPathToOffice}, ${sSofficeExeName}, \&searchSofficeBin); 486*b1cdbd2cSJim Jagielski 487*b1cdbd2cSJim Jagielski chdir $sCurrentPath; 488*b1cdbd2cSJim Jagielski cwd(); 489*b1cdbd2cSJim Jagielski 490*b1cdbd2cSJim Jagielski return ($lcl_sSofficeBinPath, $lcl_sSofficeBinName); 491*b1cdbd2cSJim Jagielski} 492*b1cdbd2cSJim Jagielski 493*b1cdbd2cSJim Jagielski# sub checkOfficeAlreadyInstalled($) 494*b1cdbd2cSJim Jagielski# { 495*b1cdbd2cSJim Jagielski# my $sOfficePath = shift; 496*b1cdbd2cSJim Jagielski# 497*b1cdbd2cSJim Jagielski# my $sCurrentPath = cwd(); 498*b1cdbd2cSJim Jagielski# 499*b1cdbd2cSJim Jagielski# $lcl_sSofficeBinPath = ""; 500*b1cdbd2cSJim Jagielski# my $sOldOfficePath = appendPath($sOfficePath, "program"); 501*b1cdbd2cSJim Jagielski# if ( -d "$sOldOfficePath" ) 502*b1cdbd2cSJim Jagielski# { 503*b1cdbd2cSJim Jagielski# $sOldOfficePath = appendPath($sOldOfficePath, "soffice.bin"); 504*b1cdbd2cSJim Jagielski# if ( -e $sOldOfficePath ) 505*b1cdbd2cSJim Jagielski# { 506*b1cdbd2cSJim Jagielski# return 1; 507*b1cdbd2cSJim Jagielski# } 508*b1cdbd2cSJim Jagielski# } 509*b1cdbd2cSJim Jagielski# else 510*b1cdbd2cSJim Jagielski# { 511*b1cdbd2cSJim Jagielski# if (isWindowsEnvironment()) 512*b1cdbd2cSJim Jagielski# { 513*b1cdbd2cSJim Jagielski# my $sThreeLayerOffice = appendPath($sOfficePath, "Sun"); 514*b1cdbd2cSJim Jagielski# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "StarOffice 9"); 515*b1cdbd2cSJim Jagielski# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "program"); 516*b1cdbd2cSJim Jagielski# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "soffice.bin"); 517*b1cdbd2cSJim Jagielski# 518*b1cdbd2cSJim Jagielski# if ( -e "$sThreeLayerOffice" ) 519*b1cdbd2cSJim Jagielski# { 520*b1cdbd2cSJim Jagielski# return 1; 521*b1cdbd2cSJim Jagielski# } 522*b1cdbd2cSJim Jagielski# } 523*b1cdbd2cSJim Jagielski# else 524*b1cdbd2cSJim Jagielski# { 525*b1cdbd2cSJim Jagielski# my $sThreeLayerOffice = appendPath($sOfficePath, "staroffice9"); 526*b1cdbd2cSJim Jagielski# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "program"); 527*b1cdbd2cSJim Jagielski# $sThreeLayerOffice = appendPath($sThreeLayerOffice, "soffice.bin"); 528*b1cdbd2cSJim Jagielski# if ( -e "$sThreeLayerOffice" ) 529*b1cdbd2cSJim Jagielski# { 530*b1cdbd2cSJim Jagielski# return 1; 531*b1cdbd2cSJim Jagielski# } 532*b1cdbd2cSJim Jagielski# } 533*b1cdbd2cSJim Jagielski# } 534*b1cdbd2cSJim Jagielski# 535*b1cdbd2cSJim Jagielski# # soffice.bin not found in fast path 536*b1cdbd2cSJim Jagielski# readdirectory($sOfficePath, "soffice.bin", \&searchSofficeBin); 537*b1cdbd2cSJim Jagielski# chdir $sCurrentPath; 538*b1cdbd2cSJim Jagielski# cwd(); 539*b1cdbd2cSJim Jagielski# 540*b1cdbd2cSJim Jagielski# if ( $lcl_sSofficeBinPath ne "" ) 541*b1cdbd2cSJim Jagielski# { 542*b1cdbd2cSJim Jagielski# return 1; 543*b1cdbd2cSJim Jagielski# } 544*b1cdbd2cSJim Jagielski# return 0; 545*b1cdbd2cSJim Jagielski# # this is the old check 546*b1cdbd2cSJim Jagielski# # my $sOfficePathCheck = appendPath(${sPathToInstallOffice}, "program"); 547*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "soffice.bin"); 548*b1cdbd2cSJim Jagielski# # if ( -e $sOfficePathCheck ) 549*b1cdbd2cSJim Jagielski# # { 550*b1cdbd2cSJim Jagielski# # return 1; 551*b1cdbd2cSJim Jagielski# # } 552*b1cdbd2cSJim Jagielski# # 553*b1cdbd2cSJim Jagielski# # # check path system of tree layer office 554*b1cdbd2cSJim Jagielski# # if ( isWindowsEnvironment() ) 555*b1cdbd2cSJim Jagielski# # { 556*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath(${sPathToInstallOffice}, "Sun"); 557*b1cdbd2cSJim Jagielski# # if ( ! -e $sOfficePathCheck) 558*b1cdbd2cSJim Jagielski# # { 559*b1cdbd2cSJim Jagielski# # # could be an OpenOffice.org 560*b1cdbd2cSJim Jagielski# # return 0; 561*b1cdbd2cSJim Jagielski# # } 562*b1cdbd2cSJim Jagielski# # else 563*b1cdbd2cSJim Jagielski# # { 564*b1cdbd2cSJim Jagielski# # 565*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "StarOffice 9"); 566*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "program"); 567*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "soffice.bin"); 568*b1cdbd2cSJim Jagielski# # if ( -e $sOfficePathCheck ) 569*b1cdbd2cSJim Jagielski# # { 570*b1cdbd2cSJim Jagielski# # return 1; 571*b1cdbd2cSJim Jagielski# # } 572*b1cdbd2cSJim Jagielski# # print "Error: There exist no Office, maybe an unsupported version?\n"; 573*b1cdbd2cSJim Jagielski# # } 574*b1cdbd2cSJim Jagielski# # } 575*b1cdbd2cSJim Jagielski# # elsif ( isUnixEnvironment() ) 576*b1cdbd2cSJim Jagielski# # { 577*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath(${sPathToInstallOffice}, "staroffice9"); 578*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "staroffice9"); 579*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "program"); 580*b1cdbd2cSJim Jagielski# # $sOfficePathCheck = appendPath($sOfficePathCheck, "soffice.bin"); 581*b1cdbd2cSJim Jagielski# # if ( -e $sOfficePathCheck ) 582*b1cdbd2cSJim Jagielski# # { 583*b1cdbd2cSJim Jagielski# # return 1; 584*b1cdbd2cSJim Jagielski# # } 585*b1cdbd2cSJim Jagielski# # print "Error: There exist no Office, maybe an unsupported version?\n"; 586*b1cdbd2cSJim Jagielski# # } 587*b1cdbd2cSJim Jagielski# # else 588*b1cdbd2cSJim Jagielski# # { 589*b1cdbd2cSJim Jagielski# # print "Error: There exist no Office, maybe an unsupported version?\n"; 590*b1cdbd2cSJim Jagielski# # } 591*b1cdbd2cSJim Jagielski# # return 0; 592*b1cdbd2cSJim Jagielski# } 593*b1cdbd2cSJim Jagielski 594*b1cdbd2cSJim Jagielski1; 595