> The subject says it all.
> It has been discussed a few times but I could not figure out
> what it does from the discussions, the documentation or the code.
> Obviously it reads the spec files but what does it do with them?
It was orginally written to check that the real implementation of
a function has the same number of arguments as declared in the spec files.
The current implementation can check a lot other things.
Run "./tools/winapi_check/winapi_check --help"
However not all of them are turned on by default,
because they generate to many warnings. winapi_check is doesn't
rest on a solid theoretical ground some some of theese warning are
real errors but many are not that why they are turn off by default.
Some example of this is
--argument-kind: LP{,C}{,W}STR are sometimes declared as
{,w}str (correct) and sometimes as ptr (incorrect) in the specfiles.
This generates warnings, but they are harmless. I haven't had
time "fixing" them.
--calling-convention: pascal vs pascal16 mismatch
this might or might not matter for signed return values.
I'm not sure haven't had time to investigate.
--argument-kind: (Win16 and possible Win32 on 64-bit platforms)
s_int vs int mismatch
this might or might not matter in some cases
for signed argument values. I'm not sure haven't
had time to investigate.
In addition there are other check that are only partially
implmented like
--cross-call: Check Win16 <=> Win32 crosscalls
--documentation: Checks for in source documentation inconsistances.
> (Optional question in case of a tie, why is it mentioned in
> documentation/Makefile?)
Because the Makefile target is defined in wine/Make.rules.in.
Of course doing "make winapi_check" in documentation is utterly useless.