- Check for missing modules in modules.dat.
- Minor bug fixes

diff --git a/tools/winapi_check/modules.pm b/tools/winapi_check/modules.pm
index f2a4f33..2018533 100644
--- a/tools/winapi_check/modules.pm
+++ b/tools/winapi_check/modules.pm
@@ -17,10 +17,25 @@
     $$output = shift;
     my $wine_dir = shift;
     my $current_dir = shift;
+    my $file_type = shift;
     my $module_file = shift;
 
     $module_file =~ s/^\.\///;
 
+    my @all_spec_files = map {
+	s/^.\/(.*)$/$1/;
+	if(&$file_type($_) eq "library") {
+	    $_;
+	} else {
+	    ();
+	}
+    } split(/\n/, `find $wine_dir -name \\*.spec`);
+
+    my %all_spec_files;
+    foreach my $file (@all_spec_files) {
+	$all_spec_files{$file}++ ;
+    }
+
     if($$options->progress) {
 	$$output->progress("$module_file");
     }
@@ -37,6 +52,12 @@
 
 	if(/^%\s+(.*?)$/) {
 	    $spec_file = $1;
+	    if($wine_dir eq ".") {
+		$all_spec_files{$spec_file}--;
+	    } else {
+		$all_spec_files{"$wine_dir/$spec_file"}--;
+	    }
+	    $$spec_files{""}{$spec_file}++; # FIXME: Kludge
 	    next;
 	} else {
 	    $allowed_dir = $1;
@@ -49,6 +70,12 @@
     }
     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");
+	}
+    }
+
     return $self;
 }