- Warn about directories specified in modules.dat that are not used.
- Eliminated the warnings caused by the change above.
- Minor API files update.
- Minor bug fixes.
diff --git a/tools/winapi_check/modules.pm b/tools/winapi_check/modules.pm
index e1d2cb4..b2130e4 100644
--- a/tools/winapi_check/modules.pm
+++ b/tools/winapi_check/modules.pm
@@ -11,13 +11,13 @@
my $options = \${$self->{OPTIONS}};
my $output = \${$self->{OUTPUT}};
my $spec_files = \%{$self->{SPEC_FILES}};
- my $modules = \%{$self->{MODULES}};
+ my $spec_file2module = \%{$self->{SPEC_FILE2MODULE}};
$$options = shift;
$$output = shift;
my $wine_dir = shift;
my $current_dir = shift;
- my $file_type = shift;
+ my $file_type = shift;
my $module_file = shift;
$module_file =~ s/^\.\///;
@@ -37,7 +37,7 @@
}
if($$options->progress) {
- $$output->progress("$module_file");
+ $$output->progress("modules.dat");
}
my $allowed_dir;
@@ -54,7 +54,7 @@
$spec_file = $1;
if(!-f "$wine_dir/$spec_file") {
- $$output->write("$module_file: $spec_file: file ($spec_file) doesn't exist or is no file\n");
+ $$output->write("modules.dat: $spec_file: file ($spec_file) doesn't exist or is no file\n");
}
if($wine_dir eq ".") {
@@ -70,14 +70,14 @@
$$spec_files{$allowed_dir}{$spec_file}++;
if(!-d "$wine_dir/$allowed_dir") {
- $$output->write("$module_file: $spec_file: directory ($allowed_dir) doesn't exist or is no directory\n");
+ $$output->write("modules.dat: $spec_file: directory ($allowed_dir) doesn't exist or is no directory\n");
}
}
close(IN);
foreach my $spec_file (sort(keys(%all_spec_files))) {
if($all_spec_files{$spec_file} > 0) {
- $$output->write("$module_file: $spec_file: exists but is not specified\n");
+ $$output->write("modules.dat: $spec_file: exists but is not specified\n");
}
}
@@ -87,21 +87,23 @@
sub spec_file_module {
my $self = shift;
- my $modules = \%{$self->{MODULES}};
+ my $spec_file2module = \%{$self->{SPEC_FILE2MODULE}};
+ my $module2spec_file = \%{$self->{MODULE2SPEC_FILE}};
my $spec_file = shift;
$spec_file =~ s/^\.\///;
my $module = shift;
- $$modules{$spec_file}{$module}++;
+ $$spec_file2module{$spec_file}{$module}++;
+ $$module2spec_file{$module}{$spec_file}++;
}
sub is_allowed_module_in_file {
my $self = shift;
my $spec_files = \%{$self->{SPEC_FILES}};
- my $modules = \%{$self->{MODULES}};
+ my $spec_file2module = \%{$self->{SPEC_FILE2MODULE}};
my $module = shift;
my $file = shift;
@@ -111,7 +113,7 @@
$dir =~ s/\/[^\/]*$//;
foreach my $spec_file (sort(keys(%{$$spec_files{$dir}}))) {
- if($$modules{$spec_file}{$module}) {
+ if($$spec_file2module{$spec_file}{$module}) {
return 1;
}
}
@@ -123,7 +125,7 @@
my $self = shift;
my $spec_files = \%{$self->{SPEC_FILES}};
- my $modules = \%{$self->{MODULES}};
+ my $spec_file2module = \%{$self->{SPEC_FILE2MODULE}};
my $file = shift;
$file =~ s/^\.\///;
@@ -133,7 +135,7 @@
my %allowed_modules = ();
foreach my $spec_file (sort(keys(%{$$spec_files{$dir}}))) {
- foreach my $module (sort(keys(%{$$modules{$spec_file}}))) {
+ foreach my $module (sort(keys(%{$$spec_file2module{$spec_file}}))) {
$allowed_modules{$module}++;
}
}
@@ -174,6 +176,40 @@
return sort(keys(%allowed_spec_files));
}
+sub found_module_in_dir {
+ my $self = shift;
+
+ my $module = shift;
+ my $dir = shift;
+
+ my $used_module_dirs = \%{$self->{USED_MODULE_DIRS}};
+
+ $$used_module_dirs{$module}{$dir}++;
+}
+
+sub global_report {
+ my $self = shift;
+
+ my $output = \${$self->{OUTPUT}};
+ my $spec_files = \%{$self->{SPEC_FILES}};
+ my $spec_file2module = \%{$self->{SPEC_FILE2MODULE}};
+ my $used_module_dirs = \%{$self->{USED_MODULE_DIRS}};
+
+ my @messages;
+ foreach my $dir (sort(keys(%$spec_files))) {
+ if($dir eq "") { next; }
+ foreach my $spec_file (sort(keys(%{$$spec_files{$dir}}))) {
+ foreach my $module (sort(keys(%{$$spec_file2module{$spec_file}}))) {
+ if(!$$used_module_dirs{$module}{$dir}) {
+ push @messages, "modules.dat: $spec_file: directory ($dir) is not used\n";
+ }
+ }
+ }
+ }
+
+ foreach my $message (sort(@messages)) {
+ $$output->write($message);
+ }
+}
+
1;
-
-