Commit in reactos on MAIN
include/wine/shlwapi.h+391.5 -> 1.6
w32api/include/shlwapi.h+391.1 -> 1.2
lib/shlwapi/shlwapi_It.rc+35added 1.1
           /shlwapi_Pt.rc+35added 1.1
           /assoc.c+3-31.6 -> 1.7
           /istream.c+2-21.6 -> 1.7
           /ordinal.c+114-51.10 -> 1.11
           /regstream.c+3-31.2 -> 1.3
           /shlwapi.rc+21.2 -> 1.3
           /shlwapi.spec+2-21.8 -> 1.9
           /string.c+11-231.8 -> 1.9
+285-38
2 added + 9 modified, total 11 files
Sync to Wine-20040813:
Ivan Leo Puoti <puoti@inwind.it>
- Added Italian resources.
Marcelo Duarte <wine-devel@bol.com.br>
- Update localization for Portuguese language.
Alexandre Julliard
- Get rid of the non-standard ICOM_VTABLE macro.
- Get rid of the non-standard ICOM_VFIELD macro.
- Fixed flags handling in StrIsIntlEqualA/W (spotted by James Hawkins).
Jacek Caban <jack@itma.pwr.wroc.pl>
- Implemented IsOS function.
Francois Gouget <fgouget@free.fr>
- Modify widl to put the C COM macros inside an #ifdef COBJMACROS block
  as is done in the Windows headers.
- Add #define COBJMACROS where needed in Wine.
- Fixes the compilation of the oleaut32/tests/olefont.c and
  urlmon/tests/url.c conformance tests with the Windows headers.
Stefan Leichter <Stefan.Leichter@camLine.com>
- Forward shlwapi.459/460 (SHExpandEnvironmentStringsA/W) to
  kernel32.ExpandEnvironmentStringsA/W.

reactos/include/wine
shlwapi.h 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- shlwapi.h	28 Jan 2004 21:57:41 -0000	1.5
+++ shlwapi.h	14 Aug 2004 20:24:41 -0000	1.6
@@ -53,6 +53,44 @@
 #define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
 #define URL_UNESCAPE_INPLACE	0x00100000
 
+#define OS_WIN32SORGREATER        0x00
+#define OS_NT                     0x01
+#define OS_WIN95ORGREATER         0x02
+#define OS_NT4ORGREATER           0x03
+#define OS_WIN2000ORGREATER_ALT   0x04
+#define OS_WIN98ORGREATER         0x05
+#define OS_WIN98_GOLD             0x06
+#define OS_WIN2000ORGREATER       0x07
+#define OS_WIN2000PRO             0x08
+#define OS_WIN2000SERVER          0x09
+#define OS_WIN2000ADVSERVER       0x0A
+#define OS_WIN2000DATACENTER      0x0B
+#define OS_WIN2000TERMINAL        0x0C
+#define OS_EMBEDDED               0x0D
+#define OS_TERMINALCLIENT         0x0E
+#define OS_TERMINALREMOTEADMIN    0x0F
+#define OS_WIN95_GOLD             0x10
+#define OS_MEORGREATER            0x11
+#define OS_XPORGREATER            0x12
+#define OS_HOME                   0x13
+#define OS_PROFESSIONAL           0x14
+#define OS_DATACENTER             0x15
+#define OS_ADVSERVER              0x16
+#define OS_SERVER                 0x17
+#define OS_TERMINALSERVER         0x18
+#define OS_PERSONALTERMINALSERVER 0x19
+#define OS_FASTUSERSWITCHING      0x1A
+#define OS_WELCOMELOGONUI         0x1B
+#define OS_DOMAINMEMBER           0x1C
+#define OS_ANYSERVER              0x1D
+#define OS_WOW6432                0x1E
+#define OS_WEBSERVER              0x1F
+#define OS_SMALLBUSINESSSERVER    0x20
+#define OS_TABLETPC               0x21
+#define OS_SERVERADMINUI          0x22
+#define OS_MEDIACENTER            0x23
+#define OS_APPLIANCE              0x24
+
 #ifndef RC_INVOKED
 #include <pshpack1.h>
 typedef struct _DllVersionInfo
