diff --git a/tools/winapi/config.pm b/tools/winapi/config.pm index c6ce77a0186..96614d3a9e1 100644 --- a/tools/winapi/config.pm +++ b/tools/winapi/config.pm @@ -53,7 +53,7 @@ sub file_type { m%^(?:libtest|rc|server|tests|tools)/% && return ""; m%^(?:programs|debugger|miscemu)/% && return "wineapp"; - m%^(?:library|tsx11|unicode)/% && return "library"; + m%^(?:libs)/% && return "library"; m%^windows/x11drv/wineclipsrv\.c$% && return "application"; return "winelib"; @@ -78,7 +78,7 @@ sub file_skip { $_ = file_absolutize($_); m%^(?:libtest|programs|rc|server|tests|tools)/% && return 1; - m%^(?:debugger|miscemu|tsx11|server|unicode)/% && return 1; + m%^(?:debugger|miscemu|libs|server)/% && return 1; m%^dlls/wineps/data/% && return 1; m%^windows/x11drv/wineclipsrv\.c$% && return 1; m%^dlls/winmm/wineoss/midipatch\.c$% && return 1; diff --git a/tools/winapi/win16.api b/tools/winapi/win16.api index 2b28efa60cc..9d5cb447135 100644 --- a/tools/winapi/win16.api +++ b/tools/winapi/win16.api @@ -2,24 +2,33 @@ %long +BOOL DWORD HRESULT +INT LONG UINT ULONG %ptr +LPAVICOMPRESSOPTIONS * LPAVIFILEINFOA +LPAVISTREAMINFOA +LPBITMAPINFOHEADER LPCLSID +LPLONG +LPVOID PAVIFILE PAVIFILE * PAVISTREAM PAVISTREAM * +PGETFRAME %str LPCSTR +LPSTR %void @@ -114,6 +123,55 @@ HTASK16 INT16 WORD +%%ctl3d.dll + +%long + +DWORD +HBRUSH +LONG +LPARAM + +%void + +void + +%word + +BOOL16 +HDC16 +HINSTANCE16 +HWND16 +INT16 +UINT16 +WORD +WPARAM16 + +%%ctl3dv2.dll + +%long + +DWORD +HBRUSH +LONG +LPARAM +LRESULT + +%void + +void + +%word + +BOOL16 +HDC16 +HINSTANCE16 +HWND16 +INT16 +UINT16 +WORD +WPARAM16 + %%ddeml.dll %long @@ -218,16 +276,13 @@ LPBYTE LPCVOID LPDEVMODEA LPDWORD -LPENUMLOGFONT16 LPFONTINFO16 LPGLYPHMETRICS16 LPINT16 LPKERNINGPAIR16 LPLOGFONT16 -LPNEWTEXTMETRIC16 LPOUTLINETEXTMETRIC16 LPPALETTEENTRY -LPPDEVICE LPPOINT16 LPRASTERIZER_STATUS LPRECT16 @@ -294,6 +349,7 @@ BOOL DWORD HANDLE HINSTANCE +HKEY HMODULE INT LONG @@ -350,7 +406,6 @@ HANDLE16 HFILE16 HGLOBAL16 HINSTANCE16 -HKEY HLOCAL16 HMODULE16 HQUEUE16 @@ -411,7 +466,6 @@ LPVOID %str -LPCSTR LPSTR %void @@ -621,13 +675,29 @@ WORD DWORD HRESULT +ULONG + +%longlong + +ULARGE_INTEGER %ptr +IDataObject * +IDataObject ** +ILockBytes16 * LPDROPTARGET +LPLOCKBYTES16 * LPMONIKER * LPRUNNINGOBJECTTABLE * LPVOID +LPVOID * +REFIID +REFCLSID +STATSTG16 * +ULONG * +void * +void ** %str @@ -639,6 +709,7 @@ void %word +BOOL16 HGLOBAL16 HICON16 HWND16 @@ -766,21 +837,26 @@ OLE_SERVER_USE BOOL DWORD +HKEY LPARAM +WPARAM int %ptr HINF16 * LPBYTE +LPDEVICE_INFO16 LPDWORD LPEXPANDVTBL +LPHKEY16 LPLOGDISKDESC LPLPDEVICE_INFO16 LPVIRTNODE LPVOID PHKEY VIFPROC +VOID * %str @@ -795,7 +871,7 @@ void HINF16 HINSTANCE16 -HKEY +HKEY16 HWND16 INT16 LOGDISKID16 @@ -803,7 +879,6 @@ RETERR16 UINT16 VHSTR WORD -WPARAM %%shell.dll @@ -811,6 +886,7 @@ WPARAM BOOL DWORD +HKEY LPARAM LRESULT @@ -841,7 +917,6 @@ HDROP16 HGLOBAL16 HICON16 HINSTANCE16 -HKEY HWND16 INT16 UINT16 @@ -881,6 +956,7 @@ LARGE_INTEGER %ptr IID * +ILockBytes16 * IStorage16 * IStorage16 ** IStream16 * @@ -894,6 +970,10 @@ ULARGE_INTEGER * ULONG * void * +%segptr + +SEGPTR + %str LPCOLESTR16 @@ -1010,7 +1090,6 @@ BOOL COLORREF DWORD HHOOK -INT LONG LPARAM LRESULT diff --git a/tools/winapi/win32.api b/tools/winapi/win32.api index fd3cb3e3602..2fa5258e581 100644 --- a/tools/winapi/win32.api +++ b/tools/winapi/win32.api @@ -3,6 +3,7 @@ %long ACCESS_MASK +ACL_INFORMATION_CLASS ALG_ID BOOL BYTE @@ -128,10 +129,13 @@ INT LONG UINT ULONG +int %ptr +AVISAVECALLBACK CLSID * +LONG * LPAVICOMPRESSOPTIONS * LPAVICOMPRESSOPTIONS LPAVIFILEINFOA @@ -378,14 +382,17 @@ void BOOL DWORD HANDLE +HCERTSTORE %ptr BYTE * DWORD * GUID * +PCCERT_CONTEXT SIP_ADD_NEWPROVIDER * SIP_DISPATCH_INFO * +void * %str @@ -396,16 +403,55 @@ LPSTR LPCWSTR +%%ctl3d32.dll + +%long + +BOOL +DWORD +HBRUSH +HDC +HINSTANCE +HWND +LONG +LPARAM +LRESULT +UINT +WORD +WPARAM +int + +%void + +void + %%d3d8.dll %long +BOOL +HRESULT +UINT + +%ptr + +IDirect3D8 * +LPVOID + +%void + +void + +%%d3d9.dll + +%long + HRESULT UINT %ptr -IDirect3D8 * +IDirect3D9 * %%dciman32.dll @@ -459,6 +505,19 @@ LPVOID * REFCLSID REFIID +%%devenum.dll + +%long + +HRESULT + +%ptr + +REFCLSID +REFIID +LPVOID * + + %%dinput.dll %long @@ -470,6 +529,7 @@ HRESULT %ptr LPDIRECTINPUTA * +LPDIRECTINPUTW * LPUNKNOWN LPVOID * REFCLSID @@ -490,6 +550,102 @@ LPVOID * REFCLSID REFIID +%%dmband.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmcompos.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmime.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmloader.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmscript.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmstyle.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmsynth.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + +%%dmusic.dll + +%long + +HRESULT + +%ptr + +LPVOID * +REFCLSID +REFIID + %%dplayx.dll %long @@ -511,6 +667,18 @@ LPVOID * REFCLSID REFIID +%%dpnhpast.dll + +%long + +HRESULT + +%ptr + +LPVOID +REFCLSID +REFIID + %%dsound.dll %long @@ -526,11 +694,11 @@ LPDIRECTSOUND8 * LPDIRECTSOUNDCAPTURE * LPDSENUMCALLBACKA LPDSENUMCALLBACKW +LPGUID LPUNKNOWN LPVOID LPVOID * REFCLSID -REFGUID REFIID %%gdi32.dll @@ -559,6 +727,7 @@ INT LONG LPARAM UINT +ULONG WORD %long --extension @@ -647,6 +816,7 @@ RGBQUAD * RGNDATA * TEXTMETRICA * TEXTMETRICW * +TRIVERTEX * WORD * XFORM * void * @@ -811,6 +981,51 @@ LPSTR LPCWSTR LPWSTR +%%iphlpapi.dll + +%long + +BOOL +DWORD +IPAddr +IPMask +UINT +ULONG + +%ptr + +HANDLE * +LPDWORD +LPOVERLAPPED +OVERLAPPED * +PDWORD +PFIXED_INFO +PHANDLE +PIP_ADAPTER_INDEX_MAP +PIP_ADAPTER_INFO +PIP_INTERFACE_INFO +PIP_PER_ADAPTER_INFO +PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS +PMIB_ICMP +PMIB_IFROW +PMIB_IFTABLE +PMIB_IPADDRTABLE +PMIB_IPFORWARDROW +PMIB_IPFORWARDTABLE +PMIB_IPNETROW +PMIB_IPNETTABLE +PMIB_IPSTATS +PMIB_TCPROW +PMIB_TCPSTATS +PMIB_TCPTABLE +PMIB_UDPSTATS +PMIB_UDPTABLE +PULONG + +%wstr + +LPWSTR + %%joystick.drv %long @@ -857,6 +1072,7 @@ unsigned char BOOL16 HANDLE16 +HFILE16 HGLOBAL16 HINSTANCE16 HLOCAL16 @@ -869,6 +1085,7 @@ UINT16 %long --pointer +LONG_PTR ULONG_PTR %longlong @@ -907,6 +1124,8 @@ FINDEX_SEARCH_OPS GET_FILEEX_INFO_LEVELS HANDLE * INPUT_RECORD * +LANGUAGEGROUP_ENUMPROCA +LANGUAGEGROUP_ENUMPROCW LARGE_INTEGER * LOCALE_ENUMPROCA LOCALE_ENUMPROCW @@ -930,6 +1149,7 @@ LPFILETIME LPINPUT_RECORD LPLDT_ENTRY LPMEMORYSTATUS +LPMEMORYSTATUSEX LPMODULEENTRY32 LPOSVERSIONINFOEXA LPOSVERSIONINFOEXW @@ -1020,16 +1240,14 @@ LPWSTR HFILE INT LONG -UINT +WORD %ptr LPOFSTRUCT -LPVOID %str -LPCSTR LPSTR %void @@ -1038,7 +1256,6 @@ void %wstr -LPCWSTR LPWSTR %%mapi32.dll @@ -1236,6 +1453,29 @@ LONG UINT WORD +%%msdmo.dll + +%long + +DWORD +HRESULT +unsigned long + +%ptr + +DMO_MEDIA_TYPE ** +DMO_MEDIA_TYPE * +DMO_PARTIAL_MEDIATYPE * +IEnumDMO ** +REFCLSID +REFGUID +WCHAR * +unsigned long * + +%wstr + +LPCWSTR + %%msg711.acm %long @@ -1253,14 +1493,11 @@ UINT BOOL HDC UINT -ULONG int %ptr BLENDFUNCTION -TRIVERTEX * -void * %void @@ -1288,6 +1525,16 @@ LRESULT LPARAM UINT +%%msnet32 + +%long + +LONG + +%ptr + +LPVOID + %%msvcrt.dll %double @@ -1296,7 +1543,9 @@ double %long +DWORD INT +LCID LONG MSVCRT_clock_t MSVCRT_complex @@ -1337,22 +1586,20 @@ PEXCEPTION_FRAME PEXCEPTION_FRAME * PEXCEPTION_POINTERS PEXCEPTION_RECORD +WCHAR ** WORD ** _HEAPINFO * _INITTERMFUN * _JUMP_BUFFER * -__non_rtti_object * _onexit_t _onexit_t ** _se_translator_function -bad_cast * -bad_typeid * char * char ** char *** cxx_exception_type * -exception * int * +struct MSVCRT_lconv * struct MSVCRT_tm * struct _diskfree_t * struct _finddata_t * @@ -1385,6 +1632,16 @@ MSVCRT_ldiv_t VOID void +%%msvcrtd.dll + +%long + +int + +%ptr + +void * + %%msvcrt20.dll %long @@ -1416,6 +1673,7 @@ HPALETTE HWND INT LONG +LPARAM LRESULT UINT WORD @@ -1428,6 +1686,8 @@ LONG * LPBITMAPINFO LPBITMAPINFOHEADER LPDWORD +LPOPENFILENAMEA +LPOPENFILENAMEW LPVOID PCOMPVARS @@ -1444,6 +1704,25 @@ void LPCWSTR +%%mswsock.dll + +%long + +DWORD +HANDLE +SOCKET + +%ptr + +LPDWORD +LPOVERLAPPED +LPTRANSMIT_FILE_BUFFERS +PVOID + +%void + +void + %%netapi32.dll %long @@ -1483,6 +1762,7 @@ BOOL BOOLEAN BYTE CCHAR +CHAR DWORD FILE_INFORMATION_CLASS FS_INFORMATION_CLASS @@ -1492,6 +1772,7 @@ HMODULE INT KEY_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS +LCID LONG MEMORY_INFORMATION_CLASS NTSTATUS @@ -1514,6 +1795,10 @@ long unsigned int unsigned long +%long --pointer + +ULONG_PTR + %long --extension obj_handle_t @@ -1525,17 +1810,29 @@ ULONGLONG %ptr +BOOLEAN * CONTEXT * CONTEXT86 * +CLIENT_ID * +CURDIR * +DOS_PATHNAME_TYPE DWORD * EXCEPTION_FRAME * EXCEPTION_RECORD * +GENERIC_MAPPING * HANDLE * HANDLERPROC +HMODULE * +IO_STATUS_BLOCK * IMAGE_NT_HEADERS * +IMAGE_RESOURCE_DIRECTORY ** +IMAGE_RESOURCE_DATA_ENTRY * +IMAGE_RESOURCE_DATA_ENTRY ** IMAGE_SECTION_HEADER ** INT * LARGE_INTEGER * +LCID * +LDR_RESOURCE_INFO * LPBYTE LPCVOID LPCVOID * @@ -1546,15 +1843,23 @@ LPTIME_ZONE_INFORMATION LPVOID LPVOID * LPWSTR * +LUID * +LUID_AND_ATTRIBUTES * +MESSAGE_RESOURCE_ENTRY ** OBJECT_ATTRIBUTES * +OEM_STRING * +PACCESS_MASK PACE_HEADER PACE_HEADER * PACL PACL * PANSI_STRING PBOOLEAN +PBYTE PCANSI_STRING +PCHAR PCRTL_BITMAP +PCSZ PDWORD PEXCEPTION_FRAME PEXCEPTION_RECORD @@ -1566,10 +1871,13 @@ PIMAGE_SECTION_HEADER PIO_APC_ROUTINE PIO_STATUS_BLOCK PLARGE_INTEGER +PLDR_MODULE * PLPCMESSAGE PLPCSECTIONINFO PLPCSECTIONMAPINFO PLUID +PLUID_AND_ATTRIBUTES +PNTAPCFUNC POBJDIR_INFORMATION POBJECT_ATTRIBUTES PPRIVILEGE_SET @@ -1582,6 +1890,7 @@ PSID PSID * PSID_IDENTIFIER_AUTHORITY PSTRING +PSYSTEM_MODULE_INFORMATION PTIMERAPCROUTINE PTIME_FIELDS PTOKEN_PRIVILEGES @@ -1589,17 +1898,22 @@ PULONG PUNICODE_STRING PVOID PVOID * +PWSTR * RTL_CRITICAL_SECTION * +SIZE_T * STRING * TIME_ZONE_INFORMATION * UINT * ULONG * ULONGLONG * +USHORT * UNICODE_STRING * VOID * +WCHAR ** struct _TEB * union cptable * void * +void ** wine_signal_handler %ptr --extension @@ -1624,6 +1938,8 @@ void LPCWSTR LPWSTR +PCWSTR +PWSTR %%odbc32.dll @@ -1665,6 +1981,7 @@ DWORD HACCEL HANDLE HGLOBAL +HICON HINSTANCE HMENU HOLEMENU @@ -1704,6 +2021,7 @@ IUnknown ** LPBC LPBC * LPCLSID +LPCRECT LPDATAADVISEHOLDER * LPDATAOBJECT LPDROPTARGET @@ -1741,6 +2059,7 @@ LPVOID LPVOID * MULTI_QI * OLECHAR * +PROPVARIANT * PSECURITY_DESCRIPTOR REFCLSID REFGUID @@ -1776,7 +2095,6 @@ double BOOL BYTE CALLCONV -CHAR DISPID DWORD FLOAT @@ -1802,21 +2120,25 @@ int short signed char unsigned int +unsigned long %ptr BSTR * BYTE * -CHAR * COLORREF * CY * DATE * +DECIMAL * DISPID * DISPPARAMS * EXCEPINFO * FLOAT * ICreateTypeLib ** +IID * INTERFACEDATA * +IRecordInfo * +IRecordInfo ** ITypeInfo * ITypeInfo ** ITypeLib * @@ -1860,8 +2182,12 @@ VOID * double * int * short * +signed char * void * void ** +unsigned char * +unsigned long * + %str @@ -2019,7 +2345,6 @@ GLdouble * GLfloat * GLint * GLshort * -GLstring GLubyte * GLuint * GLushort * @@ -2027,6 +2352,7 @@ GLvoid * GLvoid ** LPGLYPHMETRICSFLOAT LPLAYERPLANEDESCRIPTOR +char * void * %str @@ -2065,6 +2391,31 @@ LPSTR LPWSTR +%%qcap.dll + +%long + +HRESULT + +%ptr + +REFCLSID +REFIID +LPVOID * + +%%quartz.dll + +%long + +DWORD +HRESULT + +%ptr + +REFCLSID +REFIID +LPVOID * + %%rasapi32.dll %long @@ -2090,6 +2441,7 @@ LPRASDIALPARAMSA LPRASENTRYA LPRASENTRYW LPRASENTRYNAMEA +LPRASENTRYNAMEW LPVOID %str @@ -2114,6 +2466,7 @@ DLLVERSIONINFO * %long +DWORD HMODULE HRESULT RPC_BINDING_HANDLE @@ -2211,9 +2564,11 @@ BOOL DWORD HDEVINFO HINF +HINSTANCE HKEY HSPFILEQ HWND +INT LONG UINT @@ -2248,9 +2603,8 @@ void * %str LPCSTR +LPSTR PCSTR -PCWSTR -PWSTR %void @@ -2259,12 +2613,15 @@ void %wstr LPCWSTR +PCWSTR +PWSTR %%shdocvw.dll %long BOOL +DWORD HRESULT %ptr @@ -2312,6 +2669,7 @@ POINT %ptr +CABINETSTATE * CLSID * DLLVERSIONINFO * DWORD * @@ -2344,9 +2702,10 @@ LPFNCREATEINSTANCE LPFNFMCALLBACK LPITEMIDLIST LPITEMIDLIST * +LPITEMIDLIST ** +LPLONG LPMALLOC * LPMEASUREITEMSTRUCT -LPNOTIFYREGISTER LPPOINT LPSCROLLSAMPLES LPSECURITY_ATTRIBUTES @@ -2402,6 +2761,7 @@ ASSOCKEY ASSOCSTR BOOL COLORREF +DISPID DWORD HANDLE HDC @@ -2430,6 +2790,7 @@ URLIS WCHAR WORD WPARAM +char int %longlong @@ -2446,11 +2807,14 @@ HICON * HKEY * HWND * IBindCtx * +IConnectionPoint * IConnectionPoint ** +IDispatch ** IFACE_INDEX_TBL * IID * INT * IPropertyBag * +IShellFolder * IStream * IStream ** ITEMIDLIST * @@ -2466,11 +2830,11 @@ LPCSTR * LPCVOID LPCWSTR * LPDWORD -LPDWORD * LPINT LPITEMIDLIST LPOPENFILENAMEW LPPAGESETUPDLGW +LPPOLICYDATA LPPRINTDLGW LPSECURITY_ATTRIBUTES LPSHELLEXECUTEINFOW @@ -2486,6 +2850,7 @@ LPWORD LPWSTR * OLECMD * OLECMDTEXT * +PHKEY PHUSKEY PLONG PSECURITY_DESCRIPTOR @@ -2674,6 +3039,7 @@ pTW_IDENTITY BOOL DWORD HRESULT +QUERYOPTION long %ptr @@ -2688,7 +3054,9 @@ IEnumFORMATETC * IMoniker * IMoniker ** LPBC +LPBINDSTATUSCALLBACK LPWSTR * +LPUNKNOWN LPVOID LPVOID * REFCLSID @@ -2820,7 +3188,6 @@ LPSCROLLINFO LPSECURITY_ATTRIBUTES LPTPMPARAMS LPVOID -LPWINE_CLIPFORMAT LPWORD MENUITEMINFOA * MENUITEMINFOW * @@ -2842,7 +3209,7 @@ PROPENUMPROCW PSECURITY_DESCRIPTOR PSECURITY_INFORMATION PSECURITY_QUALITY_OF_SERVICE -PUINT +PUINT_PTR PVOID PWINDOWINFO RECT * @@ -2860,7 +3227,6 @@ WNDCLASSEXW * WNDCLASSW * WNDENUMPROC WNDPROC -char * va_list %ptr --extension @@ -2956,7 +3322,6 @@ WORD BOOL BYTE DWORD -HANDLE UINT int @@ -3068,12 +3433,15 @@ LPCWSTR %%wininet.dll +%double + +FILETIME +GROUPID + %long BOOL DWORD -FILETIME -GROUPID HANDLE HINTERNET HRESULT @@ -3096,6 +3464,7 @@ LPINTERNET_CACHE_ENTRY_INFOW LPURL_COMPONENTSA LPURL_COMPONENTSW LPVOID +LPVOID * LPWIN32_FIND_DATAA LPWIN32_FIND_DATAW @@ -3375,7 +3744,11 @@ UINT INT * LPDWORD +LPGUID LPINT +LPSERVICE_ASYNC_INFO +LPSERVICE_INFOA +LPSERVICE_INFOW LPVOID char * struct netent * @@ -3383,11 +3756,16 @@ struct netent * %str LPCSTR +LPSTR %void void +%wstr + +LPWSTR + %%x11drv.dll %long @@ -3397,6 +3775,7 @@ CHAR COLORREF DWORD HANDLE +HANDLE16 HBITMAP HBRUSH HDC @@ -3425,9 +3804,11 @@ DEVICEFONTENUMPROC DEVMODEA * DWORD * HANDLE * +HANDLE16 * INT * LPBYTE LPCVOID +LPDEVMODEW LPINT LPLOGFONTW LPPALETTEENTRY diff --git a/tools/winapi/winapi.pm b/tools/winapi/winapi.pm index b29e090d14e..a8fb3dfb53a 100644 --- a/tools/winapi/winapi.pm +++ b/tools/winapi/winapi.pm @@ -257,7 +257,7 @@ sub parse_spec_file { s/^\s*(.*?)\s*$/$1/; if(s/^(.*?)\s*\#\s*(.*)\s*$/$1/) { my $comment = $2; - if ($comment =~ /^Wine/) { # FIXME: Kludge + if ($comment =~ /^Wine/i) { # FIXME: Kludge $wine_extension = 1; } } @@ -271,7 +271,7 @@ sub parse_spec_file { my $ordinal; if(/^(\d+|@)\s+ (pascal|pascal16|stdcall|cdecl|varargs)\s+ - ((?:(?:-noimport|-noname|-norelay|-i386|-ret64|-register|-interrupt)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S*)$/x) + ((?:(?:-noimport|-noname|-norelay|-i386|-ret64|-register|-interrupt|-private)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S*)$/x) { my $calling_convention = $2; my $flags = $3; @@ -283,6 +283,8 @@ sub parse_spec_file { $flags =~ s/\s+/ /g; + $internal_name = $external_name if !$internal_name; + if($flags =~ /-noname/) { # $external_name = "@"; } @@ -294,7 +296,7 @@ sub parse_spec_file { } if ($internal_name =~ /^(.*?)\.(.*?)$/) { - my $forward_module = $1; + my $forward_module = lc($1); my $forward_name = $2; if (0) { @@ -378,7 +380,7 @@ sub parse_spec_file { } } } - } elsif(/^(\d+|@)\s+stub(?:\s+(-noimport|-noname|-norelay|-i386|-ret64))?\s+(\S+)$/) { + } elsif(/^(\d+|@)\s+stub(?:\s+(-noimport|-noname|-norelay|-i386|-ret64|-private))?\s+(\S+)$/) { $ordinal = $1; my $flags = $2; @@ -427,25 +429,14 @@ sub parse_spec_file { } else { # if($$function_external_module{$external_name} !~ /$module/) { $$function_external_module{$external_name} .= " & $module"; } - } elsif(/^(\d+|@)\s+forward(?:\s+(?:-noimport|-norelay|-i386|-ret64))?\s+(\S+)\s+(\S+)\.(\S+)$/) { - $ordinal = $1; - - my $external_name = $2; - my $forward_module = lc($3); - my $forward_name = $4; - - if ($external_name ne "@") { - $$module_external_calling_convention{$module}{$external_name} = "forward"; - } else { - $$module_external_calling_convention{$module}{"\@$ordinal"} = "forward"; - } - $$function_forward{$module}{$external_name} = [$forward_module, $forward_name]; - } elsif(/^(\d+|@)\s+extern\s+(\S+)\s*(\S*)$/) { + } elsif(/^(\d+|@)\s+extern(?:\s+(?:-noimport|-norelay|-i386|-ret64))?\s+(\S+)\s*(\S*)$/) { $ordinal = $1; my $external_name = $2; my $internal_name = $3; + $internal_name = $external_name if !$internal_name; + if ($external_name ne "@") { $$module_external_calling_convention{$module}{$external_name} = "extern"; } else { @@ -928,17 +919,13 @@ sub function_wine_extension { sub is_function_stub { my $self = shift; my $module_external_calling_convention = \%{$self->{MODULE_EXTERNAL_CALLING_CONVENTION}}; - my $modules = \%{$self->{MODULES}}; my $module = shift; my $name = shift; - foreach my $module (keys(%$modules)) { - if($$module_external_calling_convention{$module}{$name} eq "stub") { - return 1; - } + if($$module_external_calling_convention{$module}{$name} eq "stub") { + return 1; } - return 0; } diff --git a/tools/winapi_check/modules.dat b/tools/winapi_check/modules.dat index c6b7c9736f3..d0faf6cff15 100644 --- a/tools/winapi_check/modules.dat +++ b/tools/winapi_check/modules.dat @@ -46,8 +46,12 @@ dlls/crypt32 % dlls/ctl3d/ctl3d.spec +dlls/ctl3d + % dlls/ctl3d/ctl3d32.spec +dlls/ctl3d + % dlls/ctl3d/ctl3dv2.spec dlls/ctl3d @@ -64,6 +68,10 @@ dlls/d3d8 dlls/d3d9 +% dlls/d3dim/d3dim.spec + +dlls/d3dim + % dlls/d3dx8/d3dx8.spec dlls/d3dx8 @@ -240,6 +248,10 @@ dlls/msvcrt20 dlls/msvcrtd +% dlls/mswsock/mswsock.spec + +dlls/mswsock + % dlls/kernel/stress.spec dlls/kernel @@ -306,6 +318,8 @@ dlls/msacm/winemp3 % dlls/msnet32/msnet32.spec +dlls/msnet32 + % dlls/msvideo/msvfw32.spec dlls/msvideo diff --git a/tools/winapi_check/nativeapi.pm b/tools/winapi_check/nativeapi.pm index 5b139c2f885..5ed262c6034 100644 --- a/tools/winapi_check/nativeapi.pm +++ b/tools/winapi_check/nativeapi.pm @@ -54,6 +54,9 @@ sub new { $configure_ac_file =~ s/^\.\///; $config_h_in_file =~ s/^\.\///; + + $$conditional_headers{"config.h"}++; + $output->progress("$api_file"); open(IN, "< $api_file"); @@ -101,16 +104,28 @@ sub new { # skip comments if(/^dnl/) { next; } - if(/^AC_CHECK_HEADERS\(\s*([^,\)]*)(?:,|\))?/) { - foreach my $name (split(/\s+/, $1)) { + if(/AC_CHECK_HEADERS\(\s*([^,\)]*)(?:,|\))?/) { + my $headers = $1; + $headers =~ s/^\s*\[\s*(.*?)\s*\]\s*$/$1/; + foreach my $name (split(/\s+/, $headers)) { $$conditional_headers{$name}++; } - } elsif(/^AC_CHECK_FUNCS\(\s*([^,\)]*)(?:,|\))?/) { - foreach my $name (split(/\s+/, $1)) { + } elsif(/AC_CHECK_FUNCS\(\s*([^,\)]*)(?:,|\))?/) { + my $funcs = $1; + $funcs =~ s/^\s*\[\s*(.*?)\s*\]\s*$/$1/; + foreach my $name (split(/\s+/, $funcs)) { $$conditional_functions{$name}++; } - } elsif(/^AC_FUNC_ALLOCA/) { + } elsif(/AC_FUNC_ALLOCA/) { $$conditional_headers{"alloca.h"}++; + } elsif (/AC_DEFINE\(\s*HAVE_(.*?)_H/) { + my $name = lc($1); + $name =~ s/_/\//; + $name .= ".h"; + + next if $name =~ m%correct/%; + + $$conditional_headers{$name}++; } } diff --git a/tools/winapi_check/preprocessor.pm b/tools/winapi_check/preprocessor.pm index 6689214d521..d6d1582adea 100644 --- a/tools/winapi_check/preprocessor.pm +++ b/tools/winapi_check/preprocessor.pm @@ -79,27 +79,42 @@ sub begin_if { local $_ = shift; while(!/^$/) { - if(/^0\s*\&\&/) { + if(/^0\s*\&\&/s) { $_ = "0"; - } elsif(/^1\s*\|\|/) { + } elsif(/^1\s*\|\|/s) { $_ = "1"; } - if(/^(!)?defined\s*\(\s*(.+?)\s*\)\s*((\&\&|\|\|)\s*)?/){ + if (/^(!\s*)?defined\s*\(\s*(\w+)\s*\)\s*(?:(\&\&|\|\|)\s*)?/s || + /^(!\s*)?defined\s*(\w+)\s*(?:(\&\&|\|\|)\s*)?/s) + { $_ = $'; - if(defined($1) && $1 eq "!") { - $self->undefine($2); - push @$stack, $2; + + my $sign = $1; + my $var = $2; + + if (defined($sign) && $sign eq "!") { + $self->undefine($var); + push @$stack, $var; } else { - $self->define($2); - push @$stack, $2; + $self->define($var); + push @$stack, $var; } - } elsif(/^(\w+)\s*(<|<=|==|!=|>=|>)\s*(\w+)\s*((\&\&|\|\|)\s*)?/) { - $_ = $'; - } elsif(/^(!)?(\w+)\s*$/) { - $_ = $'; - } elsif(/^\(|\)/) { + } elsif (/^(!\s*)?(\w+)\s*(?:(<|<=|==|!=|>=|>|\+|\-|\*\/)\s*(\w+)\s*)?(?:(\&\&|\|\|)\s*)?/s) { $_ = $'; + + my $sign = $1; + my $var = $2; + + if (defined($sign) && $sign eq "!") { + $self->undefine($var); + push @$stack, $var; + } else { + $self->define($var); + push @$stack, $var; + } + } elsif(/^(!\s*)?\(/s) { + $_ = ""; } else { print "*** Can't parse '#$directive $_' ***\n"; $_ = ""; diff --git a/tools/winapi_check/winapi_check b/tools/winapi_check/winapi_check index ca4cefd1f46..b7443dd022d 100755 --- a/tools/winapi_check/winapi_check +++ b/tools/winapi_check/winapi_check @@ -538,9 +538,14 @@ foreach my $file (@c_files) { } else { $include = "$header"; } + } elsif($header =~ /^(?:\.\.\/kernel\/(kernel_private\.h))$/) { # FIXME: Kludge + my $header2 = $1; + $include = "dlls/kernel/$header2"; + } elsif($header =~ /^(?:ntdll_misc\.h)$/) { # FIXME: Kludge + $include = "dlls/ntdll/$header"; } elsif($header =~ /^(?:controls\.h|message\.h)$/) { # FIXME: Kludge $include = "dlls/user/$header"; - } elsif($header =~ /^(?:ts_xlib\.h|winproc\.h|x11font\.h|)$/) { # FIXME: Kludge + } elsif($header =~ /^(?:ts_xlib\.h|winproc\.h|x11drv\.h|x11font\.h)$/) { # FIXME: Kludge $include = "dlls/x11drv/$header"; } elsif($check_local && $header ne "config.h") { $output->write("$file: #include \"$header\": file not found\n"); @@ -613,14 +618,26 @@ foreach my $file (@c_files) { $include2info{$name}{used}++; } } + } elsif($header =~ /^(?:\.\.\/kernel\/(kernel_private\.h))$/) { # FIXME: Kludge + my $header2 = $1; + $include2info{"dlls/kernel/$header2"}{used}++; + foreach my $name (keys(%{$include2info{"dlls/kernel/$header2"}{includes}})) { + $include2info{$name}{used}++; + } + } elsif($header =~ /^(?:ntdll_misc\.h)$/) { # FIXME: Kludge + $include2info{"dlls/ntdll/$header"}{used}++; + foreach my $name (keys(%{$include2info{"dlls/ntdll/$header"}{includes}})) { + $include2info{$name}{used}++; + } + } elsif($header =~ /^(?:controls\.h|message\.h)$/) { # FIXME: Kludge $include2info{"dlls/user/$header"}{used}++; foreach my $name (keys(%{$include2info{"dlls/user/$header"}{includes}})) { $include2info{$name}{used}++; } - } elsif($header =~ /^(?:ts_xlib\.h|winproc\.h|x11font\.h|)$/) { # FIXME: Kludge + } elsif($header =~ /^(?:ts_xlib\.h|winproc\.h|x11drv\.h|x11font\.h)$/) { # FIXME: Kludge $include2info{"dlls/x11drv/$header"}{used}++; - foreach my $name (keys(%{$include2info{"dlls/user/$header"}{includes}})) { + foreach my $name (keys(%{$include2info{"dlls/x11drv/$header"}{includes}})) { $include2info{$name}{used}++; } } elsif(-e "$wine_dir/include/$header") { diff --git a/tools/winapi_check/winapi_documentation.pm b/tools/winapi_check/winapi_documentation.pm index 32e50695f82..edaf567c532 100644 --- a/tools/winapi_check/winapi_documentation.pm +++ b/tools/winapi_check/winapi_documentation.pm @@ -87,7 +87,7 @@ sub check_documentation { my $ordinal2 = $7; if ($winapi->function_wine_extension(lc($module2), $external_name2)) { - $output->write("documentation: $external_name2 (\U$module2\E.$ordinal2) is a Wine extension \\\n$documentation\n"); + # $output->write("documentation: $external_name2 (\U$module2\E.$ordinal2) is a Wine extension \\\n$documentation\n"); } if(length($1) != 1 || length($2) < 1 || @@ -108,6 +108,7 @@ sub check_documentation { } if((($options->documentation_name && !$found_name) || ($options->documentation_ordinal && !$found_ordinal)) && + !$winapi->is_function_stub($module, $external_name) && !$winapi->function_wine_extension($module, $external_name)) { $documentation_error = 1; @@ -202,7 +203,7 @@ sub check_documentation { for my $argument_documentation (@$refargument_documentations) { $n++; if($argument_documentation ne "") { - if($argument_documentation !~ /^\/\*\s+\[(?:in|out|in\/out|\?\?\?)\].*?\*\/$/s) { + if($argument_documentation !~ /^\/\*\s+\[(?:in|out|in\/out|\?\?\?|I|O|I\/O)\].*?\*\/$/s) { $output->write("argument $n documentation: \\\n$argument_documentation\n"); } } diff --git a/tools/winapi_check/winapi_global.pm b/tools/winapi_check/winapi_global.pm index 130b426bbc5..7a8e82e1ecb 100644 --- a/tools/winapi_check/winapi_global.pm +++ b/tools/winapi_check/winapi_global.pm @@ -38,6 +38,7 @@ sub check_modules { if(!$winapi->is_module($module)) { next; } my $functions = $$module2functions{$module}; foreach my $internal_name ($winapi->all_internal_functions_in_module($module)) { + next if $internal_name =~ /\./; my $function = $functions->{$internal_name}; if(!defined($function) && !$nativeapi->is_function($internal_name) && !($module eq "user" && $internal_name =~ diff --git a/tools/winapi_check/winapi_parser.pm b/tools/winapi_check/winapi_parser.pm index 01962dd8420..202d816f5e1 100644 --- a/tools/winapi_check/winapi_parser.pm +++ b/tools/winapi_check/winapi_parser.pm @@ -221,7 +221,8 @@ sub parse_c_file { # remove preprocessor directives if(s/^\s*\#/\#/s) { - if(/^\#.*?\\$/s) { + if(/^(\#.*?)\\$/s) { + $_ = "$1\n"; $lookahead = 1; next; } elsif(s/^\#\s*(\w+)((?:\s+(.*?))?\s*)$//s) { @@ -533,7 +534,7 @@ sub parse_c_file { ((?:const\s+|enum\s+|long\s+|signed\s+|short\s+|struct\s+|union\s+|unsigned\s+)*?) (\w+) (?:\s+const)? - ((?:\s*\*+\s*|\s+)\w+\s*(?:\[[^\]]*\])? + ((?:\s*\*+\s*|\s+)\w+\s*(?:\[[^\]]*\])* (?:\s*,\s*(?:\s*\*+\s*|\s+)\w+\s*(?:\[[^\]]*\])?)*) \s*;/sx) {