update dev300-m58
[ooovba.git] / postprocess / checkxml / checkxml.pl
blob3ab8091c9e249f7f8c1120c89db8385c71c06bdb
2 eval 'exec perl -wS $0 ${1+"$@"}'
3 if 0;
4 #*************************************************************************
6 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7 #
8 # Copyright 2008 by Sun Microsystems, Inc.
10 # OpenOffice.org - a multi-platform office productivity suite
12 # $RCSfile: checkxml.pl,v $
14 # $Revision: 1.8 $
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
40 $is_debug=0;
41 my $err = 0;
42 my $path = $ENV{'SOLARVERSION'} . '/' . $ENV{'INPATH'} . '/xml' . "$ENV{'UPDMINOREXT'}/";
43 my $pck_path = $ENV{'SOLARVERSION'} . '/' . $ENV{'INPATH'} . '/pck' . "$ENV{'UPDMINOREXT'}/";
44 my $unzipexe="unzip";
46 #Path of the directory from which the recursion starts (must have ending '/').
47 print "Checking:$path\n";
48 # Initiate the recursion
49 &RecurseDirs($path);
50 $err += &check_registry_zips($pck_path);
51 if ($err > 0)
53 print "Error: $err damaged files encountered\n";
54 exit(1); # stop dmake
55 } else
57 print "ok.\n";
59 exit;
61 #### SUBROUTINES SECTION ####
63 # Function that recurses through the directory tree calling FileFunction on all files
64 sub RecurseDirs {
65 my ($path) = @_;
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 '..'
71 closedir (DIRECTORY);
73 foreach $file (@all_files) {
74 if (-d "$path$file/") {
75 &RecurseDirs("$path$file/");
76 } else {
77 &check($path, $file);
82 ############################################################################
83 sub check #04.02.2005 13:40
84 ############################################################################
86 my $path = shift;
87 my $file = shift;
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";
92 $err++;
93 } else
95 open( FH, "<$path$file" );
96 while ( $line = <FH> ) {
97 #print $line;
98 if ( $line =~ /\000+/ ) {
99 print "Error: NULL characters detected in $path$file\n";
100 $err++;
103 close(FH);
107 ############################################################################
108 sub check_registry_zips #20.04.2005 18:47
109 ############################################################################
111 my $path = shift;
112 my $error = 0;
113 my $commandargs;
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 |");
125 my $ferror = 0;
126 while ( $line = <UNZIP> ) {
127 #print $line;
128 my @param = split(" ",$line);
129 if ( $param[0] =~ /\d+/ ) {
130 if ( $param[0] == 0 && $param[3] =~ /.+\.xcu$/)
132 $error++; $ferror=1;
136 if ( $ferror ) {
137 print "Error: $commandargs contains files with 0 byte size\n";
139 close(UNZIP);
143 ($error);
144 } ##check_registry_zips