2 eval 'exec perl -wS $0 ${1+"$@"}'
4 #*************************************************************************
6 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8 # Copyright 2008 by Sun Microsystems, Inc.
10 # OpenOffice.org - a multi-platform office productivity suite
12 # $RCSfile: checkxml.pl,v $
16 # This file is part of OpenOffice.org.
18 # OpenOffice.org is free software: you can redistribute it and/or modify
19 # it under the terms of the GNU Lesser General Public License version 3
20 # only, as published by the Free Software Foundation.
22 # OpenOffice.org is distributed in the hope that it will be useful,
23 # but WITHOUT ANY WARRANTY; without even the implied warranty of
24 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 # GNU Lesser General Public License version 3 for more details
26 # (a copy is included in the LICENSE file that accompanied this code).
28 # You should have received a copy of the GNU Lesser General Public License
29 # version 3 along with OpenOffice.org. If not, see
30 # <http://www.openoffice.org/license.html>
31 # for a copy of the LGPLv3 License.
33 #*************************************************************************
36 # check_xml.pl - check xml,xcs,xcu files size, NULL character
42 my $path = $ENV{'SOLARVERSION'} . '/' . $ENV{'INPATH'} . '/xml' . "$ENV{'UPDMINOREXT'}/";
43 my $pck_path = $ENV{'SOLARVERSION'} . '/' . $ENV{'INPATH'} . '/pck' . "$ENV{'UPDMINOREXT'}/";
46 #Path of the directory from which the recursion starts (must have ending '/').
47 print "Checking:$path\n";
48 # Initiate the recursion
50 $err += &check_registry_zips
($pck_path);
53 print "Error: $err damaged files encountered\n";
61 #### SUBROUTINES SECTION ####
63 # Function that recurses through the directory tree calling FileFunction on all files
66 my $file; #Variable for a file
68 opendir (DIRECTORY
, $path) or
69 die "Can't read $path\n";
70 my @all_files = grep (!/^\.\.?$/, readdir (DIRECTORY
)); #Read all the files except for '.' and '..'
73 foreach $file (@all_files) {
74 if (-d
"$path$file/") {
75 &RecurseDirs
("$path$file/");
82 ############################################################################
83 sub check
#04.02.2005 13:40
84 ############################################################################
88 print "$path$file\n" if ((-e
"$path$file") && $is_debug);
89 return if ( $file !~ /.+\.(xcu|xml|xcs)/ ); #check xml and xcu files only
90 if ( -z
"$path$file" ) {
91 print "Error: $path$file 0 Bytes!\n";
95 open( FH
, "<$path$file" );
96 while ( $line = <FH
> ) {
98 if ( $line =~ /\000+/ ) {
99 print "Error: NULL characters detected in $path$file\n";
107 ############################################################################
108 sub check_registry_zips
#20.04.2005 18:47
109 ############################################################################
114 opendir (DIRECTORY
, $path) or
115 die "Can't read $path\n";
116 my @all_files = grep (!/^\.\.?$/, readdir (DIRECTORY
)); #Read all the files except for '.' and '..'
117 closedir (DIRECTORY
);
118 foreach $file (@all_files) {
119 if ( $file =~ /registry_.+\.zip$/ ) {
120 $commandargs="$path$file";
121 # Cygwin's perl needs escaped \ in system() and open( COMMAND ... )
122 if ( "$^O" eq "cygwin" ) { $commandargs =~ s/\\/\\\\/g; }
123 print "file=$commandargs\n" if ($is_debug);
124 open(UNZIP
,"$unzipexe -l $commandargs |");
126 while ( $line = <UNZIP
> ) {
128 my @param = split(" ",$line);
129 if ( $param[0] =~ /\d+/ ) {
130 if ( $param[0] == 0 && $param[3] =~ /.+\.xcu$/)
137 print "Error: $commandargs contains files with 0 byte size\n";
144 } ##check_registry_zips