@@ -140,6 +178,7 @@
 #define IntlStrEqNIW(pStr1, pStr2, nChar) IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar);
 WINSHLWAPI BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
 WINSHLWAPI BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+WINSHLWAPI BOOL WINAPI IsOS(DWORD);
 WINSHLWAPI HRESULT WINAPI SHStrDupA(LPCSTR,LPWSTR*);
 WINSHLWAPI HRESULT WINAPI SHStrDupW(LPCWSTR,LPWSTR*);
 WINSHLWAPI LPSTR WINAPI StrCatA(LPSTR,LPCSTR);

reactos/w32api/include
shlwapi.h 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- shlwapi.h	21 Feb 2004 09:20:34 -0000	1.1
+++ shlwapi.h	14 Aug 2004 20:24:41 -0000	1.2
@@ -33,6 +33,44 @@
 #define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
 #define URL_UNESCAPE_INPLACE	0x00100000
 
+#define OS_WIN32SORGREATER        0x00
+#define OS_NT                     0x01
+#define OS_WIN95ORGREATER         0x02
+#define OS_NT4ORGREATER           0x03
+#define OS_WIN2000ORGREATER_ALT   0x04
+#define OS_WIN98ORGREATER         0x05
+#define OS_WIN98_GOLD             0x06
+#define OS_WIN2000ORGREATER       0x07
+#define OS_WIN2000PRO             0x08
+#define OS_WIN2000SERVER          0x09
+#define OS_WIN2000ADVSERVER       0x0A
+#define OS_WIN2000DATACENTER      0x0B
+#define OS_WIN2000TERMINAL        0x0C
+#define OS_EMBEDDED               0x0D
+#define OS_TERMINALCLIENT         0x0E
+#define OS_TERMINALREMOTEADMIN    0x0F
+#define OS_WIN95_GOLD             0x10
+#define OS_MEORGREATER            0x11
+#define OS_XPORGREATER            0x12
+#define OS_HOME                   0x13
+#define OS_PROFESSIONAL           0x14
+#define OS_DATACENTER             0x15
+#define OS_ADVSERVER              0x16
+#define OS_SERVER                 0x17
+#define OS_TERMINALSERVER         0x18
+#define OS_PERSONALTERMINALSERVER 0x19
+#define OS_FASTUSERSWITCHING      0x1A
+#define OS_WELCOMELOGONUI         0x1B
+#define OS_DOMAINMEMBER           0x1C
+#define OS_ANYSERVER              0x1D
+#define OS_WOW6432                0x1E
+#define OS_WEBSERVER              0x1F
+#define OS_SMALLBUSINESSSERVER    0x20
+#define OS_TABLETPC               0x21
+#define OS_SERVERADMINUI          0x22
+#define OS_MEDIACENTER            0x23
+#define OS_APPLIANCE              0x24
+
 #ifndef RC_INVOKED
 #include <pshpack1.h>
 typedef struct _DllVersionInfo
@@ -120,6 +158,7 @@
 #define IntlStrEqNIW(pStr1, pStr2, nChar) IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar);
 WINSHLWAPI BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
 WINSHLWAPI BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+WINSHLWAPI BOOL WINAPI IsOS(DWORD);
 WINSHLWAPI HRESULT WINAPI SHStrDupA(LPCSTR,LPWSTR*);
 WINSHLWAPI HRESULT WINAPI SHStrDupW(LPCWSTR,LPWSTR*);
 WINSHLWAPI LPSTR WINAPI StrCatA(LPSTR,LPCSTR);

