Several bug fixes and additions.
diff --git a/tools/winapi_check/modules.dat b/tools/winapi_check/modules.dat
index f2391aa..7c273ee 100644
--- a/tools/winapi_check/modules.dat
+++ b/tools/winapi_check/modules.dat
@@ -322,7 +322,7 @@
% dlls/user/ddeml.spec
-dlls/user
+dlls/user/dde
% dlls/user/display.spec
@@ -350,6 +350,7 @@
controls
dlls/user
+dlls/user/dde
loader
windows
diff --git a/tools/winapi_check/win32/user32.api b/tools/winapi_check/win32/user32.api
index a7b4f1a..56fe178 100644
--- a/tools/winapi_check/win32/user32.api
+++ b/tools/winapi_check/win32/user32.api
@@ -92,6 +92,7 @@
LPDRAWTEXTPARAMS
LPDWORD
LPINT
+LPINPUT
LPMENUINFO
LPMENUITEMINFOA
LPMENUITEMINFOW
diff --git a/tools/winapi_check/win32/x11drv.api b/tools/winapi_check/win32/x11drv.api
index 3b90022..67a6c9c 100644
--- a/tools/winapi_check/win32/x11drv.api
+++ b/tools/winapi_check/win32/x11drv.api
@@ -30,6 +30,7 @@
LPDIDEVICEOBJECTDATA
LPDWORD
LPMOUSE_EVENT_PROC
+LPPOINT
LPRECT
LPVOID
RECT *
diff --git a/tools/winapi_check/winapi.pm b/tools/winapi_check/winapi.pm
index f462941..968a721 100644
--- a/tools/winapi_check/winapi.pm
+++ b/tools/winapi_check/winapi.pm
@@ -286,8 +286,16 @@
$ordinal = $1;
# FIXME: Internal name existing more than once not handled properly
- $$function_internal_name{$external_name} = $internal_name;
- $$function_external_name{$internal_name} = $external_name;
+ if(!$$function_internal_name{$external_name}) {
+ $$function_internal_name{$external_name} = $internal_name;
+ } else {
+ $$function_internal_name{$external_name} .= " & $internal_name";
+ }
+ if(!$$function_external_name{$internal_name}) {
+ $$function_external_name{$internal_name} = $external_name;
+ } else {
+ $$function_external_name{$internal_name} .= " & $external_name";
+ }
$$function_internal_arguments{$internal_name} = $arguments;
$$function_external_arguments{$external_name} = $arguments;
if(!$$function_internal_ordinal{$internal_name}) {
@@ -304,12 +312,12 @@
$$function_external_calling_convention{$external_name} = $calling_convention;
if(!$$function_internal_module{$internal_name}) {
$$function_internal_module{$internal_name} = "$module";
- } else { # if($$function_internal_module{$internal_name} !~ /$module/) {
+ } else {
$$function_internal_module{$internal_name} .= " & $module";
}
if(!$$function_external_module{$external_name}) {
$$function_external_module{$external_name} = "$module";
- } else { # if($$function_external_module{$external_name} !~ /$module/) {
+ } else {
$$function_external_module{$external_name} .= " & $module";
}
diff --git a/tools/winapi_check/winapi_check b/tools/winapi_check/winapi_check
index 0a93654..1222819 100755
--- a/tools/winapi_check/winapi_check
+++ b/tools/winapi_check/winapi_check
@@ -265,7 +265,13 @@
my $module = $winapi->function_internal_module($internal_name);
if(!defined($module)) { next }
+ # FIXME: Not correct
my $external_name = $winapi->function_external_name($internal_name);
+
+ if(defined($external_name)) {
+ $external_name = (split(/\s*&\s*/, $external_name))[0];
+ }
+
# FIXME: Kludge because of the THUNK variants
if(!defined($external_name)) {
next;
@@ -411,6 +417,16 @@
$prefix .= "$internal_name(" . join(",", @argument_types) . "): ";
$output->prefix($prefix);
+ # FIXME: Not correct
+ if(defined($external_name16)) {
+ $external_name16 = (split(/\s*&\s*/, $external_name16))[0];
+ }
+
+ # FIXME: Not correct
+ if(defined($external_name32)) {
+ $external_name32 = (split(/\s*&\s*/, $external_name32))[0];
+ }
+
if($options->local && $options->misplaced &&
$linkage ne "extern" && $statements)
{
diff --git a/tools/winapi_check/winapi_documentation.pm b/tools/winapi_check/winapi_documentation.pm
index a413a00..eadcaa9 100644
--- a/tools/winapi_check/winapi_documentation.pm
+++ b/tools/winapi_check/winapi_documentation.pm
@@ -21,6 +21,16 @@
my $documentation = $function->documentation;
my @argument_documentations = @{$function->argument_documentations};
+ # FIXME: Not correct
+ if(defined($external_name16)) {
+ $external_name16 = (split(/\s*&\s*/, $external_name16))[0];
+ }
+
+ # FIXME: Not correct
+ if(defined($external_name32)) {
+ $external_name32 = (split(/\s*&\s*/, $external_name32))[0];
+ }
+
my $external_name;
my $name1;
my $name2;
diff --git a/tools/winapi_check/winapi_local.pm b/tools/winapi_check/winapi_local.pm
index 86f7042..ff58b23 100644
--- a/tools/winapi_check/winapi_local.pm
+++ b/tools/winapi_check/winapi_local.pm
@@ -257,16 +257,20 @@
$format =~ s/^\'(.*?)\'$/$1/;
$format =~ s/^\\\"(.*?)\\\"$/$1/;
- if($argument !~ /$name/) {
- $output->write("$called_name: argument $n is wrong ($name != '$argument')\n");
- } elsif(!$winapi->is_allowed_type_format($module, $type, $format)) {
- $output->write("$called_name: argument $n ($type $name) has illegal format ($format)\n");
+ if($options->debug_messages) {
+ if($argument !~ /$name/) {
+ $output->write("$called_name: argument $n is wrong ($name != '$argument')\n");
+ } elsif(!$winapi->is_allowed_type_format($module, $type, $format)) {
+ $output->write("$called_name: argument $n ($type $name) has illegal format ($format)\n");
+ }
}
}
- my $count = $#{$function->argument_types} + 1;
- if($n != $count) {
- $output->write("$called_name: argument count mismatch ($n != $count)\n");
+ if($options->debug_messages) {
+ my $count = $#{$function->argument_types} + 1;
+ if($n != $count) {
+ $output->write("$called_name: argument count mismatch ($n != $count)\n");
+ }
}
}
}