w32api declares some shlwapi.h functions as documented in MSDN,
authorGé van Geldorp <ge@gse.nl>
Thu, 22 Jan 2004 23:52:53 +0000 (23:52 +0000)
committerGé van Geldorp <ge@gse.nl>
Thu, 22 Jan 2004 23:52:53 +0000 (23:52 +0000)
unfortunately the actual declaration in the PSDK is different. Since the
PSDK is our gold standard adjust our declarations to those in the PSDK.

svn path=/trunk/; revision=7832

reactos/include/wine/shlwapi.h
reactos/lib/shlwapi/path.c
reactos/lib/shlwapi/reg.c
reactos/lib/shlwapi/url.c
reactos/lib/shlwapi/winehq2ros.patch

index 53276de..ffcc2bd 100644 (file)
@@ -4,7 +4,18 @@
 #define WINSHLWAPI
 
 /* First part: w32api shlwapi.h.
-   SHRegQueryInfoUSKeyA and SHRegQueryInfoUSKeyW miss the last parameter in w32api */
+   SHRegQueryInfoUSKeyA and SHRegQueryInfoUSKeyW miss the last parameter in w32api
+   Following functions are declared by w32api as documented in MSDN, but the actual
+   declaration in the PSDK is different:
+   PathMakeSystemFolderA/W
+   PathUnmakeSystemFolderA/W
+   SHRegCloseUSKey
+   SHRegQueryInfoUSKeyA/W
+   SHRegEnumUSKeyA/W
+   SHQueryInfoKeyA/W
+   SHEnumKeyExA/W
+   SHEnumValueA/W
+ */
 
 #if __GNUC__ >=3
 #pragma GCC system_header
@@ -262,8 +273,8 @@ WINSHLWAPI BOOL WINAPI PathIsURLA(LPCSTR);
 WINSHLWAPI BOOL WINAPI PathIsURLW(LPCWSTR);
 WINSHLWAPI BOOL WINAPI PathMakePrettyA(LPSTR);
 WINSHLWAPI BOOL WINAPI PathMakePrettyW(LPWSTR);
-WINSHLWAPI BOOL WINAPI PathMakeSystemFolderA(LPSTR);
-WINSHLWAPI BOOL WINAPI PathMakeSystemFolderW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
 WINSHLWAPI BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
 WINSHLWAPI BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
 WINSHLWAPI int WINAPI PathParseIconLocationA(LPSTR);
@@ -298,8 +309,8 @@ WINSHLWAPI void WINAPI PathUndecorateA(LPSTR);
 WINSHLWAPI void WINAPI PathUndecorateW(LPWSTR);
 WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
 WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
-WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderA(LPSTR);
-WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
 WINSHLWAPI void WINAPI PathUnquoteSpacesA(LPSTR);
 WINSHLWAPI void WINAPI PathUnquoteSpacesW(LPWSTR);
 WINSHLWAPI HRESULT WINAPI SHAutoComplete(HWND,DWORD);
@@ -318,10 +329,10 @@ WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
 WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
 WINSHLWAPI DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
 WINSHLWAPI DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
-WINSHLWAPI DWORD WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
-WINSHLWAPI DWORD WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
-WINSHLWAPI DWORD WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
-WINSHLWAPI DWORD WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
+WINSHLWAPI LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+WINSHLWAPI LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
 WINSHLWAPI DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
 WINSHLWAPI DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
 #ifndef __OBJC__
@@ -329,8 +340,8 @@ WINSHLWAPI HRESULT WINAPI SHGetThreadRef(IUnknown**);
 WINSHLWAPI HRESULT WINAPI SHSetThreadRef(IUnknown*);
 WINSHLWAPI BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*);
 #endif
-WINSHLWAPI DWORD WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
-WINSHLWAPI DWORD WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
 WINSHLWAPI DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
 WINSHLWAPI DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
 WINSHLWAPI DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
@@ -377,7 +388,7 @@ WINSHLWAPI HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
        UrlUnescapeA(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE)
 #define UrlUnescapeInPlaceW(pszUrl,dwFlags )\
        UrlUnescapeW(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE)
-WINSHLWAPI DWORD WINAPI SHRegCloseUSKey(HUSKEY);
+WINSHLWAPI LONG WINAPI SHRegCloseUSKey(HUSKEY);
 WINSHLWAPI LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
 WINSHLWAPI LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
 WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
