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