reactos/lib/shlwapi
shlwapi_It.rc added at 1.1
diff -N shlwapi_It.rc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ shlwapi_It.rc	14 Aug 2004 20:24:42 -0000	1.1
@@ -0,0 +1,35 @@
+/*
+ * Italian resources for shlwapi
+ *
+ * Copyright 2004 Ivan Leo Puoti
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
+
+IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Errore!"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
+ LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
+ CHECKBOX "Non mostrare nuovamente &questo messaggio", 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"&Annulla" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Si" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&No" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+}

reactos/lib/shlwapi
shlwapi_Pt.rc added at 1.1
diff -N shlwapi_Pt.rc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ shlwapi_Pt.rc	14 Aug 2004 20:24:42 -0000	1.1
@@ -0,0 +1,35 @@
+/*
+ * Portuguese resources for shlwapi
+ *
+ * Copyright 2004 Marcelo Duarte
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
+
+IDD_ERR_DIALOG DIALOG MOVEABLE DISCARDABLE 0, 0, 220, 60
+STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Erro!"
+FONT 8, "MS Shell Dlg"
+{
+ LTEXT "", IDS_ERR_USER_MSG2, 15, 5, 28, 20
+ LTEXT "", IDS_ERR_USER_MSG, 15, 5, 210, 8
+ CHECKBOX "N��o &me mostre essa mensagem novamente", 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"&Cancelar" IDCANCEL, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&Sim" IDYES, 105, 40, 50, 14, WS_GROUP | WS_TABSTOP
+ PUSHBUTTON L"&N��o" IDNO, 160, 40, 50, 14, WS_GROUP | WS_TABSTOP
+}

reactos/lib/shlwapi
assoc.c 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- assoc.c	8 Aug 2004 21:15:48 -0000	1.6
+++ assoc.c	14 Aug 2004 20:24:41 -0000	1.7
@@ -58,13 +58,13 @@
 
 typedef struct
 {
-  ICOM_VFIELD(IQueryAssociations);
+  IQueryAssociationsVtbl *lpVtbl;
   LONG ref;
   HKEY hkeySource;
   HKEY hkeyProgID;
 } IQueryAssociationsImpl;
 
-static struct ICOM_VTABLE(IQueryAssociations) IQueryAssociations_vtbl;
+static struct IQueryAssociationsVtbl IQueryAssociations_vtbl;
 
 /**************************************************************************
  *  IQueryAssociations_Constructor [internal]
@@ -691,7 +691,7 @@
   return E_NOTIMPL;
 }
 
-static struct ICOM_VTABLE(IQueryAssociations) IQueryAssociations_vtbl =
+static struct IQueryAssociationsVtbl IQueryAssociations_vtbl =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   IQueryAssociations_fnQueryInterface,

reactos/lib/shlwapi
istream.c 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- istream.c	28 Jan 2004 21:57:41 -0000	1.6
+++ istream.c	14 Aug 2004 20:24:41 -0000	1.7
@@ -36,7 +36,7 @@
 /* Layout of ISHFileStream object */
 typedef struct
 {
-  ICOM_VFIELD(IStream);
+  IStreamVtbl *lpVtbl;
   ULONG    ref;
   HANDLE   hFile;
   DWORD    dwMode;
@@ -320,7 +320,7 @@
   return E_NOTIMPL;
 }
 
-static struct ICOM_VTABLE(IStream) SHLWAPI_fsVTable =
+static struct IStreamVtbl SHLWAPI_fsVTable =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   IStream_fnQueryInterface,

reactos/lib/shlwapi
ordinal.c 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- ordinal.c	8 Aug 2004 21:15:48 -0000	1.10
+++ ordinal.c	14 Aug 2004 20:24:41 -0000	1.11
@@ -28,8 +28,10 @@
 #include <stdio.h>
 #include <string.h>
 
+#define COBJMACROS
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
+
 #include "windef.h"
 #include "winbase.h"
 #include "winuser.h"
@@ -47,6 +49,7 @@
 #include "winreg.h"
 #include "wine/debug.h"
 #include "shlwapi.h"
+#include "winnt.h"
 
 
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
@@ -3657,12 +3660,118 @@
  *  TRUE  If the feature is available.
  *  FALSE If the feature is not available.
  */
