https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d3fd5bdd974ba222aa373…
commit d3fd5bdd974ba222aa37324e35861e2059f7cc9d
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sun Mar 4 13:17:11 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sun Mar 4 13:17:11 2018 +0100
[SHLWAPI] Sync with Wine Staging 3.3. CORE-14434
---
dll/win32/shlwapi/assoc.c | 38 +++++++++++++-------------------
dll/win32/shlwapi/clist.c | 47 ++++++++++++----------------------------
dll/win32/shlwapi/istream.c | 18 +++++++++++++--
dll/win32/shlwapi/msgbox.c | 18 ++++++++++++++-
dll/win32/shlwapi/ordinal.c | 46 ++++++++++++++++++++++++++++++---------
dll/win32/shlwapi/path.c | 20 ++++++++++++++++-
dll/win32/shlwapi/precomp.h | 5 ++---
dll/win32/shlwapi/reg.c | 13 ++++++++++-
dll/win32/shlwapi/regstream.c | 16 +++++++++++++-
dll/win32/shlwapi/resource.h | 4 +++-
dll/win32/shlwapi/shlwapi_main.c | 11 +++++++++-
dll/win32/shlwapi/stopwatch.c | 17 ++++++++++++++-
dll/win32/shlwapi/string.c | 27 ++++++++++++++++++++---
dll/win32/shlwapi/thread.c | 21 ++++++++++++++++--
dll/win32/shlwapi/url.c | 28 +++++++++++++++++++-----
dll/win32/shlwapi/wsprintf.c | 12 ++++++++--
media/doc/README.WINE | 2 +-
17 files changed, 252 insertions(+), 91 deletions(-)
diff --git a/dll/win32/shlwapi/assoc.c b/dll/win32/shlwapi/assoc.c
index a6d03a1a4b..a5cb4b1129 100644
--- a/dll/win32/shlwapi/assoc.c
+++ b/dll/win32/shlwapi/assoc.c
@@ -17,8 +17,21 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-
-#include "precomp.h"
+#include <stdarg.h>
+#include <assert.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "winreg.h"
+#include "objbase.h"
+#include "shlguid.h"
+#include "shlobj.h"
+#include "shlwapi.h"
+#include "wine/unicode.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
/* Default IQueryAssociations::Init() flags */
#define SHLWAPI_DEF_ASSOCF (ASSOCF_INIT_BYEXENAME|ASSOCF_INIT_DEFAULTTOSTAR| \
@@ -89,7 +102,6 @@ HRESULT WINAPI AssocCreate(CLSID clsid, REFIID refiid, void
**lpInterface)
return SHCoCreateInstance( NULL, &clsid, NULL, refiid, lpInterface );
}
-#ifdef __REACTOS__
struct AssocPerceivedInfo
{
@@ -257,8 +269,6 @@ static const struct AssocPerceivedInfo* AssocFindByType(LPCWSTR
pszType)
return NULL;
}
-#endif
-
/*************************************************************************
* AssocGetPerceivedType [SHLWAPI.@]
@@ -281,26 +291,10 @@ static const struct AssocPerceivedInfo* AssocFindByType(LPCWSTR
pszType)
* lppszType is optional and it can be NULL.
* if lpType or lpFlag are NULL, the function will crash.
* if lpszExt is NULL, an error is returned.
- *
-#ifndef __REACTOS__
- * BUGS
- * Unimplemented.
-#endif
*/
HRESULT WINAPI AssocGetPerceivedType(LPCWSTR lpszExt, PERCEIVED *lpType,
INT *lpFlag, LPWSTR *lppszType)
{
-#ifndef __REACTOS__
-
- FIXME("(%s, %p, %p, %p) not supported\n", debugstr_w(lpszExt), lpType,
lpFlag, lppszType);
-
- if (lpszExt == NULL)
- return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
-
- return E_NOTIMPL;
-
-#else
-
static const WCHAR PerceivedTypeKey[] =
{'P','e','r','c','e','i','v','e','d','T','y','p','e',0};
static const WCHAR SystemFileAssociationsKey[] =
{'S','y','s','t','e','m','F','i','l','e',
'A','s','s','o','c','i','a','t','i','o','n','s','\\','%','s',0};
@@ -355,8 +349,6 @@ HRESULT WINAPI AssocGetPerceivedType(LPCWSTR lpszExt, PERCEIVED
*lpType,
*lpFlag = 0;
}
return HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND);
-
-#endif
}
/*************************************************************************
diff --git a/dll/win32/shlwapi/clist.c b/dll/win32/shlwapi/clist.c
index 52c5f6107f..77917b3546 100644
--- a/dll/win32/shlwapi/clist.c
+++ b/dll/win32/shlwapi/clist.c
@@ -17,8 +17,19 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include <stdarg.h>
+#include <string.h>
-#include "precomp.h"
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "objbase.h"
+#include "shlobj.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
/* dwSignature for contained DATABLOCK_HEADER items */
#define CLIST_ID_CONTAINER (~0U)
@@ -45,13 +56,8 @@ static inline LPDATABLOCK_HEADER NextItem(LPDBLIST lpList)
* lpNewItem [I] The new item to add to the list
*
* RETURNS
-#ifndef __REACTOS__
* Success: S_OK. The item is added to the list.
* Failure: An HRESULT error code.
-#else
- * Success: TRUE. The item is added to the list.
- * Failure: FALSE.
-#endif
*
* NOTES
* If the size of the element to be inserted is less than the size of a
@@ -59,32 +65,19 @@ static inline LPDATABLOCK_HEADER NextItem(LPDBLIST lpList)
* the call returns S_OK but does not actually add the element.
* See SHWriteDataBlockList.
*/
-#ifndef __REACTOS__
-HRESULT
-#else
-BOOL
-#endif
-WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem)
+BOOL WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem)
{
LPDATABLOCK_HEADER lpInsertAt = NULL;
ULONG ulSize;
TRACE("(%p,%p)\n", lppList, lpNewItem);
- if(!lppList || !lpNewItem )
-#ifndef __REACTOS__
- return E_INVALIDARG;
-#else
+ if(!lppList || !lpNewItem)
return FALSE;
-#endif
if (lpNewItem->cbSize < sizeof(DATABLOCK_HEADER) ||
lpNewItem->dwSignature == CLIST_ID_CONTAINER)
-#ifndef __REACTOS__
- return S_OK;
-#else
return FALSE;
-#endif
ulSize = lpNewItem->cbSize;
@@ -141,17 +134,9 @@ WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER
*lpNewItem)
lpInsertAt = NextItem(lpInsertAt);
lpInsertAt->cbSize = 0;
-#ifndef __REACTOS__
- return lpNewItem->cbSize;
-#else
return TRUE;
-#endif
}
-#ifndef __REACTOS__
- return S_OK;
-#else
return FALSE;
-#endif
}
/*************************************************************************
@@ -369,11 +354,7 @@ VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList)
*/
BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature)
{
-#ifndef __REACTOS__
- LPDATABLOCK_HEADER lpList = 0;
-#else
LPDATABLOCK_HEADER lpList = NULL;
-#endif
LPDATABLOCK_HEADER lpItem = NULL;
LPDATABLOCK_HEADER lpNext;
ULONG ulNewSize;
diff --git a/dll/win32/shlwapi/istream.c b/dll/win32/shlwapi/istream.c
index d11a5f12d7..946d2c84b6 100644
--- a/dll/win32/shlwapi/istream.c
+++ b/dll/win32/shlwapi/istream.c
@@ -17,8 +17,22 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-
-#include "precomp.h"
+#include <stdarg.h>
+#include <string.h>
+
+#define COBJMACROS
+#define NONAMELESSUNION
+
+#include "windef.h"
+#include "winbase.h"
+#include "winerror.h"
+#include "winnls.h"
+#define NO_SHLWAPI_REG
+#define NO_SHLWAPI_PATH
+#include "shlwapi.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
#define STGM_ACCESS_MODE(stgm) ((stgm)&0x0000f)
#define STGM_SHARE_MODE(stgm) ((stgm)&0x000f0)
diff --git a/dll/win32/shlwapi/msgbox.c b/dll/win32/shlwapi/msgbox.c
index 31f53f9479..90bbb592bf 100644
--- a/dll/win32/shlwapi/msgbox.c
+++ b/dll/win32/shlwapi/msgbox.c
@@ -18,7 +18,23 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdarg.h>
+#include <string.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "winreg.h"
+#include "shlwapi.h"
+#include "wine/unicode.h"
+#include "wine/debug.h"
+#include "resource.h"
+
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
extern HINSTANCE shlwapi_hInstance; /* in shlwapi_main.c */
diff --git a/dll/win32/shlwapi/ordinal.c b/dll/win32/shlwapi/ordinal.c
index 61e8804d50..9adf962ed2 100644
--- a/dll/win32/shlwapi/ordinal.c
+++ b/dll/win32/shlwapi/ordinal.c
@@ -20,18 +20,38 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include "config.h"
+#include "wine/port.h"
+#include <stdarg.h>
#include <stdio.h>
-
-#include <winver.h>
-#include <winnetwk.h>
-#include <mmsystem.h>
-#include <shdeprecated.h>
-#include <shellapi.h>
-#include <commdlg.h>
-#include <mlang.h>
-#include <mshtmhst.h>
+#include <string.h>
+
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "winreg.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winver.h"
+#include "winnetwk.h"
+#include "mmsystem.h"
+#include "objbase.h"
+#include "exdisp.h"
+#include "shdeprecated.h"
+#include "shlobj.h"
+#include "shlwapi.h"
+#include "shellapi.h"
+#include "commdlg.h"
+#include "mlang.h"
+#include "mshtmhst.h"
+#include "wine/unicode.h"
+#include "wine/debug.h"
+
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
/* DLL handles for late bound calls */
extern HINSTANCE shlwapi_hInstance;
@@ -78,6 +98,12 @@ HANDLE WINAPI SHMapHandle(HANDLE hShared, DWORD dwSrcProcId, DWORD
dwDstProcId,
TRACE("(%p,%d,%d,%08x,%08x)\n", hShared, dwDstProcId, dwSrcProcId,
dwAccess, dwOptions);
+ if (!hShared)
+ {
+ TRACE("Returning handle NULL\n");
+ return NULL;
+ }
+
/* Get dest process handle */
if (dwDstProcId == dwMyProcId)
hDst = GetCurrentProcess();
diff --git a/dll/win32/shlwapi/path.c b/dll/win32/shlwapi/path.c
index 94472580d9..f3149f35e5 100644
--- a/dll/win32/shlwapi/path.c
+++ b/dll/win32/shlwapi/path.c
@@ -19,7 +19,25 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "wine/unicode.h"
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winreg.h"
+#include "winternl.h"
+#define NO_SHLWAPI_STREAM
+#include "shlwapi.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
#ifdef __REACTOS__
int WINAPI IsNetDrive(int drive);
diff --git a/dll/win32/shlwapi/precomp.h b/dll/win32/shlwapi/precomp.h
index 90d50f72a6..eff450aa86 100644
--- a/dll/win32/shlwapi/precomp.h
+++ b/dll/win32/shlwapi/precomp.h
@@ -1,3 +1,4 @@
+
#ifndef _SHLWAPI_PCH_
#define _SHLWAPI_PCH_
@@ -29,6 +30,4 @@
#include "resource.h"
-WINE_DEFAULT_DEBUG_CHANNEL(shell);
-
-#endif /* _SHLWAPI_PCH_ */
+#endif /* !_SHLWAPI_PCH_ */
diff --git a/dll/win32/shlwapi/reg.c b/dll/win32/shlwapi/reg.c
index 74c1ab8c3c..a72f4c24e4 100644
--- a/dll/win32/shlwapi/reg.c
+++ b/dll/win32/shlwapi/reg.c
@@ -19,7 +19,18 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include <stdarg.h>
+#include <string.h>
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
+#include "winreg.h"
+#include "wine/debug.h"
+#define NO_SHLWAPI_STREAM
+#include "shlwapi.h"
+#include "wine/unicode.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
/* Key/Value names for MIME content types */
static const char lpszContentTypeA[] = "Content Type";
diff --git a/dll/win32/shlwapi/regstream.c b/dll/win32/shlwapi/regstream.c
index 4aebab7480..63615d3d9c 100644
--- a/dll/win32/shlwapi/regstream.c
+++ b/dll/win32/shlwapi/regstream.c
@@ -19,7 +19,21 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include <stdarg.h>
+#include <string.h>
+
+#define COBJMACROS
+
+#include "winerror.h"
+#include "windef.h"
+#include "winbase.h"
+#include "objbase.h"
+#include "winreg.h"
+#include "shlwapi.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
typedef struct
{
diff --git a/dll/win32/shlwapi/resource.h b/dll/win32/shlwapi/resource.h
index 2cc17a886e..a9af2bad62 100644
--- a/dll/win32/shlwapi/resource.h
+++ b/dll/win32/shlwapi/resource.h
@@ -17,10 +17,12 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-
#ifndef WINE_SHLWAPI_RESOURCE_H
#define WINE_SHLWAPI_RESOURCE_H
+#include <windef.h>
+#include <winuser.h>
+
#define IDS_BYTES_FORMAT 64
#define IDS_TIME_INTERVAL_HOURS 65
#define IDS_TIME_INTERVAL_MINUTES 66
diff --git a/dll/win32/shlwapi/shlwapi_main.c b/dll/win32/shlwapi/shlwapi_main.c
index bf4cf72e30..f466bb485a 100644
--- a/dll/win32/shlwapi/shlwapi_main.c
+++ b/dll/win32/shlwapi/shlwapi_main.c
@@ -19,7 +19,16 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#define NO_SHLWAPI_REG
+#define NO_SHLWAPI_STREAM
+#include "shlwapi.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
DECLSPEC_HIDDEN HINSTANCE shlwapi_hInstance = 0;
DECLSPEC_HIDDEN DWORD SHLWAPI_ThreadRef_index = TLS_OUT_OF_INDEXES;
diff --git a/dll/win32/shlwapi/stopwatch.c b/dll/win32/shlwapi/stopwatch.c
index 60dc1a6688..fcee075fca 100644
--- a/dll/win32/shlwapi/stopwatch.c
+++ b/dll/win32/shlwapi/stopwatch.c
@@ -23,7 +23,22 @@
* B) Want to use a substandard API to tune its performance.
*/
-#include "precomp.h"
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define NONAMELESSUNION
+
+#include "windef.h"
+#include "winbase.h"
+#include "winreg.h"
+#include "winternl.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
/*************************************************************************
* @ [SHLWAPI.241]
diff --git a/dll/win32/shlwapi/string.c b/dll/win32/shlwapi/string.c
index 64a7571961..0b34d43624 100644
--- a/dll/win32/shlwapi/string.c
+++ b/dll/win32/shlwapi/string.c
@@ -19,11 +19,32 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include "config.h"
+#include "wine/port.h"
#include <math.h>
-#include <mlang.h>
-#include <ddeml.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NONAMELESSUNION
+
+#include "windef.h"
+#include "winbase.h"
+#define NO_SHLWAPI_REG
+#define NO_SHLWAPI_STREAM
+#include "shlwapi.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "shlobj.h"
+#include "mlang.h"
+#include "ddeml.h"
+#include "wine/unicode.h"
+#include "wine/debug.h"
+
+#include "resource.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
extern HINSTANCE shlwapi_hInstance;
diff --git a/dll/win32/shlwapi/thread.c b/dll/win32/shlwapi/thread.c
index 4fd0d46cd9..eb2c35d6dc 100644
--- a/dll/win32/shlwapi/thread.c
+++ b/dll/win32/shlwapi/thread.c
@@ -18,8 +18,25 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-
-#include "precomp.h"
+#include <stdarg.h>
+#include <string.h>
+
+#define COBJMACROS
+
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "winuser.h"
+#define NO_SHLWAPI_REG
+#define NO_SHLWAPI_PATH
+#define NO_SHLWAPI_GDI
+#define NO_SHLWAPI_STREAM
+#define NO_SHLWAPI_USER
+#include "shlwapi.h"
+#include "shlobj.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
extern DWORD SHLWAPI_ThreadRef_index; /* Initialised in shlwapi_main.c */
diff --git a/dll/win32/shlwapi/url.c b/dll/win32/shlwapi/url.c
index ed34aa73a5..c858ebde69 100644
--- a/dll/win32/shlwapi/url.c
+++ b/dll/win32/shlwapi/url.c
@@ -18,15 +18,30 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
-
-#include <wininet.h>
-#include <intshcut.h>
+#include "config.h"
+#include "wine/port.h"
+#include <stdarg.h>
+#include <string.h>
+#include <stdlib.h>
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "winerror.h"
+#include "wine/unicode.h"
+#include "wininet.h"
+#include "winreg.h"
+#include "winternl.h"
+#define NO_SHLWAPI_STREAM
+#include "shlwapi.h"
+#include "intshcut.h"
+#include "wine/debug.h"
HMODULE WINAPI MLLoadLibraryW(LPCWSTR,HMODULE,DWORD);
BOOL WINAPI MLFreeLibrary(HMODULE);
HRESULT WINAPI MLBuildResURLW(LPCWSTR,HMODULE,DWORD,LPCWSTR,LPWSTR,DWORD);
+WINE_DEFAULT_DEBUG_CHANNEL(shell);
+
static inline WCHAR *heap_strdupAtoW(const char *str)
{
LPWSTR ret = NULL;
@@ -902,7 +917,10 @@ HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative,
work = preliminary + base.cchProtocol+1+base.cchSuffix - 1;
if (*work++ != '/')
*(work++) = '/';
- strcpyW(work, relative.pszSuffix);
+ if (relative.pszSuffix[0] == '.' && relative.pszSuffix[1] == 0)
+ *work = 0;
+ else
+ strcpyW(work, relative.pszSuffix);
break;
default:
diff --git a/dll/win32/shlwapi/wsprintf.c b/dll/win32/shlwapi/wsprintf.c
index 34c7a4df8f..6a36b6a28e 100644
--- a/dll/win32/shlwapi/wsprintf.c
+++ b/dll/win32/shlwapi/wsprintf.c
@@ -22,8 +22,16 @@
* to change it in user32 too.
*/
-#define WIN32_NO_STATUS
-#include <wine/debug.h>
+#include <stdarg.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "windef.h"
+#include "winbase.h"
+#define NO_SHLWAPI_REG
+#include "shlwapi.h"
+
+#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(string);
diff --git a/media/doc/README.WINE b/media/doc/README.WINE
index d31a67f70f..3c8bf8dd87 100644
--- a/media/doc/README.WINE
+++ b/media/doc/README.WINE
@@ -174,7 +174,7 @@ reactos/dll/win32/shdoclc # Synced to WineStaging-2.9
reactos/dll/win32/shdocvw # Synced to Wine-3.0
reactos/dll/win32/shell32 # Forked at Wine-20071011
reactos/dll/win32/shfolder # Synced to WineStaging-2.9
-reactos/dll/win32/shlwapi # Synced to Wine-3.0
+reactos/dll/win32/shlwapi # Synced to WineStaging-3.3
reactos/dll/win32/slbcsp # Synced to WineStaging-2.9
reactos/dll/win32/snmpapi # Synced to WineStaging-2.9
reactos/dll/win32/softpub # Synced to WineStaging-2.9