diff --git a/reactos/dll/win32/shlwapi/assoc.c b/reactos/dll/win32/shlwapi/assoc.c index e3c3830a485..56db41e08ab 100644 --- a/reactos/dll/win32/shlwapi/assoc.c +++ b/reactos/dll/win32/shlwapi/assoc.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include +#include #include "windef.h" #include "winbase.h" @@ -26,6 +27,8 @@ #include "objbase.h" #include "shlguid.h" #include "shlwapi.h" +#include "winver.h" +#include "wine/unicode.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(shell); @@ -244,7 +247,7 @@ HRESULT WINAPI AssocQueryStringW(ASSOCF cfFlags, ASSOCSTR str, LPCWSTR pszAssoc, debugstr_w(pszExtra), pszOut, pcchOut); if (!pcchOut) - return E_INVALIDARG; + return E_UNEXPECTED; lpAssoc = IQueryAssociations_Constructor(); @@ -290,7 +293,7 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc, debugstr_a(pszExtra), pszOut, pcchOut); if (!pcchOut) - hRet = E_INVALIDARG; + hRet = E_UNEXPECTED; else if (SHLWAPI_ParamAToW(pszAssoc, szAssocW, MAX_PATH, &lpszAssocW) && SHLWAPI_ParamAToW(pszExtra, szExtraW, MAX_PATH, &lpszExtraW)) { @@ -300,6 +303,8 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc, if (dwLenOut >= MAX_PATH) lpszReturnW = HeapAlloc(GetProcessHeap(), 0, (dwLenOut + 1) * sizeof(WCHAR)); + else + dwLenOut = sizeof(szReturnW) / sizeof(szReturnW[0]); if (!lpszReturnW) hRet = E_OUTOFMEMORY; @@ -309,9 +314,10 @@ HRESULT WINAPI AssocQueryStringA(ASSOCF cfFlags, ASSOCSTR str, LPCSTR pszAssoc, lpszReturnW, &dwLenOut); if (SUCCEEDED(hRet)) - WideCharToMultiByte(CP_ACP,0,szReturnW,-1,pszOut,dwLenOut,0,0); - *pcchOut = dwLenOut; + dwLenOut = WideCharToMultiByte(CP_ACP, 0, lpszReturnW, -1, + pszOut, *pcchOut, NULL, NULL); + *pcchOut = dwLenOut; if (lpszReturnW != szReturnW) HeapFree(GetProcessHeap(), 0, lpszReturnW); } @@ -489,6 +495,8 @@ static ULONG WINAPI IQueryAssociations_fnRelease(IQueryAssociations *iface) if (!refCount) { TRACE("Destroying IQueryAssociations (%p)\n", This); + RegCloseKey(This->hkeySource); + RegCloseKey(This->hkeyProgID); HeapFree(GetProcessHeap(), 0, This); } @@ -520,7 +528,7 @@ static HRESULT WINAPI IQueryAssociations_fnInit( { static const WCHAR szProgID[] = {'P','r','o','g','I','D',0}; IQueryAssociationsImpl *This = (IQueryAssociationsImpl *)iface; - HRESULT hr; + LONG ret; TRACE("(%p)->(%d,%s,%p,%p)\n", iface, cfFlags, @@ -533,23 +541,21 @@ static HRESULT WINAPI IQueryAssociations_fnInit( FIXME("unsupported flags: %x\n", cfFlags); if (pszAssoc != NULL) { - hr = RegOpenKeyExW(HKEY_CLASSES_ROOT, - pszAssoc, - 0, - KEY_READ, - &This->hkeySource); - if (FAILED(hr)) - return HRESULT_FROM_WIN32(ERROR_NO_ASSOCIATION); + ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, + pszAssoc, + 0, + KEY_READ, + &This->hkeySource); + if (ret != ERROR_SUCCESS) + return E_FAIL; /* if this is not a prog id */ if ((*pszAssoc == '.') || (*pszAssoc == '{')) { - hr = RegOpenKeyExW(This->hkeySource, - szProgID, - 0, - KEY_READ, - &This->hkeyProgID); - if (FAILED(hr)) - FIXME("Don't know what to return\n"); + RegOpenKeyExW(This->hkeySource, + szProgID, + 0, + KEY_READ, + &This->hkeyProgID); } else This->hkeyProgID = This->hkeySource; @@ -561,7 +567,158 @@ static HRESULT WINAPI IQueryAssociations_fnInit( return S_OK; } else - return E_FAIL; + return E_INVALIDARG; +} + +static HRESULT ASSOC_GetValue(HKEY hkey, WCHAR ** pszText) +{ + DWORD len; + LONG ret; + + assert(pszText); + ret = RegQueryValueExW(hkey, NULL, 0, NULL, NULL, &len); + if (ret != ERROR_SUCCESS) + return HRESULT_FROM_WIN32(ret); + if (!len) + return E_FAIL; + *pszText = HeapAlloc(GetProcessHeap(), 0, len); + if (!*pszText) + return E_OUTOFMEMORY; + ret = RegQueryValueExW(hkey, NULL, 0, NULL, (LPBYTE)*pszText, + &len); + if (ret != ERROR_SUCCESS) + { + HeapFree(GetProcessHeap(), 0, *pszText); + return HRESULT_FROM_WIN32(ret); + } + return S_OK; +} + +static HRESULT ASSOC_GetExecutable(IQueryAssociationsImpl *This, + LPCWSTR pszExtra, LPWSTR path, + DWORD pathlen, DWORD *len) +{ + HKEY hkeyCommand; + HKEY hkeyFile; + HKEY hkeyShell; + HKEY hkeyVerb; + HRESULT hr; + LONG ret; + WCHAR * pszCommand; + WCHAR * pszEnd; + WCHAR * pszExtraFromReg = NULL; + WCHAR * pszFileType; + WCHAR * pszStart; + static const WCHAR commandW[] = { 'c','o','m','m','a','n','d',0 }; + static const WCHAR shellW[] = { 's','h','e','l','l',0 }; + + assert(len); + + hr = ASSOC_GetValue(This->hkeySource, &pszFileType); + if (FAILED(hr)) + return hr; + ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, pszFileType, 0, KEY_READ, &hkeyFile); + HeapFree(GetProcessHeap(), 0, pszFileType); + if (ret != ERROR_SUCCESS) + return HRESULT_FROM_WIN32(ret); + + ret = RegOpenKeyExW(hkeyFile, shellW, 0, KEY_READ, &hkeyShell); + RegCloseKey(hkeyFile); + if (ret != ERROR_SUCCESS) + return HRESULT_FROM_WIN32(ret); + + if (!pszExtra) + { + hr = ASSOC_GetValue(hkeyShell, &pszExtraFromReg); + /* if no default action */ + if (hr == E_FAIL || hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) + { + DWORD rlen; + ret = RegQueryInfoKeyW(hkeyShell, 0, 0, 0, 0, &rlen, 0, 0, 0, 0, 0, 0); + if (ret != ERROR_SUCCESS) + { + RegCloseKey(hkeyShell); + return HRESULT_FROM_WIN32(ret); + } + rlen++; + pszExtraFromReg = HeapAlloc(GetProcessHeap(), 0, rlen * sizeof(WCHAR)); + if (!pszExtraFromReg) + { + RegCloseKey(hkeyShell); + return E_OUTOFMEMORY; + } + ret = RegEnumKeyExW(hkeyShell, 0, pszExtraFromReg, &rlen, 0, NULL, NULL, NULL); + if (ret != ERROR_SUCCESS) + { + RegCloseKey(hkeyShell); + return HRESULT_FROM_WIN32(ret); + } + } + else if (FAILED(hr)) + { + RegCloseKey(hkeyShell); + return hr; + } + } + + ret = RegOpenKeyExW(hkeyShell, pszExtra ? pszExtra : pszExtraFromReg, 0, + KEY_READ, &hkeyVerb); + HeapFree(GetProcessHeap(), 0, pszExtraFromReg); + RegCloseKey(hkeyShell); + if (ret != ERROR_SUCCESS) + return HRESULT_FROM_WIN32(ret); + + ret = RegOpenKeyExW(hkeyVerb, commandW, 0, KEY_READ, &hkeyCommand); + RegCloseKey(hkeyVerb); + if (ret != ERROR_SUCCESS) + return HRESULT_FROM_WIN32(ret); + hr = ASSOC_GetValue(hkeyCommand, &pszCommand); + RegCloseKey(hkeyCommand); + if (FAILED(hr)) + return hr; + + /* cleanup pszCommand */ + if (pszCommand[0] == '"') + { + pszStart = pszCommand + 1; + pszEnd = strchrW(pszStart, '"'); + } + else + { + pszStart = pszCommand; + pszEnd = strchrW(pszStart, ' '); + } + if (pszEnd) + *pszEnd = 0; + + *len = SearchPathW(NULL, pszStart, NULL, pathlen, path, NULL); + HeapFree(GetProcessHeap(), 0, pszCommand); + if (!*len) + return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND); + return S_OK; +} + +static HRESULT ASSOC_ReturnData(LPWSTR out, DWORD *outlen, LPCWSTR data, + DWORD datalen) +{ + assert(outlen); + + if (out) + { + if (*outlen < datalen) + { + *outlen = datalen; + return E_POINTER; + } + *outlen = datalen; + lstrcpynW(out, data, datalen); + return S_OK; + } + else + { + *outlen = datalen; + return S_FALSE; + } } /************************************************************************** @@ -590,10 +747,88 @@ static HRESULT WINAPI IQueryAssociations_fnGetString( DWORD *pcchOut) { IQueryAssociationsImpl *This = (IQueryAssociationsImpl *)iface; + const ASSOCF cfUnimplemented = ~(0); + DWORD len = 0; + HRESULT hr; + WCHAR path[MAX_PATH]; - FIXME("(%p,0x%8x,0x%8x,%s,%p,%p)-stub!\n", This, cfFlags, str, + TRACE("(%p,0x%8x,0x%8x,%s,%p,%p)\n", This, cfFlags, str, debugstr_w(pszExtra), pszOut, pcchOut); - return E_NOTIMPL; + + if (cfFlags & cfUnimplemented) + FIXME("%08x: unimplemented flags!\n", cfFlags & cfUnimplemented); + + if (!pcchOut) + return E_UNEXPECTED; + + switch (str) + { + case ASSOCSTR_EXECUTABLE: + { + hr = ASSOC_GetExecutable(This, pszExtra, path, MAX_PATH, &len); + if (FAILED(hr)) + return hr; + len++; + return ASSOC_ReturnData(pszOut, pcchOut, path, len); + } + + case ASSOCSTR_FRIENDLYAPPNAME: + { + PVOID verinfoW = NULL; + DWORD size, retval = 0; + UINT flen; + WCHAR *bufW; + static const WCHAR translationW[] = { + '\\','V','a','r','F','i','l','e','I','n','f','o', + '\\','T','r','a','n','s','l','a','t','i','o','n',0 + }; + static const WCHAR fileDescFmtW[] = { + '\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o', + '\\','%','0','4','x','%','0','4','x', + '\\','F','i','l','e','D','e','s','c','r','i','p','t','i','o','n',0 + }; + WCHAR fileDescW[41]; + + hr = ASSOC_GetExecutable(This, pszExtra, path, MAX_PATH, &len); + if (FAILED(hr)) + return hr; + + retval = GetFileVersionInfoSizeW(path, &size); + if (!retval) + goto get_friendly_name_fail; + verinfoW = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, retval); + if (!verinfoW) + return E_OUTOFMEMORY; + if (!GetFileVersionInfoW(path, 0, retval, verinfoW)) + goto get_friendly_name_fail; + if (VerQueryValueW(verinfoW, translationW, (LPVOID *)&bufW, &flen)) + { + UINT i; + DWORD *langCodeDesc = (DWORD *)bufW; + for (i = 0; i < flen / sizeof(DWORD); i++) + { + sprintfW(fileDescW, fileDescFmtW, LOWORD(langCodeDesc[i]), + HIWORD(langCodeDesc[i])); + if (VerQueryValueW(verinfoW, fileDescW, (LPVOID *)&bufW, &flen)) + { + /* Does strlenW(bufW) == 0 mean we use the filename? */ + len = strlenW(bufW) + 1; + TRACE("found FileDescription: %s\n", debugstr_w(bufW)); + return ASSOC_ReturnData(pszOut, pcchOut, bufW, len); + } + } + } +get_friendly_name_fail: + PathRemoveExtensionW(path); + PathStripPathW(path); + TRACE("using filename: %s\n", debugstr_w(path)); + return ASSOC_ReturnData(pszOut, pcchOut, path, strlenW(path) + 1); + } + + default: + FIXME("assocstr %d unimplemented!\n", str); + return E_NOTIMPL; + } } /************************************************************************** diff --git a/reactos/dll/win32/shlwapi/clist.c b/reactos/dll/win32/shlwapi/clist.c index 2fa53cd67ab..52bee37c9e4 100644 --- a/reactos/dll/win32/shlwapi/clist.c +++ b/reactos/dll/win32/shlwapi/clist.c @@ -91,8 +91,7 @@ HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewIt if(!*lppList) { /* An empty list. Allocate space for terminal ulSize also */ - *lppList = (LPDATABLOCK_HEADER)LocalAlloc(LMEM_ZEROINIT, - ulSize + sizeof(ULONG)); + *lppList = LocalAlloc(LMEM_ZEROINIT, ulSize + sizeof(ULONG)); lpInsertAt = *lppList; } else @@ -109,8 +108,7 @@ HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewIt } /* Increase the size of the list */ - lpIter = (LPDATABLOCK_HEADER)LocalReAlloc((HLOCAL)*lppList, - ulTotalSize + ulSize+sizeof(ULONG), + lpIter = LocalReAlloc(*lppList, ulTotalSize + ulSize+sizeof(ULONG), LMEM_ZEROINIT | LMEM_MOVEABLE); if(lpIter) { @@ -247,7 +245,7 @@ HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList) if(*lppList) { /* Free any existing list */ - LocalFree((HLOCAL)*lppList); + LocalFree(*lppList); *lppList = NULL; } @@ -283,10 +281,9 @@ HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList) LPDATABLOCK_HEADER lpTemp; if (pItem == bBuff) - lpTemp = (LPDATABLOCK_HEADER)LocalAlloc(LMEM_ZEROINIT, ulSize); + lpTemp = LocalAlloc(LMEM_ZEROINIT, ulSize); else - lpTemp = (LPDATABLOCK_HEADER)LocalReAlloc((HLOCAL)pItem, ulSize, - LMEM_ZEROINIT|LMEM_MOVEABLE); + lpTemp = LocalReAlloc(pItem, ulSize, LMEM_ZEROINIT|LMEM_MOVEABLE); if(!lpTemp) { @@ -312,7 +309,7 @@ HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList) /* If we allocated space, free it */ if(pItem != bBuff) - LocalFree((HLOCAL)pItem); + LocalFree(pItem); return hRet; } @@ -336,7 +333,7 @@ VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList) TRACE("(%p)\n", lpList); if (lpList) - LocalFree((HLOCAL)lpList); + LocalFree(lpList); } /************************************************************************* @@ -389,20 +386,19 @@ BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature) lpList = NextItem(lpList); /* Resize the list */ - ulNewSize = LocalSize((HLOCAL)*lppList) - lpItem->cbSize; + ulNewSize = LocalSize(*lppList) - lpItem->cbSize; /* Copy following elements over lpItem */ memmove(lpItem, lpNext, (char *)lpList - (char *)lpNext + sizeof(ULONG)); if(ulNewSize <= sizeof(ULONG)) { - LocalFree((HLOCAL)*lppList); + LocalFree(*lppList); *lppList = NULL; /* Removed the last element */ } else { - lpList = (LPDATABLOCK_HEADER)LocalReAlloc((HLOCAL)*lppList, ulNewSize, - LMEM_ZEROINIT|LMEM_MOVEABLE); + lpList = LocalReAlloc(*lppList, ulNewSize, LMEM_ZEROINIT|LMEM_MOVEABLE); if(lpList) *lppList = lpList; } diff --git a/reactos/dll/win32/shlwapi/istream.c b/reactos/dll/win32/shlwapi/istream.c index c5c8c06b158..1d11c373117 100644 --- a/reactos/dll/win32/shlwapi/istream.c +++ b/reactos/dll/win32/shlwapi/istream.c @@ -101,7 +101,7 @@ static ULONG WINAPI IStream_fnRelease(IStream *iface) if (!refCount) { IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */ - LocalFree((HLOCAL)This->lpszPath); + LocalFree(This->lpszPath); CloseHandle(This->hFile); HeapFree(GetProcessHeap(), 0, This); } diff --git a/reactos/dll/win32/shlwapi/ordinal.c b/reactos/dll/win32/shlwapi/ordinal.c index b7be1f1ffbd..932f54f93d6 100644 --- a/reactos/dll/win32/shlwapi/ordinal.c +++ b/reactos/dll/win32/shlwapi/ordinal.c @@ -2,7 +2,7 @@ * SHLWAPI ordinal functions * * Copyright 1997 Marcus Meissner - * 1998 Jürgen Schmied + * 1998 Jürgen Schmied * 2001-2003 Jon Griffiths * * This library is free software; you can redistribute it and/or @@ -76,10 +76,9 @@ BOOL WINAPI SHAboutInfoW(LPWSTR,DWORD); * * Internal implemetation of SHLWAPI_11. */ -static -HANDLE WINAPI SHLWAPI_DupSharedHandle(HANDLE hShared, DWORD dwDstProcId, - DWORD dwSrcProcId, DWORD dwAccess, - DWORD dwOptions) +static HANDLE SHLWAPI_DupSharedHandle(HANDLE hShared, DWORD dwDstProcId, + DWORD dwSrcProcId, DWORD dwAccess, + DWORD dwOptions) { HANDLE hDst, hSrc; DWORD dwMyProcId = GetCurrentProcessId(); @@ -1251,11 +1250,11 @@ BOOL WINAPI SHIsSameObject(IUnknown* lpInt1, IUnknown* lpInt2) if (lpInt1 == lpInt2) return TRUE; - if (!SUCCEEDED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown, + if (FAILED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown, (LPVOID *)&lpUnknown1))) return FALSE; - if (!SUCCEEDED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown, + if (FAILED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown, (LPVOID *)&lpUnknown2))) return FALSE; @@ -2260,6 +2259,25 @@ HRESULT WINAPI QISearch( return ret; } +/************************************************************************* + * @ [SHLWAPI.220] + * + * Set the Font for a window and the "PropDlgFont" property of the parent window. + * + * PARAMS + * hWnd [I] Parent Window to set the property + * id [I] Index of child Window to set the Font + * + * RETURNS + * Success: S_OK + * + */ +HRESULT WINAPI SHSetDefaultDialogFont(HWND hWnd, INT id) +{ + FIXME("(%p, %d) stub\n", hWnd, id); + return S_OK; +} + /************************************************************************* * @ [SHLWAPI.221] * @@ -2798,7 +2816,7 @@ HRESULT WINAPI SHInvokeDefaultCommand(HWND hWnd, IShellFolder* lpFolder, LPCITEM * * _SHPackDispParamsV */ -HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt, va_list valist) +HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt, __ms_va_list valist) { VARIANTARG *iter; @@ -2852,14 +2870,12 @@ HRESULT WINAPI SHPackDispParamsV(DISPPARAMS *params, VARIANTARG *args, UINT cnt, */ HRESULT WINAPIV SHPackDispParams(DISPPARAMS *params, VARIANTARG *args, UINT cnt, ...) { - va_list valist; + __ms_va_list valist; HRESULT hres; - va_start(valist, cnt); - + __ms_va_start(valist, cnt); hres = SHPackDispParamsV(params, args, cnt, valist); - - va_end(valist); + __ms_va_end(valist); return hres; } @@ -2985,7 +3001,7 @@ HRESULT WINAPIV IUnknown_CPContainerInvokeParam( IConnectionPoint *iCP; IConnectionPointContainer *iCPC; DISPPARAMS dispParams = {buffer, NULL, cParams, 0}; - va_list valist; + __ms_va_list valist; if (!container) return E_NOINTERFACE; @@ -2999,9 +3015,9 @@ HRESULT WINAPIV IUnknown_CPContainerInvokeParam( if(FAILED(result)) return result; - va_start(valist, cParams); + __ms_va_start(valist, cParams); SHPackDispParamsV(&dispParams, buffer, cParams, valist); - va_end(valist); + __ms_va_end(valist); result = SHLWAPI_InvokeByIID(iCP, riid, dispId, &dispParams); IConnectionPoint_Release(iCP); @@ -3527,7 +3543,7 @@ HRESULT WINAPI SHIShellFolder_EnumObjects(LPSHELLFOLDER lpFolder, HWND hwnd, SHC } /* INTERNAL: Map from HLS color space to RGB */ -static WORD WINAPI ConvertHue(int wHue, WORD wMid1, WORD wMid2) +static WORD ConvertHue(int wHue, WORD wMid1, WORD wMid2) { wHue = wHue > 240 ? wHue - 240 : wHue < 0 ? wHue + 240 : wHue; @@ -3672,10 +3688,34 @@ DWORD WINAPI MLClearMLHInstance(DWORD x) return 0xabba1247; } +/************************************************************************* + * @ [SHLWAPI.432] + * + * See SHSendMessageBroadcastW + * + */ +DWORD WINAPI SHSendMessageBroadcastA(UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + return SendMessageTimeoutA(HWND_BROADCAST, uMsg, wParam, lParam, + SMTO_ABORTIFHUNG, 2000, NULL); +} + +/************************************************************************* + * @ [SHLWAPI.433] + * + * A wrapper for sending Broadcast Messages to all top level Windows + * + */ +DWORD WINAPI SHSendMessageBroadcastW(UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + return SendMessageTimeoutW(HWND_BROADCAST, uMsg, wParam, lParam, + SMTO_ABORTIFHUNG, 2000, NULL); +} + /************************************************************************* * @ [SHLWAPI.436] * - * Convert an Unicode string CLSID into a CLSID. + * Convert a Unicode string CLSID into a CLSID. * * PARAMS * idstr [I] string containing a CLSID in text form @@ -4269,10 +4309,10 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, WCHAR szText[100], szTitle[100]; LPCWSTR pszText = szText, pszTitle = szTitle; LPWSTR pszTemp; - va_list args; + __ms_va_list args; int ret; - va_start(args, uType); + __ms_va_start(args, uType); TRACE("(%p,%p,%p,%p,%08x)\n", hInstance, hWnd, lpText, lpCaption, uType); @@ -4289,10 +4329,10 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, pszText, 0, 0, (LPWSTR)&pszTemp, 0, &args); - va_end(args); + __ms_va_end(args); ret = MessageBoxW(hWnd, pszTemp, pszTitle, uType); - LocalFree((HLOCAL)pszTemp); + LocalFree(pszTemp); return ret; } diff --git a/reactos/dll/win32/shlwapi/path.c b/reactos/dll/win32/shlwapi/path.c index e06e027aa25..5e95d5c2d78 100644 --- a/reactos/dll/win32/shlwapi/path.c +++ b/reactos/dll/win32/shlwapi/path.c @@ -1156,7 +1156,7 @@ BOOL WINAPI PathFileExistsDefExtA(LPSTR lpszPath,DWORD dwWhich) * * Internal helper for SHLWAPI_PathFindOnPathExA/W. */ -static BOOL WINAPI SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich) +static BOOL SHLWAPI_PathFindInOtherDirs(LPWSTR lpszFile, DWORD dwWhich) { static const WCHAR szSystem[] = { 'S','y','s','t','e','m','\0'}; static const WCHAR szPath[] = { 'P','A','T','H','\0'}; @@ -1792,7 +1792,7 @@ BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr) /************************************************************************* * PathMatchSingleMaskA [internal] */ -static BOOL WINAPI PathMatchSingleMaskA(LPCSTR name, LPCSTR mask) +static BOOL PathMatchSingleMaskA(LPCSTR name, LPCSTR mask) { while (*name && *mask && *mask!=';') { @@ -1826,7 +1826,7 @@ static BOOL WINAPI PathMatchSingleMaskA(LPCSTR name, LPCSTR mask) /************************************************************************* * PathMatchSingleMaskW [internal] */ -static BOOL WINAPI PathMatchSingleMaskW(LPCWSTR name, LPCWSTR mask) +static BOOL PathMatchSingleMaskW(LPCWSTR name, LPCWSTR mask) { while (*name && *mask && *mask != ';') { @@ -2991,7 +2991,7 @@ UINT WINAPI PathGetCharTypeW(WCHAR ch) * * Internal helper for PathMakeSystemFolderW. */ -static BOOL WINAPI SHLWAPI_UseSystemForSystemFolders(void) +static BOOL SHLWAPI_UseSystemForSystemFolders(void) { static BOOL bCheckedReg = FALSE; static BOOL bUseSystemForSystemFolders = FALSE; diff --git a/reactos/dll/win32/shlwapi/reg.c b/reactos/dll/win32/shlwapi/reg.c index 9239824b1a5..70a5e142578 100644 --- a/reactos/dll/win32/shlwapi/reg.c +++ b/reactos/dll/win32/shlwapi/reg.c @@ -66,10 +66,10 @@ HRESULT WINAPI SHRegGetCLSIDKeyW(REFGUID,LPCWSTR,BOOL,BOOL,PHKEY); * Function: Return the proper registry key from the HUSKEY structure * also allow special predefined values. */ -static HKEY WINAPI REG_GetHKEYFromHUSKEY(HUSKEY hUSKey, BOOL which) +static HKEY REG_GetHKEYFromHUSKEY(HUSKEY hUSKey, BOOL which) { - HKEY test = (HKEY) hUSKey; - LPSHUSKEY mihk = (LPSHUSKEY) hUSKey; + HKEY test = hUSKey; + LPSHUSKEY mihk = hUSKey; if ((test == HKEY_CLASSES_ROOT) || (test == HKEY_CURRENT_CONFIG) || @@ -174,7 +174,7 @@ LONG WINAPI SHRegOpenUSKeyW(LPCWSTR Path, REGSAM AccessType, HUSKEY hRelativeUSK TRACE("HUSKEY=%p\n", hKey); if (phNewUSKey) - *phNewUSKey = (HUSKEY)hKey; + *phNewUSKey = hKey; return ERROR_SUCCESS; } @@ -1398,21 +1398,21 @@ DWORD WINAPI SHQueryValueExA( HKEY hKey, LPCSTR lpszValue, char cNull = '\0'; nBytesToAlloc = dwUnExpDataLen; - szData = (LPSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc); + szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc); RegQueryValueExA (hKey, lpszValue, lpReserved, NULL, (LPBYTE)szData, &nBytesToAlloc); dwExpDataLen = ExpandEnvironmentStringsA(szData, &cNull, 1); dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen); - LocalFree((HLOCAL) szData); + LocalFree(szData); } else { nBytesToAlloc = (lstrlenA(pvData)+1) * sizeof (CHAR); - szData = (LPSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc ); + szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc); lstrcpyA(szData, pvData); dwExpDataLen = ExpandEnvironmentStringsA(szData, pvData, *pcbData / sizeof(CHAR)); if (dwExpDataLen > *pcbData) dwRet = ERROR_MORE_DATA; dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen); - LocalFree((HLOCAL) szData); + LocalFree(szData); } } @@ -1459,21 +1459,21 @@ DWORD WINAPI SHQueryValueExW(HKEY hKey, LPCWSTR lpszValue, WCHAR cNull = '\0'; nBytesToAlloc = dwUnExpDataLen; - szData = (LPWSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc); + szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc); RegQueryValueExW (hKey, lpszValue, lpReserved, NULL, (LPBYTE)szData, &nBytesToAlloc); dwExpDataLen = ExpandEnvironmentStringsW(szData, &cNull, 1); dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen); - LocalFree((HLOCAL) szData); + LocalFree(szData); } else { nBytesToAlloc = (lstrlenW(pvData) + 1) * sizeof(WCHAR); - szData = (LPWSTR) LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc ); + szData = LocalAlloc(LMEM_ZEROINIT, nBytesToAlloc); lstrcpyW(szData, pvData); dwExpDataLen = ExpandEnvironmentStringsW(szData, pvData, *pcbData/sizeof(WCHAR) ); if (dwExpDataLen > *pcbData) dwRet = ERROR_MORE_DATA; dwUnExpDataLen = max(nBytesToAlloc, dwExpDataLen); - LocalFree((HLOCAL) szData); + LocalFree(szData); } } diff --git a/reactos/dll/win32/shlwapi/shlwapi.spec b/reactos/dll/win32/shlwapi/shlwapi.spec index 0e63e9f0c1f..0b1cd4c569d 100644 --- a/reactos/dll/win32/shlwapi/shlwapi.spec +++ b/reactos/dll/win32/shlwapi/shlwapi.spec @@ -217,7 +217,7 @@ 217 stdcall -noname SHUnicodeToAnsi(wstr ptr ptr) 218 stdcall -noname SHUnicodeToAnsiCP(long wstr ptr ptr) 219 stdcall -noname QISearch(long long long long) -220 stub -noname SHSetDefaultDialogFont +220 stdcall -noname SHSetDefaultDialogFont(ptr long) 221 stdcall -noname SHRemoveDefaultDialogFont(ptr) 222 stdcall -noname SHGlobalCounterCreate(long) 223 stdcall -noname SHGlobalCounterGetValue(long) @@ -429,8 +429,8 @@ 429 stdcall -noname MLIsMLHInstance(long) 430 stdcall -noname MLSetMLHInstance(long long) 431 stdcall -noname MLClearMLHInstance(long) -432 stub -noname SHSendMessageBroadcastA -433 stub -noname SHSendMessageBroadcastW +432 stdcall -noname SHSendMessageBroadcastA(long long long) +433 stdcall -noname SHSendMessageBroadcastW(long long long) 434 stdcall -noname SendMessageTimeoutWrapW(long long long long long long ptr) user32.SendMessageTimeoutW 435 stdcall -noname CLSIDFromProgIDWrap(wstr ptr) ole32.CLSIDFromProgID 436 stdcall -noname CLSIDFromStringWrap(wstr ptr) diff --git a/reactos/dll/win32/shlwapi/shlwapi_Ja.rc b/reactos/dll/win32/shlwapi/shlwapi_Ja.rc index dbcc44123ce..accd716df23 100644 --- a/reactos/dll/win32/shlwapi/shlwapi_Ja.rc +++ b/reactos/dll/win32/shlwapi/shlwapi_Ja.rc @@ -18,20 +18,23 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +/* UTF-8 */ +#pragma code_page(65001) + LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "ƒGƒ‰[!" -FONT 9, "MS UI Gothic" +CAPTION "エラー!" +FONT 9, "MS Shell Dlg" { LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 - CHECKBOX "¡Œã‚Í‚±‚̃ƒbƒZ[ƒW‚ð•\ަ‚µ‚È‚¢(&i)", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "今後ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ãªã„(&i)", IDC_ERR_DONT_SHOW, 5, 20, 210, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP PUSHBUTTON L"&OK" IDOK, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON L"ƒLƒƒƒ“ƒZƒ‹(&C)" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON L"‚Í‚¢(&Y)" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON L"‚¢‚¢‚¦(&N)" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"キャンセル(&C)" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"ã¯ã„(&Y)" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"ã„ã„ãˆ(&N)" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP } STRINGTABLE DISCARDABLE @@ -41,3 +44,5 @@ STRINGTABLE DISCARDABLE IDS_TIME_INTERVAL_MINUTES " min" IDS_TIME_INTERVAL_SECONDS " sec" } + +#pragma code_page(default) diff --git a/reactos/dll/win32/shlwapi/shlwapi_Ko.rc b/reactos/dll/win32/shlwapi/shlwapi_Ko.rc index 9b5c062152a..8a44a6610f5 100644 --- a/reactos/dll/win32/shlwapi/shlwapi_Ko.rc +++ b/reactos/dll/win32/shlwapi/shlwapi_Ko.rc @@ -18,12 +18,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL +LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "¿¡·¯!" -FONT 8, "MS Shell Dlg" +FONT 9, "MS Shell Dlg" { LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 diff --git a/reactos/dll/win32/shlwapi/shlwapi_Zh.rc b/reactos/dll/win32/shlwapi/shlwapi_Zh.rc index b5f03a14324..842bb15f8cc 100644 --- a/reactos/dll/win32/shlwapi/shlwapi_Zh.rc +++ b/reactos/dll/win32/shlwapi/shlwapi_Zh.rc @@ -26,7 +26,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "错误!" -FONT 9, "MS Song" +FONT 9, "MS Shell Dlg" { LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 @@ -50,7 +50,7 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "錯誤!" -FONT 8, "PMingLiu" +FONT 9, "MS Shell Dlg" { LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 diff --git a/reactos/dll/win32/shlwapi/string.c b/reactos/dll/win32/shlwapi/string.c index 89cf5efc237..bc961dadb8c 100644 --- a/reactos/dll/win32/shlwapi/string.c +++ b/reactos/dll/win32/shlwapi/string.c @@ -911,7 +911,7 @@ LPSTR WINAPI StrDupA(LPCSTR lpszStr) TRACE("(%s)\n",debugstr_a(lpszStr)); iLen = lpszStr ? strlen(lpszStr) + 1 : 1; - lpszRet = (LPSTR)LocalAlloc(LMEM_FIXED, iLen); + lpszRet = LocalAlloc(LMEM_FIXED, iLen); if (lpszRet) { @@ -936,7 +936,7 @@ LPWSTR WINAPI StrDupW(LPCWSTR lpszStr) TRACE("(%s)\n",debugstr_w(lpszStr)); iLen = (lpszStr ? strlenW(lpszStr) + 1 : 1) * sizeof(WCHAR); - lpszRet = (LPWSTR)LocalAlloc(LMEM_FIXED, iLen); + lpszRet = LocalAlloc(LMEM_FIXED, iLen); if (lpszRet) { diff --git a/reactos/dll/win32/shlwapi/thread.c b/reactos/dll/win32/shlwapi/thread.c index 9aa56b50f5a..cfe6615cd69 100644 --- a/reactos/dll/win32/shlwapi/thread.c +++ b/reactos/dll/win32/shlwapi/thread.c @@ -140,7 +140,7 @@ HRESULT WINAPI SHGetThreadRef(IUnknown **lppUnknown) if (!lppUnknown || SHLWAPI_ThreadRef_index == TLS_OUT_OF_INDEXES) return E_NOINTERFACE; - *lppUnknown = (IUnknown*)TlsGetValue(SHLWAPI_ThreadRef_index); + *lppUnknown = TlsGetValue(SHLWAPI_ThreadRef_index); if (!*lppUnknown) return E_NOINTERFACE; diff --git a/reactos/dll/win32/shlwapi/url.c b/reactos/dll/win32/shlwapi/url.c index febf6a790f1..4a39726159d 100644 --- a/reactos/dll/win32/shlwapi/url.c +++ b/reactos/dll/win32/shlwapi/url.c @@ -118,7 +118,7 @@ static const unsigned char HashDataLookup[256] = { static DWORD get_scheme_code(LPCWSTR scheme, DWORD scheme_len) { - int i; + unsigned int i; for(i=0; i < sizeof(shlwapi_schemes)/sizeof(shlwapi_schemes[0]); i++) { if(scheme_len == strlenW(shlwapi_schemes[i].scheme_name) @@ -314,8 +314,8 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, HRESULT hr = S_OK; DWORD EscapeFlags; LPWSTR lpszUrlCpy, wk1, wk2, mp, mp2, root; - INT nByteLen, state; - DWORD nLen, nWkLen; + INT state; + DWORD nByteLen, nLen, nWkLen; WCHAR slash = '/'; static const WCHAR wszFile[] = {'f','i','l','e',':'}; @@ -332,7 +332,7 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, return S_OK; } - nByteLen = (lstrlenW(pszUrl) + 1) * sizeof(WCHAR); /* length in bytes */ + nByteLen = (strlenW(pszUrl) + 1) * sizeof(WCHAR); /* length in bytes */ lpszUrlCpy = HeapAlloc(GetProcessHeap(), 0, INTERNET_MAX_URL_LENGTH * sizeof(WCHAR)); @@ -1589,7 +1589,7 @@ static HRESULT URL_GuessScheme(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut) index++; } RegCloseKey(newkey); - return -1; + return E_FAIL; } static HRESULT URL_ApplyDefault(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut) @@ -1652,7 +1652,7 @@ HRESULT WINAPI UrlApplySchemeW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut, DW if (res1) { /* no scheme in input, need to see if we need to guess */ if (dwFlags & URL_APPLY_GUESSSCHEME) { - if ((ret = URL_GuessScheme(pszIn, pszOut, pcchOut)) != -1) + if ((ret = URL_GuessScheme(pszIn, pszOut, pcchOut)) != E_FAIL) return ret; } } diff --git a/reactos/dll/win32/shlwapi/wsprintf.c b/reactos/dll/win32/shlwapi/wsprintf.c index d10881f02df..26bca5d68d6 100644 --- a/reactos/dll/win32/shlwapi/wsprintf.c +++ b/reactos/dll/win32/shlwapi/wsprintf.c @@ -284,7 +284,7 @@ static UINT WPRINTF_GetLen( WPRINTF_FORMAT *format, WPRINTF_DATA *arg, * Success: The number of characters written. * Failure: -1. */ -INT WINAPI wvnsprintfA( LPSTR buffer, INT maxlen, LPCSTR spec, va_list args ) +INT WINAPI wvnsprintfA( LPSTR buffer, INT maxlen, LPCSTR spec, __ms_va_list args ) { WPRINTF_FORMAT format; LPSTR p = buffer; @@ -389,7 +389,7 @@ INT WINAPI wvnsprintfA( LPSTR buffer, INT maxlen, LPCSTR spec, va_list args ) * * See wvnsprintfA. */ -INT WINAPI wvnsprintfW( LPWSTR buffer, INT maxlen, LPCWSTR spec, va_list args ) +INT WINAPI wvnsprintfW( LPWSTR buffer, INT maxlen, LPCWSTR spec, __ms_va_list args ) { WPRINTF_FORMAT format; LPWSTR p = buffer; @@ -504,12 +504,12 @@ INT WINAPI wvnsprintfW( LPWSTR buffer, INT maxlen, LPCWSTR spec, va_list args ) */ int WINAPIV wnsprintfA(LPSTR lpOut, int cchLimitIn, LPCSTR lpFmt, ...) { - va_list valist; + __ms_va_list valist; INT res; - va_start( valist, lpFmt ); + __ms_va_start( valist, lpFmt ); res = wvnsprintfA( lpOut, cchLimitIn, lpFmt, valist ); - va_end( valist ); + __ms_va_end( valist ); return res; } @@ -521,11 +521,11 @@ int WINAPIV wnsprintfA(LPSTR lpOut, int cchLimitIn, LPCSTR lpFmt, ...) */ int WINAPIV wnsprintfW(LPWSTR lpOut, int cchLimitIn, LPCWSTR lpFmt, ...) { - va_list valist; + __ms_va_list valist; INT res; - va_start( valist, lpFmt ); + __ms_va_start( valist, lpFmt ); res = wvnsprintfW( lpOut, cchLimitIn, lpFmt, valist ); - va_end( valist ); + __ms_va_end( valist ); return res; } diff --git a/reactos/include/psdk/shlwapi.h b/reactos/include/psdk/shlwapi.h index c3a823fa69f..7863a23ab2b 100644 --- a/reactos/include/psdk/shlwapi.h +++ b/reactos/include/psdk/shlwapi.h @@ -83,10 +83,10 @@ DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD); DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD); #define SHCopyKey WINELIB_NAME_AW(SHCopyKey) -/* Undocumented registry functions */ - HKEY WINAPI SHRegDuplicateHKey(HKEY); +/* Undocumented registry functions */ + DWORD WINAPI SHDeleteOrphanKeyA(HKEY,LPCSTR); DWORD WINAPI SHDeleteOrphanKeyW(HKEY,LPCWSTR); #define SHDeleteOrphanKey WINELIB_NAME_AW(SHDeleteOrphanKey) @@ -193,6 +193,7 @@ enum ASSOCF_REMAPRUNDLL = 0x080, /* Get rundll args */ ASSOCF_NOFIXUPS = 0x100, /* Don't fixup errors */ ASSOCF_IGNOREBASECLASS = 0x200, /* Don't read baseclass */ + ASSOCF_INIT_IGNOREUNKNOWN = 0x400, /* Fail for unknown progid */ }; typedef DWORD ASSOCF; @@ -245,9 +246,7 @@ typedef enum typedef struct IQueryAssociations *LPQUERYASSOCIATIONS; -#ifndef INTERFACE #define INTERFACE IQueryAssociations -#endif DECLARE_INTERFACE_(IQueryAssociations,IUnknown) { /*** IUnknown methods ***/ @@ -341,7 +340,7 @@ int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR); HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved); HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved); -#define PathCreateFromUrl WINELIB_NANE_AW(PathCreateFromUrl) +#define PathCreateFromUrl WINELIB_NAME_AW(PathCreateFromUrl) BOOL WINAPI PathFileExistsA(LPCSTR); BOOL WINAPI PathFileExistsW(LPCWSTR); @@ -668,17 +667,17 @@ BOOL WINAPI UrlIsOpaqueW(LPCWSTR); HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD); HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD); -#define UrlUnescape WINELIB_AW_NAME(UrlUnescape) +#define UrlUnescape WINELIB_NAME_AW(UrlUnescape) #define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \ y | URL_UNESCAPE_INPLACE) #define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \ y | URL_UNESCAPE_INPLACE) -#define UrlUnescapeInPlace WINELIB_AW_NAME(UrlUnescapeInPlace) +#define UrlUnescapeInPlace WINELIB_NAME_AW(UrlUnescapeInPlace) HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD); HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD); -#define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath) +#define UrlCreateFromPath WINELIB_NAME_AW(UrlCreateFromPath) typedef struct tagPARSEDURLA { DWORD cbSize; @@ -700,7 +699,7 @@ typedef struct tagPARSEDURLW { HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu); HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu); -#define ParseURL WINELIB_AW_NAME(ParseUrl) +#define ParseURL WINELIB_NAME_AW(ParseUrl) #endif /* NO_SHLWAPI_PATH */ @@ -784,7 +783,7 @@ LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT); /* A/W Pairing is broken for this function */ LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT); LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT); -#ifndef __WINESRC__ +#ifndef WINE_NO_UNICODE_MACROS #ifdef UNICODE #define StrFormatByteSize StrFormatByteSizeW #else @@ -860,8 +859,8 @@ BOOL WINAPI StrTrimA(LPSTR,LPCSTR); BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR); #define StrTrim WINELIB_NAME_AW(StrTrim) -INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list); -INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list); +INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,__ms_va_list); +INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,__ms_va_list); #define wvnsprintf WINELIB_NAME_AW(wvnsprintf) INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...); @@ -1065,7 +1064,7 @@ BOOL WINAPI IsOS(DWORD); #define TPS_EXECUTEIO 0x00000001 #define TPS_LONGEXECTIME 0x00000008 -#include +#include #ifdef __cplusplus } /* extern "C" */ diff --git a/reactos/include/psdk/windef.h b/reactos/include/psdk/windef.h index e7c720e4e83..4c9737cea08 100644 --- a/reactos/include/psdk/windef.h +++ b/reactos/include/psdk/windef.h @@ -300,6 +300,18 @@ typedef unsigned int UINT,*PUINT,*LPUINT; typedef void *LPVOID; +#ifndef __ms_va_list +# if defined(__x86_64__) && defined (__GNUC__) +# define __ms_va_list __builtin_ms_va_list +# define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg) +# define __ms_va_end(list) __builtin_ms_va_end(list) +# else +# define __ms_va_list va_list +# define __ms_va_start(list,arg) va_start(list,arg) +# define __ms_va_end(list) va_end(list) +# endif +#endif + // // Check if ntdef.h already defined these for us //