-DWORD WINAPI IsOS(DWORD feature)
+BOOL WINAPI IsOS(DWORD feature)
 {
-  FIXME("(0x%08lx) stub\n", feature);
-  if (feature == 4)
-    return TRUE;
-  return FALSE;
+    OSVERSIONINFOA osvi;
+    DWORD platform, majorv, minorv;
+
+    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOA);
+    if(!GetVersionExA(&osvi))  {
+        ERR("GetVersionEx failed");
+        return FALSE;
+    }
+
+    majorv = osvi.dwMajorVersion;
+    minorv = osvi.dwMinorVersion;
+    platform = osvi.dwPlatformId;
+
+#define ISOS_RETURN(x) \
+    TRACE("(0x%lx) ret=%d\n",feature,(x)); \
+    return (x);
+
+    switch(feature)  {
+    case OS_WIN32SORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32s
+                 || platform == VER_PLATFORM_WIN32_WINDOWS)
+    case OS_NT:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_WIN95ORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_WINDOWS)
+    case OS_NT4ORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && majorv >= 4)
+    case OS_WIN2000ORGREATER_ALT:
+    case OS_WIN2000ORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && majorv >= 5)
+    case OS_WIN98ORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_WINDOWS && minorv >= 10)
+    case OS_WIN98_GOLD:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_WINDOWS && minorv == 10)
+    case OS_WIN2000PRO:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && majorv >= 5)
+    case OS_WIN2000SERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && (minorv == 0 || minorv == 1))
+    case OS_WIN2000ADVSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && (minorv == 0 || minorv == 1))
+    case OS_WIN2000DATACENTER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && (minorv == 0 || minorv == 1))
+    case OS_WIN2000TERMINAL:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && (minorv == 0 || minorv == 1))
+    case OS_EMBEDDED:
+        FIXME("(OS_EMBEDDED) What should we return here?\n");
+        return FALSE;
+    case OS_TERMINALCLIENT:
+        FIXME("(OS_TERMINALCLIENT) What should we return here?\n");
+        return FALSE;
+    case OS_TERMINALREMOTEADMIN:
+        FIXME("(OS_TERMINALREMOTEADMIN) What should we return here?\n");
+        return FALSE;
+    case OS_WIN95_GOLD:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_WINDOWS && minorv == 0)
+    case OS_MEORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_WINDOWS && minorv >= 90)
+    case OS_XPORGREATER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && majorv >= 5 && minorv >= 1)
+    case OS_HOME:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && majorv >= 5 && minorv >= 1)
+    case OS_PROFESSIONAL:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT) 
+    case OS_DATACENTER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_ADVSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && majorv >= 5)
+    case OS_SERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_TERMINALSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_PERSONALTERMINALSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT && minorv >= 1 && majorv >= 5)
+    case OS_FASTUSERSWITCHING:
+        FIXME("(OS_FASTUSERSWITCHING) What should we return here?\n");
+        return TRUE;
+    case OS_WELCOMELOGONUI:
+        FIXME("(OS_WELCOMELOGONUI) What should we return here?\n");
+        return FALSE;
+    case OS_DOMAINMEMBER:
+        FIXME("(OS_DOMAINMEMBER) What should we return here?\n");
+        return TRUE;
+    case OS_ANYSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_WOW6432:
+        FIXME("(OS_WOW6432) Should we check this?\n");
+        return FALSE;
+    case OS_WEBSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_SMALLBUSINESSSERVER:
+        ISOS_RETURN(platform == VER_PLATFORM_WIN32_NT)
+    case OS_TABLETPC:
+        FIXME("(OS_TABLEPC) What should we return here?\n");
+        return FALSE;
+    case OS_SERVERADMINUI:
+        FIXME("(OS_SERVERADMINUI) What should we return here?\n");
+        return FALSE;
+    case OS_MEDIACENTER:
+        FIXME("(OS_MEDIACENTER) What should we return here?\n");
+        return FALSE;
+    case OS_APPLIANCE:
+        FIXME("(OS_APPLIANCE) What should we return here?\n");
+        return FALSE;
+    }
+
+#undef ISOS_RETURN
+
+    WARN("(0x%lx) unknown parameter\n",feature);
+
+    return FALSE;
 }
 
 /*************************************************************************

reactos/lib/shlwapi
regstream.c 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- regstream.c	2 Jan 2004 19:49:46 -0000	1.2
+++ regstream.c	14 Aug 2004 20:24:42 -0000	1.3
@@ -33,7 +33,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(shell);
 
 typedef struct
-{	ICOM_VFIELD(IStream);
+{	IStreamVtbl *lpVtbl;
 	DWORD  ref;
 	HKEY   hKey;
 	LPBYTE pbBuffer;
@@ -251,7 +251,7 @@
 	return E_NOTIMPL;
 }
 
-static struct ICOM_VTABLE(IStream) rstvt =
+static struct IStreamVtbl rstvt =
 {
 	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
 	IStream_fnQueryInterface,
@@ -302,7 +302,7 @@
   return E_NOTIMPL;
 }
 
-static struct ICOM_VTABLE(IStream) DummyRegStreamVTable =
+static struct IStreamVtbl DummyRegStreamVTable =
 {
   ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
   IStream_fnQueryInterface,

reactos/lib/shlwapi
shlwapi.rc 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- shlwapi.rc	8 Aug 2004 21:15:48 -0000	1.2
+++ shlwapi.rc	14 Aug 2004 20:24:42 -0000	1.3
@@ -26,4 +26,6 @@
 #include "shlwapi_De.rc"
 #include "shlwapi_En.rc"
 #include "shlwapi_Es.rc"
+#include "shlwapi_It.rc"
 #include "shlwapi_Ja.rc"
+#include "shlwapi_Pt.rc"

reactos/lib/shlwapi
shlwapi.spec 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- shlwapi.spec	8 Aug 2004 21:15:48 -0000	1.8
+++ shlwapi.spec	14 Aug 2004 20:24:42 -0000	1.9
@@ -456,8 +456,8 @@
 456 stub -noname PathIsValidCharW
 457 stub -noname GetLongPathNameWrapW
 458 stub -noname GetLongPathNameWrapA
-459 stub -noname SHExpandEnvironmentStringsA
-460 stub -noname SHExpandEnvironmentStringsW
+459 stdcall -noname SHExpandEnvironmentStringsA(str ptr long) kernel32.ExpandEnvironmentStringsA
+460 stdcall -noname SHExpandEnvironmentStringsW(wstr ptr long) kernel32.ExpandEnvironmentStringsW
 461 stdcall -noname SHGetAppCompatFlags()
 462 stub -noname UrlFixupW
 463 stub -noname SHExpandEnvironmentStringsForUserA

reactos/lib/shlwapi
string.c 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- string.c	8 May 2004 13:49:05 -0000	1.8
+++ string.c	14 Aug 2004 20:24:42 -0000	1.9
@@ -2051,24 +2051,18 @@
 BOOL WINAPI StrIsIntlEqualA(BOOL bCase, LPCSTR lpszStr, LPCSTR lpszComp,
                             int iLen)
 {
-  DWORD dwFlags = LOCALE_USE_CP_ACP;
-  int iRet;
+  DWORD dwFlags;
 
   TRACE("(%d,%s,%s,%d)\n", bCase,
         debugstr_a(lpszStr), debugstr_a(lpszComp), iLen);
 
-  /* FIXME: These flags are undocumented and unknown by our CompareString.
-   *        We need defines for them.
+  /* FIXME: This flag is undocumented and unknown by our CompareString.
+   *        We need a define for it.
    */
