Index: source/tools/xmlvalidator/validate.pl =================================================================== --- source/tools/xmlvalidator/validate.pl +++ source/tools/xmlvalidator/validate.pl @@ -8,34 +8,38 @@ my $vfsroot = '../../../binaries/data/mods'; -sub vfs_to_physical -{ - my ($vfspath) = @_; - my $fn = "$vfsroot/public/$vfspath"; - return $fn; -} +my @mods = ("mod", "public"); +my @modsreverse = reverse @mods; -sub vfs_to_relative_to_mods +sub vfs_to_physical { my ($vfspath) = @_; - my $fn = "public/$vfspath"; - return $fn; + foreach my $mod (@modsreverse) + { + my $fn = "$vfsroot/$mod/$vfspath"; + return $fn if (-e $fn); + } } sub find_files { + my ($vfspath, $extn) = @_; my @files; - my $find_process = sub { - return $File::Find::prune = 1 if $_ eq '.svn'; - my $n = $File::Find::name; - return if /~$/; - return unless -f $_; - return unless /\.($extn)$/; - $n =~ s~\Q$vfsroot\E/public/~~; - push @files, $n; - }; - find({ wanted => $find_process }, "$vfsroot/public/$vfspath"); + + foreach my $mod (@modsreverse) + { + my $find_process = sub { + return $File::Find::prune = 1 if $_ eq '.svn'; + my $n = $File::Find::name; + return if /~$/; + return unless -f $_; + return unless /\.($extn)$/; + $n =~ s~\Q$vfsroot/$mod\E/~~; + push @files, $n if !grep {$_ eq $n} @files; + }; + find({ wanted => $find_process }, "$vfsroot/$mod/$vfspath") if (-e "$vfsroot/$mod/$vfspath"); + } return @files; }