@@ -385,8 +396,8 @@ WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
 WINSHLWAPI LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
 WINSHLWAPI LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
 WINSHLWAPI HKEY WINAPI SHRegDuplicateHKey(HKEY);
-WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
-WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
 WINSHLWAPI DWORD WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
 WINSHLWAPI DWORD WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
 WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
@@ -397,8 +408,8 @@ WINSHLWAPI LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOO
 WINSHLWAPI LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
 WINSHLWAPI LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
 WINSHLWAPI LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
-WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
-WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD,SHREGENUM_FLAGS);
 WINSHLWAPI LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
 WINSHLWAPI LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
 WINSHLWAPI DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
index eb84ae0..4a5bdfb 100644 (file)
@@ -3002,7 +3002,7 @@ static BOOL WINAPI SHLWAPI_UseSystemForSystemFolders()
  *  TRUE  If the path was changed to/already was a system folder
  *  FALSE If the path is invalid or SetFileAttributesA() fails
  */
-BOOL WINAPI PathMakeSystemFolderA(LPSTR lpszPath)
+BOOL WINAPI PathMakeSystemFolderA(LPCSTR lpszPath)
 {
   BOOL bRet = FALSE;
 
@@ -3022,7 +3022,7 @@ BOOL WINAPI PathMakeSystemFolderA(LPSTR lpszPath)
  *
  * See PathMakeSystemFolderA.
  */
-BOOL WINAPI PathMakeSystemFolderW(LPWSTR lpszPath)
+BOOL WINAPI PathMakeSystemFolderW(LPCWSTR lpszPath)
 {
   DWORD dwDefaultAttr = FILE_ATTRIBUTE_READONLY, dwAttr;
   WCHAR buff[MAX_PATH];
@@ -3417,7 +3417,7 @@ BOOL WINAPI PathRelativePathToW(LPWSTR lpszPath, LPCWSTR lpszFrom, DWORD dwAttrF
  *  Failure: FALSE, if lpszPath is NULL, empty, not a directory, or calling
  *           SetFileAttributesA() fails.
  */
-BOOL WINAPI PathUnmakeSystemFolderA(LPSTR lpszPath)
+BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR lpszPath)
 {
   DWORD dwAttr;
 
@@ -3436,7 +3436,7 @@ BOOL WINAPI PathUnmakeSystemFolderA(LPSTR lpszPath)
  *
  * See PathUnmakeSystemFolderA.
  */
-BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR lpszPath)
+BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR lpszPath)
 {
   DWORD dwAttr;
 
index bfd3b33..82e4647 100644 (file)
@@ -232,7 +232,7 @@ LONG WINAPI SHRegOpenUSKeyW(
  *  Success: ERROR_SUCCESS
  *  Failure: An error code from RegCloseKey().
  */
-DWORD WINAPI SHRegCloseUSKey(
+LONG WINAPI SHRegCloseUSKey(
         HUSKEY hUSKey) /* [I] Key to close */
 {
     LPInternal_HUSKEY mihk = (LPInternal_HUSKEY)hUSKey;
@@ -634,7 +634,7 @@ BOOL WINAPI SHRegGetBoolUSValueW(
  *  Success: ERROR_SUCCESS
  *  Failure: An error code from RegQueryInfoKeyA().
  */
-DWORD WINAPI SHRegQueryInfoUSKeyA(
+LONG WINAPI SHRegQueryInfoUSKeyA(
        HUSKEY hUSKey, /* [I] Key to query */
        LPDWORD pcSubKeys, /* [O] Destination for number of sub keys */
        LPDWORD pcchMaxSubKeyLen, /* [O] Destination for the length of the biggest sub key name */
@@ -675,7 +675,7 @@ DWORD WINAPI SHRegQueryInfoUSKeyA(
  *
  * See SHRegQueryInfoUSKeyA.
  */
-DWORD WINAPI SHRegQueryInfoUSKeyW(
+LONG WINAPI SHRegQueryInfoUSKeyW(
        HUSKEY hUSKey,
        LPDWORD pcSubKeys,
        LPDWORD pcchMaxSubKeyLen,
@@ -720,7 +720,7 @@ DWORD WINAPI SHRegQueryInfoUSKeyW(
  *  Success: ERROR_SUCCESS
  *  Failure: An error code from RegEnumKeyExA().
  */
-DWORD WINAPI SHRegEnumUSKeyA(
+LONG WINAPI SHRegEnumUSKeyA(
        HUSKEY hUSKey,                 /* [in] Key to enumerate */
        DWORD dwIndex,                 /* [in] Index within hUSKey */
        LPSTR pszName,                 /* [out] Name of the enumerated value */
@@ -755,7 +755,7 @@ DWORD WINAPI SHRegEnumUSKeyA(
  *
  * See SHRegEnumUSKeyA.
  */
-DWORD WINAPI SHRegEnumUSKeyW(
+LONG WINAPI SHRegEnumUSKeyW(
        HUSKEY hUSKey,
        DWORD dwIndex,
        LPWSTR pszName,
@@ -1104,8 +1104,8 @@ DWORD WINAPI SHSetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue,
  * RETURNS
  *  The result of calling RegQueryInfoKeyA().
  */
-DWORD WINAPI SHQueryInfoKeyA(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
-                             LPDWORD pwValues, LPDWORD pwValueMax)
+LONG WINAPI SHQueryInfoKeyA(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
+                            LPDWORD pwValues, LPDWORD pwValueMax)
 {
   TRACE("(hkey=%p,%p,%p,%p,%p)\n", hKey, pwSubKeys, pwSubKeyMax,
         pwValues, pwValueMax);
@@ -1118,8 +1118,8 @@ DWORD WINAPI SHQueryInfoKeyA(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
  *
  * See SHQueryInfoKeyA.
  */
-DWORD WINAPI SHQueryInfoKeyW(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
-                             LPDWORD pwValues, LPDWORD pwValueMax)
+LONG WINAPI SHQueryInfoKeyW(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
+                            LPDWORD pwValues, LPDWORD pwValueMax)
 {
   TRACE("(hkey=%p,%p,%p,%p,%p)\n", hKey, pwSubKeys, pwSubKeyMax,
         pwValues, pwValueMax);
@@ -1593,8 +1593,8 @@ DWORD WINAPI SHDeleteValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue)
  *   Success: ERROR_SUCCESS. lpszSubKey and pwLen are updated.
  *   Failure: An error code from RegEnumKeyExA().
  */
-DWORD WINAPI SHEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpszSubKey,
-                          LPDWORD pwLen)
+LONG WINAPI SHEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpszSubKey,
+                         LPDWORD pwLen)
 {
   TRACE("(hkey=%p,%ld,%s,%p)\n", hKey, dwIndex, debugstr_a(lpszSubKey), pwLen);
 
@@ -1606,8 +1606,8 @@ DWORD WINAPI SHEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpszSubKey,
  *
  * See SHEnumKeyExA.
  */
-DWORD WINAPI SHEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpszSubKey,
-                          LPDWORD pwLen)
+LONG WINAPI SHEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpszSubKey,
+                         LPDWORD pwLen)
 {
   TRACE("(hkey=%p,%ld,%s,%p)\n", hKey, dwIndex, debugstr_w(lpszSubKey), pwLen);
 
@@ -1632,9 +1632,9 @@ DWORD WINAPI SHEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpszSubKey,
  *   Success: ERROR_SUCCESS. Output parameters are updated.
  *   Failure: An error code from RegEnumValueA().
  */
-DWORD WINAPI SHEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpszValue,
-                          LPDWORD pwLen, LPDWORD pwType,
-                          LPVOID pvData, LPDWORD pcbData)
+LONG WINAPI SHEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpszValue,
+                         LPDWORD pwLen, LPDWORD pwType,
+                         LPVOID pvData, LPDWORD pcbData)
 {
   TRACE("(hkey=%p,%ld,%s,%p,%p,%p,%p)\n", hKey, dwIndex,
         debugstr_a(lpszValue), pwLen, pwType, pvData, pcbData);
@@ -1648,9 +1648,9 @@ DWORD WINAPI SHEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpszValue,
  *
  * See SHEnumValueA.
  */
-DWORD WINAPI SHEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpszValue,
-                          LPDWORD pwLen, LPDWORD pwType,
-                          LPVOID pvData, LPDWORD pcbData)
+LONG WINAPI SHEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpszValue,
+                         LPDWORD pwLen, LPDWORD pwType,
+                         LPVOID pvData, LPDWORD pcbData)
 {
   TRACE("(hkey=%p,%ld,%s,%p,%p,%p,%p)\n", hKey, dwIndex,
         debugstr_w(lpszValue), pwLen, pwType, pvData, pcbData);
index f1f26fd..96e8c3f 100644 (file)
@@ -1403,7 +1403,7 @@ HRESULT WINAPI HashData(LPBYTE lpSrc, DWORD nSrcLen,
 
   if (IsBadReadPtr(lpSrc, nSrcLen) ||
       IsBadWritePtr(lpDest, nDestLen))
-    return ERROR_INVALID_PARAMETER;
+    return E_INVALIDARG;
 
   while (destCount >= 0)
   {
@@ -1421,7 +1421,7 @@ HRESULT WINAPI HashData(LPBYTE lpSrc, DWORD nSrcLen,
     }
     srcCount--;
   }
-  return ERROR_SUCCESS;
+  return S_OK;
 }
 
 /*************************************************************************
index 000634e..0be752e 100644 (file)
@@ -4,7 +4,7 @@ RCS file: /home/wine/wine/dlls/shlwapi/istream.c,v
 retrieving revision 1.9
 diff -u -r1.9 istream.c
 --- istream.c  24 Sep 2003 05:14:39 -0000      1.9
-+++ istream.c  22 Jan 2004 20:39:18 -0000
++++ istream.c  22 Jan 2004 23:34:22 -0000
 @@ -163,12 +163,12 @@
    TRACE("(%p,%ld,%ld,%p)\n", This, dlibMove.s.LowPart, dwOrigin, pNewPos);
  
@@ -38,7 +38,7 @@ RCS file: /home/wine/wine/dlls/shlwapi/ordinal.c,v
 retrieving revision 1.75
 diff -u -r1.75 ordinal.c
 --- ordinal.c  1 Oct 2003 03:10:42 -0000       1.75
-+++ ordinal.c  22 Jan 2004 20:39:20 -0000
++++ ordinal.c  22 Jan 2004 23:34:24 -0000
 @@ -3414,7 +3414,7 @@
   *  Success: A handle to the loaded module
   *  Failure: A NULL handle.
@@ -63,7 +63,7 @@ RCS file: /home/wine/wine/dlls/shlwapi/path.c,v
 retrieving revision 1.40
 diff -u -r1.40 path.c
 --- path.c     19 Jan 2004 21:46:14 -0000      1.40
-+++ path.c     22 Jan 2004 20:39:22 -0000
++++ path.c     22 Jan 2004 23:34:26 -0000
 @@ -32,6 +32,7 @@
  #include "wingdi.h"
  #include "winuser.h"
@@ -72,24 +72,6 @@ diff -u -r1.40 path.c
  #define NO_SHLWAPI_STREAM
  #include "shlwapi.h"
  #include "wine/debug.h"
-@@ -3001,7 +3002,7 @@
-  *  TRUE  If the path was changed to/already was a system folder
-  *  FALSE If the path is invalid or SetFileAttributesA() fails
-  */
--BOOL WINAPI PathMakeSystemFolderA(LPCSTR lpszPath)
-+BOOL WINAPI PathMakeSystemFolderA(LPSTR lpszPath)
- {
-   BOOL bRet = FALSE;
-@@ -3021,7 +3022,7 @@
-  *
-  * See PathMakeSystemFolderA.
-  */
--BOOL WINAPI PathMakeSystemFolderW(LPCWSTR lpszPath)
-+BOOL WINAPI PathMakeSystemFolderW(LPWSTR lpszPath)
- {
-   DWORD dwDefaultAttr = FILE_ATTRIBUTE_READONLY, dwAttr;
-   WCHAR buff[MAX_PATH];
 @@ -3268,7 +3269,7 @@
    if (lpszUrl[1] != ':' && lpszUrl[1] != '|' && isalphaW(*lpszUrl))
      return E_INVALIDARG;
@@ -99,24 +81,6 @@ diff -u -r1.40 path.c
    if (lpszPath[1] == '|')
      lpszPath[1] = ':';
  
-@@ -3416,7 +3417,7 @@
-  *  Failure: FALSE, if lpszPath is NULL, empty, not a directory, or calling
-  *           SetFileAttributesA() fails.
-  */
--BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR lpszPath)
-+BOOL WINAPI PathUnmakeSystemFolderA(LPSTR lpszPath)
- {
-   DWORD dwAttr;
-@@ -3435,7 +3436,7 @@
-  *
-  * See PathUnmakeSystemFolderA.
-  */
--BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR lpszPath)
-+BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR lpszPath)
- {
-   DWORD dwAttr;
 @@ -3745,7 +3746,7 @@
   *  The match is made against the end of the suffix string, so for example:
   *  lpszSuffix="fooBAR" matches "BAR", but lpszSuffix="fooBARfoo" does not.
@@ -167,135 +131,13 @@ diff -u -r1.40 path.c
  }
  
  /*************************************************************************
-Index: reg.c
-===================================================================
-RCS file: /home/wine/wine/dlls/shlwapi/reg.c,v
-retrieving revision 1.45
-diff -u -r1.45 reg.c
---- reg.c      18 Jan 2004 22:07:57 -0000      1.45
-+++ reg.c      22 Jan 2004 20:39:23 -0000
-@@ -232,7 +232,7 @@
-  *  Success: ERROR_SUCCESS
-  *  Failure: An error code from RegCloseKey().
-  */
--LONG WINAPI SHRegCloseUSKey(
-+DWORD WINAPI SHRegCloseUSKey(
-         HUSKEY hUSKey) /* [I] Key to close */
- {
-     LPInternal_HUSKEY mihk = (LPInternal_HUSKEY)hUSKey;
-@@ -634,7 +634,7 @@
-  *  Success: ERROR_SUCCESS
-  *  Failure: An error code from RegQueryInfoKeyA().
-  */
--LONG WINAPI SHRegQueryInfoUSKeyA(
-+DWORD WINAPI SHRegQueryInfoUSKeyA(
-       HUSKEY hUSKey, /* [I] Key to query */
-       LPDWORD pcSubKeys, /* [O] Destination for number of sub keys */
-       LPDWORD pcchMaxSubKeyLen, /* [O] Destination for the length of the biggest sub key name */
-@@ -675,7 +675,7 @@
-  *
-  * See SHRegQueryInfoUSKeyA.
-  */
--LONG WINAPI SHRegQueryInfoUSKeyW(
-+DWORD WINAPI SHRegQueryInfoUSKeyW(
-       HUSKEY hUSKey,
-       LPDWORD pcSubKeys,
-       LPDWORD pcchMaxSubKeyLen,
-@@ -720,7 +720,7 @@
-  *  Success: ERROR_SUCCESS
-  *  Failure: An error code from RegEnumKeyExA().
-  */
--LONG WINAPI SHRegEnumUSKeyA(
-+DWORD WINAPI SHRegEnumUSKeyA(
-       HUSKEY hUSKey,                 /* [in] Key to enumerate */
-       DWORD dwIndex,                 /* [in] Index within hUSKey */
-       LPSTR pszName,                 /* [out] Name of the enumerated value */
-@@ -755,7 +755,7 @@
-  *
-  * See SHRegEnumUSKeyA.
-  */
--LONG WINAPI SHRegEnumUSKeyW(
-+DWORD WINAPI SHRegEnumUSKeyW(
-       HUSKEY hUSKey,
-       DWORD dwIndex,
-       LPWSTR pszName,
-@@ -1104,8 +1104,8 @@
-  * RETURNS
-  *  The result of calling RegQueryInfoKeyA().
-  */
--LONG WINAPI SHQueryInfoKeyA(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
--                            LPDWORD pwValues, LPDWORD pwValueMax)
-+DWORD WINAPI SHQueryInfoKeyA(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
-+                             LPDWORD pwValues, LPDWORD pwValueMax)
- {
-   TRACE("(hkey=%p,%p,%p,%p,%p)\n", hKey, pwSubKeys, pwSubKeyMax,
-         pwValues, pwValueMax);
-@@ -1118,8 +1118,8 @@
-  *
-  * See SHQueryInfoKeyA.
-  */
--LONG WINAPI SHQueryInfoKeyW(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
--                            LPDWORD pwValues, LPDWORD pwValueMax)
-+DWORD WINAPI SHQueryInfoKeyW(HKEY hKey, LPDWORD pwSubKeys, LPDWORD pwSubKeyMax,
-+                             LPDWORD pwValues, LPDWORD pwValueMax)
- {
-   TRACE("(hkey=%p,%p,%p,%p,%p)\n", hKey, pwSubKeys, pwSubKeyMax,
-         pwValues, pwValueMax);
-@@ -1593,8 +1593,8 @@
-  *   Success: ERROR_SUCCESS. lpszSubKey and pwLen are updated.
-  *   Failure: An error code from RegEnumKeyExA().
-  */
--LONG WINAPI SHEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpszSubKey,
--                         LPDWORD pwLen)
-+DWORD WINAPI SHEnumKeyExA(HKEY hKey, DWORD dwIndex, LPSTR lpszSubKey,
-+                          LPDWORD pwLen)
- {
-   TRACE("(hkey=%p,%ld,%s,%p)\n", hKey, dwIndex, debugstr_a(lpszSubKey), pwLen);
-@@ -1606,8 +1606,8 @@
-  *
-  * See SHEnumKeyExA.
-  */
--LONG WINAPI SHEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpszSubKey,
--                         LPDWORD pwLen)
-+DWORD WINAPI SHEnumKeyExW(HKEY hKey, DWORD dwIndex, LPWSTR lpszSubKey,
-+                          LPDWORD pwLen)
- {
-   TRACE("(hkey=%p,%ld,%s,%p)\n", hKey, dwIndex, debugstr_w(lpszSubKey), pwLen);
-@@ -1632,9 +1632,9 @@
-  *   Success: ERROR_SUCCESS. Output parameters are updated.
-  *   Failure: An error code from RegEnumValueA().
-  */
--LONG WINAPI SHEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpszValue,
--                         LPDWORD pwLen, LPDWORD pwType,
--                         LPVOID pvData, LPDWORD pcbData)
-+DWORD WINAPI SHEnumValueA(HKEY hKey, DWORD dwIndex, LPSTR lpszValue,
-+                          LPDWORD pwLen, LPDWORD pwType,
-+                          LPVOID pvData, LPDWORD pcbData)
- {
-   TRACE("(hkey=%p,%ld,%s,%p,%p,%p,%p)\n", hKey, dwIndex,
-         debugstr_a(lpszValue), pwLen, pwType, pvData, pcbData);
-@@ -1648,9 +1648,9 @@
-  *
-  * See SHEnumValueA.
-  */
--LONG WINAPI SHEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpszValue,
--                         LPDWORD pwLen, LPDWORD pwType,
--                         LPVOID pvData, LPDWORD pcbData)
-+DWORD WINAPI SHEnumValueW(HKEY hKey, DWORD dwIndex, LPWSTR lpszValue,
-+                          LPDWORD pwLen, LPDWORD pwType,
-+                          LPVOID pvData, LPDWORD pcbData)
- {
-   TRACE("(hkey=%p,%ld,%s,%p,%p,%p,%p)\n", hKey, dwIndex,
-         debugstr_w(lpszValue), pwLen, pwType, pvData, pcbData);
 Index: shlwapi.spec
 ===================================================================
 RCS file: /home/wine/wine/dlls/shlwapi/shlwapi.spec,v
 retrieving revision 1.83
 diff -u -r1.83 shlwapi.spec
 --- shlwapi.spec       19 Jan 2004 21:46:14 -0000      1.83
-+++ shlwapi.spec       22 Jan 2004 20:39:24 -0000
++++ shlwapi.spec       22 Jan 2004 23:34:28 -0000
 @@ -374,8 +374,8 @@
  374 stub -noname SHCheckDiskForMediaA
  375 stub -noname SHCheckDiskForMediaW
@@ -313,7 +155,7 @@ RCS file: /home/wine/wine/dlls/shlwapi/string.c,v
 retrieving revision 1.39
 diff -u -r1.39 string.c
 --- string.c   22 Nov 2003 00:00:53 -0000      1.39
-+++ string.c   22 Jan 2004 20:39:25 -0000
++++ string.c   22 Jan 2004 23:34:30 -0000
 @@ -556,7 +556,7 @@
  {
    TRACE("(%s,%s)\n", debugstr_w(lpszStr), debugstr_w(lpszSearch));
@@ -356,7 +198,7 @@ RCS file: /home/wine/wine/dlls/shlwapi/url.c,v
 retrieving revision 1.26
 diff -u -r1.26 url.c
 --- url.c      1 Oct 2003 03:10:42 -0000       1.26
-+++ url.c      22 Jan 2004 20:39:26 -0000
++++ url.c      22 Jan 2004 23:34:31 -0000
 @@ -34,9 +34,9 @@
  #include "shlwapi.h"
  #include "wine/debug.h"
@@ -402,7 +244,7 @@ diff -u -r1.26 url.c
    if (IsBadReadPtr(lpSrc, nSrcLen) ||
        IsBadWritePtr(lpDest, nDestLen))
 -    return FALSE;
-+    return ERROR_INVALID_PARAMETER;
++    return E_INVALIDARG;
  
    while (destCount >= 0)
    {
@@ -411,7 +253,7 @@ diff -u -r1.26 url.c
      srcCount--;
    }
 -  return TRUE;
-+  return ERROR_SUCCESS;
++  return S_OK;
  }
  
  /*************************************************************************