-  dwFlags |= bCase ? 0x10000000 : 0x10000001;
-
-  iRet = CompareStringA(GetThreadLocale(),
-                        dwFlags, lpszStr, iLen, lpszComp, iLen);
-
-  if (!iRet)
-    iRet = CompareStringA(2048, dwFlags, lpszStr, iLen, lpszComp, iLen);
+  dwFlags = 0x10000000;
+  if (!bCase) dwFlags |= NORM_IGNORECASE;
 
-  return iRet == 2 ? TRUE : FALSE;
+  return (CompareStringA(GetThreadLocale(), dwFlags, lpszStr, iLen, lpszComp, iLen) == CSTR_EQUAL);
 }
 
 /*************************************************************************
@@ -2080,23 +2074,17 @@
                             int iLen)
 {
   DWORD dwFlags;
-  int iRet;
 
   TRACE("(%d,%s,%s,%d)\n", bCase,
         debugstr_w(lpszStr),debugstr_w(lpszComp), iLen);
 
-  /* FIXME: These flags are undocumented and unknown by our CompareString.
-   *        We need defines for them.
+  /* FIXME: This flag is undocumented and unknown by our CompareString.
+   *        We need a define for it.
    */
-  dwFlags = bCase ? 0x10000000 : 0x10000001;
-
-  iRet = CompareStringW(GetThreadLocale(),
-                        dwFlags, lpszStr, iLen, lpszComp, iLen);
-
-  if (!iRet)
-    iRet = CompareStringW(2048, dwFlags, lpszStr, iLen, lpszComp, iLen);
+  dwFlags = 0x10000000;
+  if (!bCase) dwFlags |= NORM_IGNORECASE;
 
-  return iRet == 2 ? TRUE : FALSE;
+  return (CompareStringW(GetThreadLocale(), dwFlags, lpszStr, iLen, lpszComp, iLen) == CSTR_EQUAL);
 }
 
 /*************************************************************************
CVSspam 0.2.8