On Friday 16 January 2004 09:13, Dimitrie O. Paun wrote:
> We can do that even now, by turning the problem inside out:
> -- teach winapi_check the simple find trick
> -- provide a (manually maintained) list of exceptions
OK, here's a patch that does that. Afterwards do:
cvs rm -f tools/winapi_check/modules.dat
-Hans
Changelog:
Get rid of the static module list.
Index: tools/winapi_check/modules.pm
===================================================================
RCS file: /home/wine/wine/tools/winapi_check/modules.pm,v
retrieving revision 1.20
diff -u -r1.20 modules.pm
--- tools/winapi_check/modules.pm 27 Nov 2002 20:11:10 -0000 1.20
+++ tools/winapi_check/modules.pm 17 Jan 2004 21:26:56 -0000
@@ -95,54 +95,35 @@
my $self = {};
bless ($self, $class);
- my $spec_file_found = $self->read_module_file();
+ my $spec_file_found = $self->find_spec_files();
$self->read_spec_files($spec_file_found);
return $self;
}
-sub read_module_file {
+sub find_spec_files {
my $self = shift;
my $dir2spec_file = \%{$self->{DIR2SPEC_FILE}};
my $spec_file2dir = \%{$self->{SPEC_FILE2DIR}};
- my $module_file = "$winapi_check_dir/modules.dat";
-
- $output->progress("modules.dat");
+ $output->progress("modules");
my $spec_file_found = {};
my $allowed_dir;
my $spec_file;
- open(IN, "< $module_file");
- local $/ = "\n";
- while(<IN>) {
- s/^\s*?(.*?)\s*$/$1/; # remove whitespace at begining and end of line
- s/^(.*?)\s*#.*$/$1/; # remove comments
- /^$/ && next; # skip empty lines
-
- if(/^%\s+(.*?)$/) {
- $spec_file = $1;
+ my @spec_files = <{dlls/*/*.spec,dlls/*/*/*.spec}>;
- if(!-f "$wine_dir/$spec_file") {
- $output->write("modules.dat: $spec_file: file ($spec_file) doesn't exist or is no file\n");
- }
+ foreach $spec_file (@spec_files) {
+ $spec_file =~ /(.*)\/.*\.spec/;
- $$spec_file_found{$spec_file}++;
- $$spec_file2dir{$spec_file} = {};
- next;
- } else {
- $allowed_dir = $1;
- $$spec_file2dir{$spec_file}{$allowed_dir}++;
- }
- $$dir2spec_file{$allowed_dir}{$spec_file}++;
+ $allowed_dir = $1;
- if(!-d "$wine_dir/$allowed_dir") {
- $output->write("modules.dat: $spec_file: directory ($allowed_dir) doesn't exist or is no directory\n");
- }
+ $$spec_file_found{$spec_file}++;
+ $$spec_file2dir{$spec_file}{$allowed_dir}++;
+ $$dir2spec_file{$allowed_dir}{$spec_file}++;
}
- close(IN);
return $spec_file_found;
}
@@ -192,7 +173,7 @@
foreach my $spec_file (@spec_files) {
if(!$$spec_file_found{$spec_file} && $spec_file !~ m%tests/[^/]+$%) {
- $output->write("modules.dat: $spec_file: exists but is not specified\n");
+ $output->write("modules: $spec_file: exists but is not specified\n");
}
}
}
@@ -359,7 +340,7 @@
foreach my $module ($self->all_modules) {
if(!$$used_module_dirs{$module}{$dir}) {
my $spec_file = $$module2spec_file{$module};
- push @messages, "modules.dat: $spec_file: directory ($dir) is not used\n";
+ push @messages, "modules: $spec_file: directory ($dir) is not used\n";
}
}
}
Index: tools/winapi_check/winapi_global.pm
===================================================================
RCS file: /home/wine/wine/tools/winapi_check/winapi_global.pm,v
retrieving revision 1.13
diff -u -r1.13 winapi_global.pm
--- tools/winapi_check/winapi_global.pm 8 Aug 2003 21:04:17 -0000 1.13
+++ tools/winapi_check/winapi_global.pm 17 Jan 2004 21:27:05 -0000
@@ -41,9 +41,11 @@
next if $internal_name =~ /\./;
my $function = $functions->{$internal_name};
if(!defined($function) && !$nativeapi->is_function($internal_name) &&
- !($module eq "user" && $internal_name =~
- /^(?:GlobalAddAtomA|GlobalDeleteAtom|GlobalFindAtomA|
- GlobalGetAtomNameA|lstrcmpiA)$/x))
+ # FIXME: remove these when DLL separation is complete
+ !($module eq "advapi" || $module eq "gdi32" || $module eq "kernel32" ||
+ $module eq "user.exe" || $module eq "user32" || $module eq "msvcrt" ||
+ $module eq "keyboard.drv" || $module eq "gdi.exe" || $module eq "ddeml" ||
+ $module eq "krnl386.exe" || $module eq "dispdib" || $module eq "ntdll"))
{
$output->write("*.c: $module: $internal_name: " .
"function declared but not implemented or declared external\n");