1*b1cdbd2cSJim Jagielskieval 'exec perl -wS $0 ${1+\"$@\"}'
2*b1cdbd2cSJim Jagielski    if 0;
3*b1cdbd2cSJim Jagielski
4*b1cdbd2cSJim Jagielski#**************************************************************
5*b1cdbd2cSJim Jagielski#
6*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
7*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
8*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
9*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
10*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
11*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
12*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
13*b1cdbd2cSJim Jagielski#
14*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
15*b1cdbd2cSJim Jagielski#
16*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
17*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
18*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
20*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
21*b1cdbd2cSJim Jagielski#  under the License.
22*b1cdbd2cSJim Jagielski#
23*b1cdbd2cSJim Jagielski#**************************************************************
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim JagielskiBEGIN
28*b1cdbd2cSJim Jagielski{
29*b1cdbd2cSJim Jagielski    #       Adding the path of this script file to the include path in the hope
30*b1cdbd2cSJim Jagielski    #       that all used modules can be found in it.
31*b1cdbd2cSJim Jagielski    $0 =~ /^(.*)[\/\\]/;
32*b1cdbd2cSJim Jagielski    push @INC, $1;
33*b1cdbd2cSJim Jagielski    # print "PATH: " . $1 . "\n";
34*b1cdbd2cSJim Jagielski}
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski# my $e;
37*b1cdbd2cSJim Jagielski# foreach $e (keys %ENV)
38*b1cdbd2cSJim Jagielski# {
39*b1cdbd2cSJim Jagielski#     print "$e := $ENV{$e}" . "\n";
40*b1cdbd2cSJim Jagielski# }
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielskiuse strict;
43*b1cdbd2cSJim Jagielskiuse graphical_compare;
44*b1cdbd2cSJim Jagielskiuse ConvwatchHelper;
45*b1cdbd2cSJim Jagielskiuse filehelper;
46*b1cdbd2cSJim Jagielskiuse timehelper;
47*b1cdbd2cSJim Jagielskiuse loghelper;
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielskiuse Cwd;
50*b1cdbd2cSJim Jagielskiuse File::Basename;
51*b1cdbd2cSJim Jagielskiuse Getopt::Long;
52*b1cdbd2cSJim Jagielskiuse English;                  # $OSNAME, ...
53*b1cdbd2cSJim Jagielskiuse File::Path;
54*b1cdbd2cSJim Jagielskiuse Cwd 'chdir';
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielskiour $help;                    # Help option flag
57*b1cdbd2cSJim Jagielskiour $version;                 # Version option flag
58*b1cdbd2cSJim Jagielski# our $test;
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski# our $MAJOR;
61*b1cdbd2cSJim Jagielski# our $MINOR;
62*b1cdbd2cSJim Jagielski# our $cwsname;
63*b1cdbd2cSJim Jagielskiour $pool;
64*b1cdbd2cSJim Jagielskiour $document;
65*b1cdbd2cSJim Jagielskiour $creatortype;
66*b1cdbd2cSJim Jagielskiour $prepareonly = 0;
67*b1cdbd2cSJim Jagielskiour $force;
68*b1cdbd2cSJim Jagielskiour $verbose = 0;
69*b1cdbd2cSJim Jagielskiour $show = 0;
70*b1cdbd2cSJim Jagielskiour $connectionstring;
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski# Prototypes
73*b1cdbd2cSJim Jagielskisub print_usage(*);
74*b1cdbd2cSJim Jagielskisub prepare();
75*b1cdbd2cSJim Jagielskisub CompareFiles($$);
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski# flush STDOUT
78*b1cdbd2cSJim Jagielski# my $old_handle = select (STDOUT); # "select" STDOUT and save # previously selected handle
79*b1cdbd2cSJim Jagielski# $| = 1; # perform flush after each write to STDOUT
80*b1cdbd2cSJim Jagielski# select ($old_handle); # restore previously selected handle
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski$OUTPUT_AUTOFLUSH=1; # works only if use English is used.
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielskiour $version_info = 'compare.pl';
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim JagielskiGetOptions(
87*b1cdbd2cSJim Jagielski#            "MAJOR=s"       => \$MAJOR,
88*b1cdbd2cSJim Jagielski#            "MINOR=s"       => \$MINOR,
89*b1cdbd2cSJim Jagielski#            "cwsname=s"     => \$cwsname,
90*b1cdbd2cSJim Jagielski           "pool=s"        => \$pool,
91*b1cdbd2cSJim Jagielski           "document=s"    => \$document,
92*b1cdbd2cSJim Jagielski           "creatortype=s" => \$creatortype,
93*b1cdbd2cSJim Jagielski           "prepareonly=s" => \$prepareonly,
94*b1cdbd2cSJim Jagielski           "connectionstring=s" => \$connectionstring,
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski           "force"         => \$force,
97*b1cdbd2cSJim Jagielski           "verbose"       => \$verbose,
98*b1cdbd2cSJim Jagielski           "show"          => \$show,
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski#           "test"          => \$test,
101*b1cdbd2cSJim Jagielski           "help"          => \$help,
102*b1cdbd2cSJim Jagielski           "version"       => \$version
103*b1cdbd2cSJim Jagielski           );
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielskiif ($help)
106*b1cdbd2cSJim Jagielski{
107*b1cdbd2cSJim Jagielski    print_usage(*STDOUT);
108*b1cdbd2cSJim Jagielski    exit(0);
109*b1cdbd2cSJim Jagielski}
110*b1cdbd2cSJim Jagielski# Check for version option
111*b1cdbd2cSJim Jagielskiif ($version)
112*b1cdbd2cSJim Jagielski{
113*b1cdbd2cSJim Jagielski    print STDERR "$version_info\n";
114*b1cdbd2cSJim Jagielski    exit(0);
115*b1cdbd2cSJim Jagielski}
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielskiif ($prepareonly)
118*b1cdbd2cSJim Jagielski{
119*b1cdbd2cSJim Jagielski    $force=1;
120*b1cdbd2cSJim Jagielski}
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielskiprepare();
123*b1cdbd2cSJim Jagielskiif ($connectionstring)
124*b1cdbd2cSJim Jagielski{
125*b1cdbd2cSJim Jagielski    setConnectionString($connectionstring);
126*b1cdbd2cSJim Jagielski}
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielskimy $sDocumentPool = appendPath(getProjectRoot(), "document-pool");
129*b1cdbd2cSJim Jagielski# print "ProjectRoot: " . getProjectRoot() . "\n";
130*b1cdbd2cSJim Jagielskiif ($ENV{DOCUMENTPOOL})
131*b1cdbd2cSJim Jagielski{
132*b1cdbd2cSJim Jagielski    if ( -d $ENV{DOCUMENTPOOL})
133*b1cdbd2cSJim Jagielski    {
134*b1cdbd2cSJim Jagielski        print "overwrite default Documentpool: '$sDocumentPool'\n";
135*b1cdbd2cSJim Jagielski        print "       with \$ENV{DOCUMENTPOOL}: $ENV{DOCUMENTPOOL}\n";
136*b1cdbd2cSJim Jagielski        $sDocumentPool = $ENV{DOCUMENTPOOL};
137*b1cdbd2cSJim Jagielski    }
138*b1cdbd2cSJim Jagielski    else
139*b1cdbd2cSJim Jagielski    {
140*b1cdbd2cSJim Jagielski        print "Given \$DOCUMENTPOOL doesn't exist.\n";
141*b1cdbd2cSJim Jagielski    }
142*b1cdbd2cSJim Jagielski}
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielskimy $err = 0;
145*b1cdbd2cSJim Jagielskimy $nCompareTime = getTime();
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski# if we want to check one file, give -pool and -document
148*b1cdbd2cSJim Jagielski# if we want to check the whole pool, give -pool
149*b1cdbd2cSJim Jagielski# if we want to check all, call without parameters
150*b1cdbd2cSJim Jagielskiif ($pool)
151*b1cdbd2cSJim Jagielski{
152*b1cdbd2cSJim Jagielski    if ($document)
153*b1cdbd2cSJim Jagielski    {
154*b1cdbd2cSJim Jagielski        $err = SingleDocumentCompare( $sDocumentPool,
155*b1cdbd2cSJim Jagielski                                      $pool,
156*b1cdbd2cSJim Jagielski                                      $document,
157*b1cdbd2cSJim Jagielski                                      $creatortype,
158*b1cdbd2cSJim Jagielski                                      $prepareonly,
159*b1cdbd2cSJim Jagielski                                      $show
160*b1cdbd2cSJim Jagielski                                     );
161*b1cdbd2cSJim Jagielski    }
162*b1cdbd2cSJim Jagielski    else
163*b1cdbd2cSJim Jagielski    {
164*b1cdbd2cSJim Jagielski        $err = CompareFiles($sDocumentPool, $pool);
165*b1cdbd2cSJim Jagielski    }
166*b1cdbd2cSJim Jagielski}
167*b1cdbd2cSJim Jagielskielse
168*b1cdbd2cSJim Jagielski{
169*b1cdbd2cSJim Jagielski    local *DIR;
170*b1cdbd2cSJim Jagielski    if (opendir (DIR, $sDocumentPool))           # Directory oeffnen
171*b1cdbd2cSJim Jagielski    {
172*b1cdbd2cSJim Jagielski        my $myfile;
173*b1cdbd2cSJim Jagielski        while ($myfile = readdir(DIR))
174*b1cdbd2cSJim Jagielski        {                                        # ein filename holen
175*b1cdbd2cSJim Jagielski            if ($myfile eq "." ||
176*b1cdbd2cSJim Jagielski                $myfile eq "..")
177*b1cdbd2cSJim Jagielski            {
178*b1cdbd2cSJim Jagielski                next;
179*b1cdbd2cSJim Jagielski            }
180*b1cdbd2cSJim Jagielski            my $sDocumentPath = appendPath($sDocumentPool, $myfile);
181*b1cdbd2cSJim Jagielski            if ( -d $sDocumentPath )
182*b1cdbd2cSJim Jagielski            {
183*b1cdbd2cSJim Jagielski                $err += CompareFiles($sDocumentPool, $myfile);
184*b1cdbd2cSJim Jagielski            }
185*b1cdbd2cSJim Jagielski            elsif ( -f $sDocumentPath )
186*b1cdbd2cSJim Jagielski            {
187*b1cdbd2cSJim Jagielski                print "Warning: the file '$myfile' will not compared.\n";
188*b1cdbd2cSJim Jagielski            }
189*b1cdbd2cSJim Jagielski        }
190*b1cdbd2cSJim Jagielski        closedir(DIR);
191*b1cdbd2cSJim Jagielski    }
192*b1cdbd2cSJim Jagielski    # my $sPool = "eis-chart";
193*b1cdbd2cSJim Jagielski    # $err += CompareFiles($sDocumentPool, "eis-chart");
194*b1cdbd2cSJim Jagielski    # $err += CompareFiles($sDocumentPool, "eis-impress");
195*b1cdbd2cSJim Jagielski    # $err += CompareFiles($sDocumentPool, "eis-writer");
196*b1cdbd2cSJim Jagielski    # $err += CompareFiles($sDocumentPool, "eis-calc");
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski}
199*b1cdbd2cSJim Jagielski
200*b1cdbd2cSJim JagielskiprintTime(endTime($nCompareTime));
201*b1cdbd2cSJim Jagielskiexit ($err);
202*b1cdbd2cSJim Jagielski
203*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielskisub CompareFiles($$)
206*b1cdbd2cSJim Jagielski{
207*b1cdbd2cSJim Jagielski    my $sDocumentPath = shift;
208*b1cdbd2cSJim Jagielski    my $sPool = shift;
209*b1cdbd2cSJim Jagielski    my %aFailedHash;
210*b1cdbd2cSJim Jagielski    my $startdir = appendPath($sDocumentPath, $sPool);
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski    local *DIR;
213*b1cdbd2cSJim Jagielski    if (opendir (DIR, $startdir))           # Directory oeffnen
214*b1cdbd2cSJim Jagielski    {
215*b1cdbd2cSJim Jagielski        my $myfile;
216*b1cdbd2cSJim Jagielski        while ($myfile = readdir(DIR))
217*b1cdbd2cSJim Jagielski        {                                  # ein filename holen
218*b1cdbd2cSJim Jagielski            if ($myfile eq "knownissues.xcl")
219*b1cdbd2cSJim Jagielski            {
220*b1cdbd2cSJim Jagielski                next;
221*b1cdbd2cSJim Jagielski            }
222*b1cdbd2cSJim Jagielski            my $sAbsoluteFile = appendPath($startdir, $myfile);
223*b1cdbd2cSJim Jagielski            if (-f $sAbsoluteFile)
224*b1cdbd2cSJim Jagielski            {
225*b1cdbd2cSJim Jagielski                my $nIssue;
226*b1cdbd2cSJim Jagielski                my $sIssueText;
227*b1cdbd2cSJim Jagielski                ($nIssue, $sIssueText) = checkForKnownIssue($startdir, $myfile);
228*b1cdbd2cSJim Jagielski                if ($nIssue == 0)
229*b1cdbd2cSJim Jagielski                {
230*b1cdbd2cSJim Jagielski                    $err = SingleDocumentCompare(
231*b1cdbd2cSJim Jagielski                                             # "/net/so-gfxcmp-documents.germany.sun.com/export/gfxcmp/document-pool", # $documentpoolpath,
232*b1cdbd2cSJim Jagielski                                             $sDocumentPool,
233*b1cdbd2cSJim Jagielski                                             $sPool,                  # $documentpool,
234*b1cdbd2cSJim Jagielski                                             $myfile,                 # $documentname);
235*b1cdbd2cSJim Jagielski                                             $creatortype,            # $destinationcreatortype,
236*b1cdbd2cSJim Jagielski                                             $prepareonly,
237*b1cdbd2cSJim Jagielski                                             $show
238*b1cdbd2cSJim Jagielski                                             );
239*b1cdbd2cSJim Jagielski                    $aFailedHash{$myfile} = $err;
240*b1cdbd2cSJim Jagielski                }
241*b1cdbd2cSJim Jagielski                else
242*b1cdbd2cSJim Jagielski                {
243*b1cdbd2cSJim Jagielski                    print "$myfile [KNOWN ISSUE: #$sIssueText#]\n";
244*b1cdbd2cSJim Jagielski                }
245*b1cdbd2cSJim Jagielski            }
246*b1cdbd2cSJim Jagielski        }
247*b1cdbd2cSJim Jagielski        closedir(DIR);
248*b1cdbd2cSJim Jagielski    }
249*b1cdbd2cSJim Jagielski
250*b1cdbd2cSJim Jagielski    print "***** State for graphical compare of pool: '$sPool' ******\n";
251*b1cdbd2cSJim Jagielski    my $nErrorCount = 0;
252*b1cdbd2cSJim Jagielski    my $file;
253*b1cdbd2cSJim Jagielski    foreach $file (keys %aFailedHash)
254*b1cdbd2cSJim Jagielski    {
255*b1cdbd2cSJim Jagielski        if ($aFailedHash{$file} != 0)
256*b1cdbd2cSJim Jagielski        {
257*b1cdbd2cSJim Jagielski            print "Failed: $file\n";
258*b1cdbd2cSJim Jagielski            $nErrorCount++;
259*b1cdbd2cSJim Jagielski        }
260*b1cdbd2cSJim Jagielski    }
261*b1cdbd2cSJim Jagielski    print "Whole unit: ";
262*b1cdbd2cSJim Jagielski    if ($nErrorCount > 0)
263*b1cdbd2cSJim Jagielski    {
264*b1cdbd2cSJim Jagielski        print "PASSED.FAILED\n";
265*b1cdbd2cSJim Jagielski    }
266*b1cdbd2cSJim Jagielski    else
267*b1cdbd2cSJim Jagielski    {
268*b1cdbd2cSJim Jagielski        print "PASSED.OK\n";
269*b1cdbd2cSJim Jagielski    }
270*b1cdbd2cSJim Jagielski    print "************************************************************\n";
271*b1cdbd2cSJim Jagielski    return $nErrorCount;
272*b1cdbd2cSJim Jagielski}
273*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------
274*b1cdbd2cSJim Jagielski# return issue number if file exists in knownissues.xcl file
275*b1cdbd2cSJim Jagielskisub checkForKnownIssue($$)
276*b1cdbd2cSJim Jagielski{
277*b1cdbd2cSJim Jagielski    my $startdir = shift;
278*b1cdbd2cSJim Jagielski    my $myfile = shift;
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski    if ($force)
281*b1cdbd2cSJim Jagielski    {
282*b1cdbd2cSJim Jagielski        return 0,"";
283*b1cdbd2cSJim Jagielski    }
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski    my $sKnownIssueFile = appendPath($startdir, "knownissues.xcl");
286*b1cdbd2cSJim Jagielski    my $sIssueText = "unknown";
287*b1cdbd2cSJim Jagielski    local *ISSUES;
288*b1cdbd2cSJim Jagielski    my $nIssue = 0;
289*b1cdbd2cSJim Jagielski    my $sCurrentSection;
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski    if (open(ISSUES, $sKnownIssueFile))
292*b1cdbd2cSJim Jagielski    {
293*b1cdbd2cSJim Jagielski        my $line;
294*b1cdbd2cSJim Jagielski        while ($line = <ISSUES>)
295*b1cdbd2cSJim Jagielski        {
296*b1cdbd2cSJim Jagielski            chomp($line);
297*b1cdbd2cSJim Jagielski            if ($line =~ /\[(.*)\]/ )
298*b1cdbd2cSJim Jagielski            {
299*b1cdbd2cSJim Jagielski                $sCurrentSection = $1;
300*b1cdbd2cSJim Jagielski                next;
301*b1cdbd2cSJim Jagielski            }
302*b1cdbd2cSJim Jagielski            if ($sCurrentSection eq $creatortype)
303*b1cdbd2cSJim Jagielski            {
304*b1cdbd2cSJim Jagielski                if ($line =~ /\#\#\# (.*) \#\#\#/ )
305*b1cdbd2cSJim Jagielski                {
306*b1cdbd2cSJim Jagielski                    $sIssueText = $1;
307*b1cdbd2cSJim Jagielski                }
308*b1cdbd2cSJim Jagielski                if ($line =~ /^${myfile}$/ )
309*b1cdbd2cSJim Jagielski                {
310*b1cdbd2cSJim Jagielski                    $nIssue = 1;
311*b1cdbd2cSJim Jagielski                    last;
312*b1cdbd2cSJim Jagielski                }
313*b1cdbd2cSJim Jagielski            }
314*b1cdbd2cSJim Jagielski        }
315*b1cdbd2cSJim Jagielski        close(ISSUES);
316*b1cdbd2cSJim Jagielski    }
317*b1cdbd2cSJim Jagielski    return $nIssue, $sIssueText;
318*b1cdbd2cSJim Jagielski}
319*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------
320*b1cdbd2cSJim Jagielskisub prepare()
321*b1cdbd2cSJim Jagielski{
322*b1cdbd2cSJim Jagielski    # directory structure:
323*b1cdbd2cSJim Jagielski    # documents will be found in
324*b1cdbd2cSJim Jagielski    # ../document-pool/eis-tests
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski    # references will be found in
327*b1cdbd2cSJim Jagielski    # ../references/unxlngi/eis-tests
328*b1cdbd2cSJim Jagielski    # ../references/wntmsci/eis-tests
329*b1cdbd2cSJim Jagielski
330*b1cdbd2cSJim Jagielski    # output goes to
331*b1cdbd2cSJim Jagielski    # ../unxlngi6.pro/misc
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski    if ($verbose)
334*b1cdbd2cSJim Jagielski    {
335*b1cdbd2cSJim Jagielski        setVerbose();
336*b1cdbd2cSJim Jagielski    }
337*b1cdbd2cSJim Jagielski
338*b1cdbd2cSJim Jagielski    # TEST
339*b1cdbd2cSJim Jagielski    if (!$ENV{INPATH})
340*b1cdbd2cSJim Jagielski    {
341*b1cdbd2cSJim Jagielski        if ($OSNAME eq "linux")
342*b1cdbd2cSJim Jagielski        {
343*b1cdbd2cSJim Jagielski            # just for debug
344*b1cdbd2cSJim Jagielski            setINPATH("unxlngi6.pro");
345*b1cdbd2cSJim Jagielski        }
346*b1cdbd2cSJim Jagielski    }
347*b1cdbd2cSJim Jagielski    else
348*b1cdbd2cSJim Jagielski    {
349*b1cdbd2cSJim Jagielski        setINPATH($ENV{INPATH});
350*b1cdbd2cSJim Jagielski    }
351*b1cdbd2cSJim Jagielski
352*b1cdbd2cSJim Jagielski    if (! $creatortype)
353*b1cdbd2cSJim Jagielski    {
354*b1cdbd2cSJim Jagielski        $creatortype= "ps";
355*b1cdbd2cSJim Jagielski    }
356*b1cdbd2cSJim Jagielski
357*b1cdbd2cSJim Jagielski    my $cwd = getcwd();
358*b1cdbd2cSJim Jagielski    print "Current Directory: $cwd\n" if ($verbose);
359*b1cdbd2cSJim Jagielski    my $sProjectBase;
360*b1cdbd2cSJim Jagielski    if ($ENV{PRJ})
361*b1cdbd2cSJim Jagielski    {
362*b1cdbd2cSJim Jagielski        # print "cwd:=$cwd\n";
363*b1cdbd2cSJim Jagielski        # print "PRJ:=$ENV{PRJ}\n";
364*b1cdbd2cSJim Jagielski        $sProjectBase = appendPath($cwd, $ENV{PRJ});
365*b1cdbd2cSJim Jagielski    }
366*b1cdbd2cSJim Jagielski    else
367*b1cdbd2cSJim Jagielski    {
368*b1cdbd2cSJim Jagielski        $sProjectBase = dirname($cwd);
369*b1cdbd2cSJim Jagielski    }
370*b1cdbd2cSJim Jagielski    if ($OSNAME eq "cygwin")
371*b1cdbd2cSJim Jagielski    {
372*b1cdbd2cSJim Jagielski        $sProjectBase = `cygpath -w $sProjectBase`;
373*b1cdbd2cSJim Jagielski        chomp($sProjectBase);
374*b1cdbd2cSJim Jagielski        $sProjectBase = unixpath($sProjectBase);
375*b1cdbd2cSJim Jagielski        # print "cygwin patch \$sProjectBase := $sProjectBase\n";
376*b1cdbd2cSJim Jagielski    }
377*b1cdbd2cSJim Jagielski    # print "Project base path: $sProjectBase\n";
378*b1cdbd2cSJim Jagielski    setProjectRoot($sProjectBase);
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski
381*b1cdbd2cSJim Jagielski    # TEST TEST TEST
382*b1cdbd2cSJim Jagielski    # exit (0);
383*b1cdbd2cSJim Jagielski}
384*b1cdbd2cSJim Jagielski# ------------------------------------------------------------------------------
385*b1cdbd2cSJim Jagielskisub print_usage(*)
386*b1cdbd2cSJim Jagielski{
387*b1cdbd2cSJim Jagielski    local *HANDLE = $_[0];
388*b1cdbd2cSJim Jagielski    my $tool_name = basename($0);
389*b1cdbd2cSJim Jagielski
390*b1cdbd2cSJim Jagielski    print(HANDLE <<END_OF_USAGE);
391*b1cdbd2cSJim Jagielski
392*b1cdbd2cSJim JagielskiUsage: $tool_name [OPTIONS]
393*b1cdbd2cSJim Jagielski
394*b1cdbd2cSJim Jagielski    -pool                    Give pool name out of document-pool directory.
395*b1cdbd2cSJim Jagielski                             But all documents list in knownissues.xcl will not check.
396*b1cdbd2cSJim Jagielski    -document                Give a single document to test, the known issue list will ignored.
397*b1cdbd2cSJim Jagielski    -creatortype=s           s:ps  create postscript files via print to file.
398*b1cdbd2cSJim Jagielski                             s:pdf create PDF file via export to pdf.
399*b1cdbd2cSJim Jagielski    -h, --help               Print this help, then exit
400*b1cdbd2cSJim Jagielski    -v, --version            Print version number, then exit
401*b1cdbd2cSJim Jagielski
402*b1cdbd2cSJim JagielskiEND_OF_USAGE
403*b1cdbd2cSJim Jagielski;
404*b1cdbd2cSJim Jagielski}
405