Author: cwittich Date: Sat Jan 31 08:48:46 2009 New Revision: 39238
URL: http://svn.reactos.org/svn/reactos?rev=39238&view=rev Log: sync shlwapi with wine 1.1.14
Added: trunk/reactos/dll/win32/shlwapi/shlwapi_Sk.rc (with props) Modified: trunk/reactos/dll/win32/shlwapi/assoc.c trunk/reactos/dll/win32/shlwapi/msgbox.c trunk/reactos/dll/win32/shlwapi/ordinal.c trunk/reactos/dll/win32/shlwapi/reg.c trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild trunk/reactos/dll/win32/shlwapi/shlwapi.rc trunk/reactos/dll/win32/shlwapi/string.c
Modified: trunk/reactos/dll/win32/shlwapi/assoc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/assoc.c?r... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/assoc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/assoc.c [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -455,7 +455,7 @@ if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IQueryAssociations)) { - *ppvObj = (IQueryAssociations*)This; + *ppvObj = This;
IQueryAssociations_AddRef((IQueryAssociations*)*ppvObj); TRACE("Returning IQueryAssociations (%p)\n", *ppvObj); @@ -594,9 +594,8 @@ return S_OK; }
-static HRESULT ASSOC_GetExecutable(IQueryAssociationsImpl *This, - LPCWSTR pszExtra, LPWSTR path, - DWORD pathlen, DWORD *len) +static HRESULT ASSOC_GetCommand(IQueryAssociationsImpl *This, + LPCWSTR pszExtra, WCHAR **ppszCommand) { HKEY hkeyCommand; HKEY hkeyFile; @@ -604,15 +603,10 @@ 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)) @@ -672,8 +666,23 @@ RegCloseKey(hkeyVerb); if (ret != ERROR_SUCCESS) return HRESULT_FROM_WIN32(ret); - hr = ASSOC_GetValue(hkeyCommand, &pszCommand); + hr = ASSOC_GetValue(hkeyCommand, ppszCommand); RegCloseKey(hkeyCommand); + return hr; +} + +static HRESULT ASSOC_GetExecutable(IQueryAssociationsImpl *This, + LPCWSTR pszExtra, LPWSTR path, + DWORD pathlen, DWORD *len) +{ + WCHAR *pszCommand; + WCHAR *pszStart; + WCHAR *pszEnd; + HRESULT hr; + + assert(len); + + hr = ASSOC_GetCommand(This, pszExtra, &pszCommand); if (FAILED(hr)) return hr;
@@ -763,6 +772,18 @@
switch (str) { + case ASSOCSTR_COMMAND: + { + WCHAR *command; + hr = ASSOC_GetCommand(This, pszExtra, &command); + if (SUCCEEDED(hr)) + { + hr = ASSOC_ReturnData(pszOut, pcchOut, command, strlenW(command) + 1); + HeapFree(GetProcessHeap(), 0, command); + } + return hr; + } + case ASSOCSTR_EXECUTABLE: { hr = ASSOC_GetExecutable(This, pszExtra, path, MAX_PATH, &len); @@ -770,6 +791,38 @@ return hr; len++; return ASSOC_ReturnData(pszOut, pcchOut, path, len); + } + + case ASSOCSTR_FRIENDLYDOCNAME: + { + WCHAR *pszFileType; + DWORD ret; + DWORD size; + + hr = ASSOC_GetValue(This->hkeySource, &pszFileType); + if (FAILED(hr)) + return hr; + size = 0; + ret = RegGetValueW(HKEY_CLASSES_ROOT, pszFileType, NULL, RRF_RT_REG_SZ, NULL, NULL, &size); + if (ret == ERROR_SUCCESS) + { + WCHAR *docName = HeapAlloc(GetProcessHeap(), 0, size); + if (docName) + { + ret = RegGetValueW(HKEY_CLASSES_ROOT, pszFileType, NULL, RRF_RT_REG_SZ, NULL, docName, &size); + if (ret == ERROR_SUCCESS) + hr = ASSOC_ReturnData(pszOut, pcchOut, docName, strlenW(docName) + 1); + else + hr = HRESULT_FROM_WIN32(ret); + HeapFree(GetProcessHeap(), 0, docName); + } + else + hr = E_OUTOFMEMORY; + } + else + hr = HRESULT_FROM_WIN32(ret); + HeapFree(GetProcessHeap(), 0, pszFileType); + return hr; }
case ASSOCSTR_FRIENDLYAPPNAME: @@ -825,6 +878,73 @@ return ASSOC_ReturnData(pszOut, pcchOut, path, strlenW(path) + 1); }
+ case ASSOCSTR_CONTENTTYPE: + { + static const WCHAR Content_TypeW[] = {'C','o','n','t','e','n','t',' ','T','y','p','e',0}; + WCHAR *contentType; + DWORD ret; + DWORD size; + + size = 0; + ret = RegGetValueW(This->hkeySource, NULL, Content_TypeW, RRF_RT_REG_SZ, NULL, NULL, &size); + if (ret != ERROR_SUCCESS) + return HRESULT_FROM_WIN32(ret); + contentType = HeapAlloc(GetProcessHeap(), 0, size); + if (contentType != NULL) + { + ret = RegGetValueW(This->hkeySource, NULL, Content_TypeW, RRF_RT_REG_SZ, NULL, contentType, &size); + if (ret == ERROR_SUCCESS) + hr = ASSOC_ReturnData(pszOut, pcchOut, contentType, strlenW(contentType) + 1); + else + hr = HRESULT_FROM_WIN32(ret); + HeapFree(GetProcessHeap(), 0, contentType); + } + else + hr = E_OUTOFMEMORY; + return hr; + } + + case ASSOCSTR_DEFAULTICON: + { + static const WCHAR DefaultIconW[] = {'D','e','f','a','u','l','t','I','c','o','n',0}; + WCHAR *pszFileType; + DWORD ret; + DWORD size; + HKEY hkeyFile; + + hr = ASSOC_GetValue(This->hkeySource, &pszFileType); + if (FAILED(hr)) + return hr; + ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, pszFileType, 0, KEY_READ, &hkeyFile); + if (ret == ERROR_SUCCESS) + { + size = 0; + ret = RegGetValueW(hkeyFile, DefaultIconW, NULL, RRF_RT_REG_SZ, NULL, NULL, &size); + if (ret == ERROR_SUCCESS) + { + WCHAR *icon = HeapAlloc(GetProcessHeap(), 0, size); + if (icon) + { + ret = RegGetValueW(hkeyFile, DefaultIconW, NULL, RRF_RT_REG_SZ, NULL, icon, &size); + if (ret == ERROR_SUCCESS) + hr = ASSOC_ReturnData(pszOut, pcchOut, icon, strlenW(icon) + 1); + else + hr = HRESULT_FROM_WIN32(ret); + HeapFree(GetProcessHeap(), 0, icon); + } + else + hr = E_OUTOFMEMORY; + } + else + hr = HRESULT_FROM_WIN32(ret); + RegCloseKey(hkeyFile); + } + else + hr = HRESULT_FROM_WIN32(ret); + HeapFree(GetProcessHeap(), 0, pszFileType); + return hr; + } + default: FIXME("assocstr %d unimplemented!\n", str); return E_NOTIMPL;
Modified: trunk/reactos/dll/win32/shlwapi/msgbox.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/msgbox.c?... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/msgbox.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/msgbox.c [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -173,7 +173,7 @@ d.dlgProc = dlgProc; d.lParam = lParam; d.lpszId = lpszId; - return DialogBoxParamW(hInst, (LPCWSTR)lpszName, hWnd, SHDlgProcEx, (LPARAM)&d); + return DialogBoxParamW(hInst, lpszName, hWnd, SHDlgProcEx, (LPARAM)&d); }
/* Data held by each shlwapi message box */
Modified: trunk/reactos/dll/win32/shlwapi/ordinal.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/ordinal.c... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/ordinal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/ordinal.c [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -1250,12 +1250,10 @@ if (lpInt1 == lpInt2) return TRUE;
- if (FAILED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown, - (LPVOID *)&lpUnknown1))) + if (FAILED(IUnknown_QueryInterface(lpInt1, &IID_IUnknown, &lpUnknown1))) return FALSE;
- if (FAILED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown, - (LPVOID *)&lpUnknown2))) + if (FAILED(IUnknown_QueryInterface(lpInt2, &IID_IUnknown, &lpUnknown2))) return FALSE;
if (lpUnknown1 == lpUnknown2) @@ -2236,7 +2234,7 @@ if (IsEqualIID(riid, xmove->refid)) { a_vtbl = (IUnknown*)(xmove->indx + (LPBYTE)w); TRACE("matched, returning (%p)\n", a_vtbl); - *ppv = (LPVOID)a_vtbl; + *ppv = a_vtbl; IUnknown_AddRef(a_vtbl); return S_OK; } @@ -2246,7 +2244,7 @@ if (IsEqualIID(riid, &IID_IUnknown)) { a_vtbl = (IUnknown*)(x->indx + (LPBYTE)w); TRACE("returning first for IUnknown (%p)\n", a_vtbl); - *ppv = (LPVOID)a_vtbl; + *ppv = a_vtbl; IUnknown_AddRef(a_vtbl); return S_OK; } @@ -2539,7 +2537,7 @@ if (retval != ERROR_SUCCESS) return 0;
- SHGetValueW(hKey, lpSubName, lpValue, NULL, (LPBYTE)&retval, &datsize); + SHGetValueW(hKey, lpSubName, lpValue, NULL, &retval, &datsize); RegCloseKey(hKey); return retval; } @@ -2618,7 +2616,7 @@
*ppv = NULL; if(pUnk && pInner) { - hret = IUnknown_QueryInterface(pInner, riid, (LPVOID*)ppv); + hret = IUnknown_QueryInterface(pInner, riid, ppv); if (SUCCEEDED(hret)) IUnknown_Release(pUnk); } TRACE("-- 0x%08x\n", hret); @@ -4167,7 +4165,7 @@ { IUnknown* lpUnk;
- if (SUCCEEDED(IBindCtx_GetObjectParam(pbc, (LPOLESTR)szSkipBinding, &lpUnk))) + if (SUCCEEDED(IBindCtx_GetObjectParam(pbc, szSkipBinding, &lpUnk))) { CLSID clsid;
Modified: trunk/reactos/dll/win32/shlwapi/reg.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/reg.c?rev... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/reg.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/reg.c [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -190,7 +190,7 @@ LONG WINAPI SHRegCloseUSKey( HUSKEY hUSKey) /* [I] Key to close */ { - LPSHUSKEY hKey = (LPSHUSKEY)hUSKey; + LPSHUSKEY hKey = hUSKey; LONG ret = ERROR_SUCCESS;
if (hKey->HKCUkey) @@ -393,8 +393,8 @@ if (ret != ERROR_SUCCESS) { if (pvDefaultData && (dwDefaultDataSize != 0)) { maxmove = (dwDefaultDataSize >= *pcbData) ? *pcbData : dwDefaultDataSize; - src = (CHAR*)pvDefaultData; - dst = (CHAR*)pvData; + src = pvDefaultData; + dst = pvData; for(i=0; i<maxmove; i++) *dst++ = *src++; *pcbData = maxmove; TRACE("setting default data\n"); @@ -444,8 +444,8 @@ if (ret != ERROR_SUCCESS) { if (pvDefaultData && (dwDefaultDataSize != 0)) { maxmove = (dwDefaultDataSize >= *pcbData) ? *pcbData : dwDefaultDataSize; - src = (CHAR*)pvDefaultData; - dst = (CHAR*)pvData; + src = pvDefaultData; + dst = pvData; for(i=0; i<maxmove; i++) *dst++ = *src++; *pcbData = maxmove; TRACE("setting default data\n"); @@ -934,7 +934,7 @@ LPVOID pvData, DWORD cbData, DWORD dwFlags) { DWORD dummy; - LPSHUSKEY hKey = (LPSHUSKEY)hUSKey; + LPSHUSKEY hKey = hUSKey; LONG ret = ERROR_SUCCESS;
TRACE("(%p,%s,%d,%p,%d,%d)\n", hUSKey, debugstr_w(pszValue), @@ -2242,7 +2242,7 @@ DWORD dwKeyCount = 0, dwValueCount = 0, dwMaxKeyLen = 0; DWORD dwMaxValueLen = 0, dwMaxDataLen = 0, i; BYTE buff[1024]; - LPVOID lpBuff = (LPVOID)buff; + LPVOID lpBuff = buff; WCHAR szName[MAX_PATH], *lpszName = szName; DWORD dwRet = S_OK;
Modified: trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi.r... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/shlwapi.rbuild [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -5,6 +5,7 @@ <importlibrary definition="shlwapi.spec" /> <include base="shlwapi">.</include> <include base="ReactOS">include/reactos/wine</include> + <define name="_WIN32_WINNT">0x600</define> <define name="__WINESRC__" /> <file>assoc.c</file> <file>clist.c</file>
Modified: trunk/reactos/dll/win32/shlwapi/shlwapi.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi.r... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/shlwapi.rc [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -43,7 +43,7 @@ #include "shlwapi_Ro.rc" #include "shlwapi_Ru.rc" #include "shlwapi_Si.rc" +#include "shlwapi_Sk.rc" #include "shlwapi_Sv.rc" #include "shlwapi_Tr.rc" -#include "shlwapi_Uk.rc" -#include "shlwapi_Zh.rc" +#include "shlwapi_Uk.rc"#include "shlwapi_Zh.rc"
Added: trunk/reactos/dll/win32/shlwapi/shlwapi_Sk.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/shlwapi_S... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/shlwapi_Sk.rc (added) +++ trunk/reactos/dll/win32/shlwapi/shlwapi_Sk.rc [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -1,0 +1,43 @@ +/* Slovak translation for shlwapi + * + * Copyright 2004 Jon Griffiths + * Copyright 2008 Mário Kaèmár (Mario Kacmar) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT + +IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60 +STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Chyba!" +FONT 8, "MS Shell Dlg" +{ + LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20 + LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8 + CHECKBOX "Nabudúce toto dialógové okno nezo&brazova", 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"&Zrui" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"Án&o" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON L"&Nie" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP +} + +STRINGTABLE DISCARDABLE +{ + IDS_BYTES_FORMAT "%ld bajtov" + IDS_TIME_INTERVAL_HOURS " hod." + IDS_TIME_INTERVAL_MINUTES " min." + IDS_TIME_INTERVAL_SECONDS " s" +}
Propchange: trunk/reactos/dll/win32/shlwapi/shlwapi_Sk.rc ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/dll/win32/shlwapi/string.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/string.c?... ============================================================================== --- trunk/reactos/dll/win32/shlwapi/string.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/string.c [iso-8859-1] Sat Jan 31 08:48:46 2009 @@ -1342,7 +1342,7 @@ break;
case STRRET_CSTR: - lstrcpynA((LPSTR)dest, src->u.cStr, len); + lstrcpynA(dest, src->u.cStr, len); break;
case STRRET_OFFSET: @@ -1381,7 +1381,7 @@ switch (src->uType) { case STRRET_WSTR: - lstrcpynW((LPWSTR)dest, src->u.pOleStr, len); + lstrcpynW(dest, src->u.pOleStr, len); CoTaskMemFree(src->u.pOleStr); break;