Modified: trunk/reactos/lib/shlwapi/assoc.c
Modified: trunk/reactos/lib/shlwapi/istream.c
Modified: trunk/reactos/lib/shlwapi/path.c
Modified: trunk/reactos/lib/shlwapi/regstream.c
Modified: trunk/reactos/lib/shlwapi/shlwapi.spec
--- trunk/reactos/lib/shlwapi/assoc.c 2005-08-03 21:18:24 UTC (rev 17032)
+++ trunk/reactos/lib/shlwapi/assoc.c 2005-08-03 21:34:01 UTC (rev 17033)
@@ -58,13 +58,13 @@
typedef struct
{
- IQueryAssociationsVtbl *lpVtbl;
+ const IQueryAssociationsVtbl *lpVtbl;
LONG ref;
HKEY hkeySource;
HKEY hkeyProgID;
} IQueryAssociationsImpl;
-static struct IQueryAssociationsVtbl IQueryAssociations_vtbl;
+static const IQueryAssociationsVtbl IQueryAssociations_vtbl;
/**************************************************************************
* IQueryAssociations_Constructor [internal]
@@ -693,7 +693,7 @@
return E_NOTIMPL;
}
-static struct IQueryAssociationsVtbl IQueryAssociations_vtbl =
+static const IQueryAssociationsVtbl IQueryAssociations_vtbl =
{
IQueryAssociations_fnQueryInterface,
IQueryAssociations_fnAddRef,
--- trunk/reactos/lib/shlwapi/istream.c 2005-08-03 21:18:24 UTC (rev 17032)
+++ trunk/reactos/lib/shlwapi/istream.c 2005-08-03 21:34:01 UTC (rev 17033)
@@ -35,10 +35,14 @@
WINE_DEFAULT_DEBUG_CHANNEL(shell);
+#define STGM_ACCESS_MODE(stgm) ((stgm)&0x0000f)
+#define STGM_SHARE_MODE(stgm) ((stgm)&0x000f0)
+#define STGM_CREATE_MODE(stgm) ((stgm)&0x0f000)
+
/* Layout of ISHFileStream object */
typedef struct
{
- IStreamVtbl *lpVtbl;
+ const IStreamVtbl *lpVtbl;
ULONG ref;
HANDLE hFile;
DWORD dwMode;
@@ -65,8 +69,7 @@
IsEqualIID(riid, &IID_IStream))
{
*ppvObj = This;
-
- IStream_AddRef((IStream*)*ppvObj);
+ IStream_AddRef(iface);
return S_OK;
}
return E_NOINTERFACE;
@@ -112,22 +115,21 @@
static HRESULT WINAPI IStream_fnRead(IStream *iface, void* pv, ULONG cb, ULONG* pcbRead)
{
ISHFileStream *This = (ISHFileStream *)iface;
- HRESULT hRet = S_OK;
DWORD dwRead = 0;
TRACE("(%p,%p,0x%08lx,%p)\n", This, pv, cb, pcbRead);
if (!pv)
- hRet = STG_E_INVALIDPOINTER;
- else if (!ReadFile(This->hFile, pv, cb, &dwRead, NULL))
+ return STG_E_INVALIDPOINTER;
+
+ if (!ReadFile(This->hFile, pv, cb, &dwRead, NULL))
{
- hRet = (HRESULT)GetLastError();
- if(hRet > 0)
- hRet = HRESULT_FROM_WIN32(hRet);
+ ERR("error %ld reading file\n", GetLastError());
+ return HRESULT_FROM_WIN32(GetLastError());
}
if (pcbRead)
*pcbRead = dwRead;
- return hRet;
+ return S_OK;
}
/**************************************************************************
@@ -136,24 +138,28 @@
static HRESULT WINAPI IStream_fnWrite(IStream *iface, const void* pv, ULONG cb, ULONG* pcbWritten)
{
ISHFileStream *This = (ISHFileStream *)iface;
- HRESULT hRet = S_OK;
DWORD dwWritten = 0;
TRACE("(%p,%p,0x%08lx,%p)\n", This, pv, cb, pcbWritten);
if (!pv)
- hRet = STG_E_INVALIDPOINTER;
- else if (!(This->dwMode & STGM_WRITE))
- hRet = E_FAIL;
- else if (!WriteFile(This->hFile, pv, cb, &dwWritten, NULL))
+ return STG_E_INVALIDPOINTER;
+
+ switch (STGM_ACCESS_MODE(This->dwMode))
{
- hRet = (HRESULT)GetLastError();
- if(hRet > 0)
- hRet = HRESULT_FROM_WIN32(hRet);
+ case STGM_WRITE:
+ case STGM_READWRITE:
+ break;
+ default:
+ return E_FAIL;
}
+
+ if (!WriteFile(This->hFile, pv, cb, &dwWritten, NULL))
+ return HRESULT_FROM_WIN32(GetLastError());
+
if (pcbWritten)
*pcbWritten = dwWritten;
- return hRet;
+ return S_OK;
}
/**************************************************************************
@@ -169,6 +175,8 @@
IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */
dwPos = SetFilePointer(This->hFile, dlibMove.u.LowPart, NULL, dwOrigin);
+ if( dwPos == INVALID_SET_FILE_POINTER )
+ return E_FAIL;
if (pNewPos)
{
@@ -186,8 +194,15 @@
ISHFileStream *This = (ISHFileStream *)iface;
TRACE("(%p,%ld)\n", This, libNewSize.u.LowPart);
+
IStream_fnCommit(iface, 0); /* If ever buffered, this will be needed */
- return E_NOTIMPL;
+ if( ! SetFilePointer( This->hFile, libNewSize.QuadPart, NULL, FILE_BEGIN ) )
+ return E_FAIL;
+
+ if( ! SetEndOfFile( This->hFile ) )
+ return E_FAIL;
+
+ return S_OK;
}
/**************************************************************************
@@ -325,7 +340,7 @@
return E_NOTIMPL;
}
-static struct IStreamVtbl SHLWAPI_fsVTable =
+static const IStreamVtbl SHLWAPI_fsVTable =
{
IStream_fnQueryInterface,
IStream_fnAddRef,
@@ -403,29 +418,27 @@
*lppStream = NULL;
- if (dwMode & ~(STGM_WRITE|STGM_READWRITE|STGM_SHARE_DENY_NONE|STGM_SHARE_DENY_READ|STGM_CREATE))
- {
- WARN("Invalid mode 0x%08lX\n", dwMode);
+ if (dwMode & STGM_TRANSACTED)
return E_INVALIDARG;
- }
/* Access */
- switch (dwMode & (STGM_WRITE|STGM_READWRITE))
+ switch (STGM_ACCESS_MODE(dwMode))
{
- case STGM_READWRITE|STGM_WRITE:
case STGM_READWRITE:
dwAccess = GENERIC_READ|GENERIC_WRITE;
break;
case STGM_WRITE:
dwAccess = GENERIC_WRITE;
break;
- default:
+ case STGM_READ:
dwAccess = GENERIC_READ;
break;
+ default:
+ return E_INVALIDARG;
}
/* Sharing */
- switch (dwMode & STGM_SHARE_DENY_READ)
+ switch (STGM_SHARE_MODE(dwMode))
{
case STGM_SHARE_DENY_READ:
dwShare = FILE_SHARE_WRITE;
@@ -436,17 +449,24 @@
case STGM_SHARE_EXCLUSIVE:
dwShare = 0;
break;
+ case STGM_SHARE_DENY_NONE:
+ dwShare = FILE_SHARE_READ|FILE_SHARE_WRITE;
+ break;
default:
- dwShare = FILE_SHARE_READ|FILE_SHARE_WRITE;
+ return E_INVALIDARG;
}
- /* FIXME: Creation Flags, MSDN is fuzzy on the mapping... */
- if (dwMode == STGM_FAILIFTHERE)
- dwCreate = bCreate ? CREATE_NEW : OPEN_EXISTING;
- else if (dwMode & STGM_CREATE)
+ switch(STGM_CREATE_MODE(dwMode))
+ {
+ case STGM_FAILIFTHERE:
+ dwCreate = OPEN_EXISTING;
+ break;
+ case STGM_CREATE:
dwCreate = CREATE_ALWAYS;
- else
- dwCreate = OPEN_ALWAYS;
+ break;
+ default:
+ return E_INVALIDARG;
+ }
/* Open HANDLE to file */
hFile = CreateFileW(lpszPath, dwAccess, dwShare, NULL, dwCreate,
@@ -478,19 +498,12 @@
HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode,
IStream **lppStream)
{
- DWORD dwAttr;
-
TRACE("(%s,%ld,%p)\n", debugstr_w(lpszPath), dwMode, lppStream);
if (!lpszPath || !lppStream)
return E_INVALIDARG;
- dwAttr = GetFileAttributesW(lpszPath);
- if (dwAttr == INVALID_FILE_ATTRIBUTES)
- dwAttr = 0;
-
- return SHCreateStreamOnFileEx(lpszPath, dwMode|STGM_WRITE, dwAttr,
- TRUE, NULL, lppStream);
+ return SHCreateStreamOnFileEx(lpszPath, dwMode, 0, FALSE, NULL, lppStream);
}
/*************************************************************************
--- trunk/reactos/lib/shlwapi/path.c 2005-08-03 21:18:24 UTC (rev 17032)
+++ trunk/reactos/lib/shlwapi/path.c 2005-08-03 21:34:01 UTC (rev 17033)
@@ -2979,7 +2979,7 @@
*
* Internal helper for PathMakeSystemFolderW.
*/
-static BOOL WINAPI SHLWAPI_UseSystemForSystemFolders()
+static BOOL WINAPI SHLWAPI_UseSystemForSystemFolders(void)
{
static BOOL bCheckedReg = FALSE;
static BOOL bUseSystemForSystemFolders = FALSE;
--- trunk/reactos/lib/shlwapi/regstream.c 2005-08-03 21:18:24 UTC (rev 17032)
+++ trunk/reactos/lib/shlwapi/regstream.c 2005-08-03 21:34:01 UTC (rev 17033)
@@ -35,7 +35,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(shell);
typedef struct
-{ IStreamVtbl *lpVtbl;
+{
+ const IStreamVtbl *lpVtbl;
DWORD ref;
HKEY hKey;
LPBYTE pbBuffer;
@@ -255,7 +256,7 @@
return E_NOTIMPL;
}
-static struct IStreamVtbl rstvt =
+static const IStreamVtbl rstvt =
{
IStream_fnQueryInterface,
IStream_fnAddRef,
@@ -305,7 +306,7 @@
return E_NOTIMPL;
}
-static struct IStreamVtbl DummyRegStreamVTable =
+static const IStreamVtbl DummyRegStreamVTable =
{
IStream_fnQueryInterface,
IStream_fnAddRefDummy, /* Overridden */
--- trunk/reactos/lib/shlwapi/shlwapi.spec 2005-08-03 21:18:24 UTC (rev 17032)
+++ trunk/reactos/lib/shlwapi/shlwapi.spec 2005-08-03 21:34:01 UTC (rev 17033)
@@ -547,6 +547,7 @@
551 stub -noname IShellFolder_CompareIDs
@ stdcall AssocCreate(long long long long ptr ptr)
+@ stdcall AssocIsDangerous(long)
@ stdcall AssocQueryKeyA(long long str ptr ptr)
@ stdcall AssocQueryKeyW(long long wstr ptr ptr)
@ stdcall AssocQueryStringA(long long ptr ptr str ptr)
@@ -593,6 +594,8 @@
@ stdcall PathFindNextComponentW (wstr)
@ stdcall PathFindOnPathA (str ptr)
@ stdcall PathFindOnPathW (wstr ptr)
+@ stdcall PathFindSuffixArrayA(str ptr long)
+@ stdcall PathFindSuffixArrayW(wstr ptr long)
@ stdcall PathGetArgsA (str)
@ stdcall PathGetArgsW (wstr)
@ stdcall PathGetCharTypeA(long)
@@ -602,9 +605,15 @@
@ stdcall PathIsContentTypeA(str str)
@ stdcall PathIsContentTypeW(wstr wstr)
@ stdcall PathIsDirectoryA(str)
+@ stdcall PathIsDirectoryEmptyA(str)
+@ stdcall PathIsDirectoryEmptyW(wstr)
@ stdcall PathIsDirectoryW(wstr)
@ stdcall PathIsFileSpecA(str)
@ stdcall PathIsFileSpecW(wstr)
+@ stdcall PathIsLFNFileSpecA(str)
+@ stdcall PathIsLFNFileSpecW(wstr)
+@ stdcall PathIsNetworkPathA(str)
+@ stdcall PathIsNetworkPathW(wstr)
@ stdcall PathIsPrefixA(str str)
@ stdcall PathIsPrefixW(wstr wstr)
@ stdcall PathIsRelativeA (str)
@@ -657,11 +666,22 @@
@ stdcall PathStripPathW(wstr)
@ stdcall PathStripToRootA(str)
@ stdcall PathStripToRootW(wstr)
+@ stdcall PathUnExpandEnvStringsA(str ptr long)
+@ stdcall PathUnExpandEnvStringsW(wstr ptr long)
+@ stdcall PathUndecorateA(str)
+@ stdcall PathUndecorateW(wstr)
@ stdcall PathUnmakeSystemFolderA(str)
@ stdcall PathUnmakeSystemFolderW(wstr)
@ stdcall PathUnquoteSpacesA (str)
@ stdcall PathUnquoteSpacesW (wstr)
+@ stdcall SHAutoComplete(ptr long)
+@ stdcall SHCopyKeyA(long str long long)
+@ stdcall SHCopyKeyW(long wstr long long)
@ stdcall SHCreateShellPalette(long)
+@ stdcall SHCreateStreamOnFileA(str long ptr)
+@ stdcall SHCreateStreamOnFileEx(wstr long long long ptr ptr)
+@ stdcall SHCreateStreamOnFileW(wstr long ptr)
+@ stdcall SHCreateStreamWrapper(ptr ptr long ptr)
@ stdcall SHDeleteEmptyKeyA(long ptr)
@ stdcall SHDeleteEmptyKeyW(long ptr)
@ stdcall SHDeleteKeyA(long str)
@@ -675,13 +695,14 @@
@ stdcall SHEnumValueA(long long str ptr ptr ptr ptr)
@ stdcall SHEnumValueW(long long wstr ptr ptr ptr ptr)
@ stdcall SHGetInverseCMAP ( ptr long )
+@ stdcall SHGetThreadRef (ptr)
@ stdcall SHGetValueA ( long str str ptr ptr ptr )
@ stdcall SHGetValueW ( long wstr wstr ptr ptr ptr )
@ stdcall SHIsLowMemoryMachine(long)
-@ stdcall SHOpenRegStreamA(long str str long)
-@ stdcall SHOpenRegStreamW(long wstr str long)
@ stdcall SHOpenRegStream2A(long str str long)
@ stdcall SHOpenRegStream2W(long wstr str long)
+@ stdcall SHOpenRegStreamA(long str str long)
+@ stdcall SHOpenRegStreamW(long wstr str long)
@ stdcall SHQueryInfoKeyA(long ptr ptr ptr ptr)
@ stdcall SHQueryInfoKeyW(long ptr ptr ptr ptr)
@ stdcall SHQueryValueExA(long str ptr ptr ptr ptr)
@@ -693,12 +714,15 @@
@ stdcall SHRegDeleteEmptyUSKeyW(long wstr long)
@ stdcall SHRegDeleteUSValueA(long str long)
@ stdcall SHRegDeleteUSValueW(long wstr long)
+@ stdcall SHRegDuplicateHKey (long)
@ stdcall SHRegEnumUSKeyA(long long str ptr long)
@ stdcall SHRegEnumUSKeyW(long long wstr ptr long)
@ stdcall SHRegEnumUSValueA(long long ptr ptr ptr ptr ptr long)
@ stdcall SHRegEnumUSValueW(long long ptr ptr ptr ptr ptr long)
@ stdcall SHRegGetBoolUSValueA(str str long long)
@ stdcall SHRegGetBoolUSValueW(wstr wstr long long)
+@ stdcall SHRegGetPathA(long str str ptr long)
+@ stdcall SHRegGetPathW(long wstr wstr ptr long)
@ stdcall SHRegGetUSValueA ( str str ptr ptr ptr long ptr long )
@ stdcall SHRegGetUSValueW ( wstr wstr ptr ptr ptr long ptr long )
@ stdcall SHRegOpenUSKeyA ( str long long long long )
@@ -707,12 +731,20 @@
@ stdcall SHRegQueryInfoUSKeyW ( long ptr ptr ptr ptr long )
@ stdcall SHRegQueryUSValueA ( long str ptr ptr ptr long ptr long )
@ stdcall SHRegQueryUSValueW ( long wstr ptr ptr ptr long ptr long )
+@ stdcall SHRegSetPathA(long str str str long)
+@ stdcall SHRegSetPathW(long wstr wstr wstr long)
@ stdcall SHRegSetUSValueA ( str str long ptr long long)
@ stdcall SHRegSetUSValueW ( wstr wstr long ptr long long)
@ stdcall SHRegWriteUSValueA (long str long ptr long long)
@ stdcall SHRegWriteUSValueW (long str long ptr long long)
+@ stdcall SHRegisterValidateTemplate(wstr long)
+@ stdcall SHReleaseThreadRef()
+@ stdcall SHSetThreadRef (ptr)
@ stdcall SHSetValueA (long str str long ptr long)
@ stdcall SHSetValueW (long wstr wstr long ptr long)
+@ stdcall SHSkipJunction(ptr ptr)
+@ stdcall SHStrDupA (str ptr)
+@ stdcall SHStrDupW (wstr ptr)
@ stdcall StrCSpnA (str str)
@ stdcall StrCSpnIA (str str)
@ stdcall StrCSpnIW (wstr wstr)
@@ -725,6 +757,7 @@
@ stdcall StrChrIW (wstr long)
@ stdcall StrChrW (wstr long)
@ stdcall StrCmpIW (wstr wstr)
+@ stdcall StrCmpLogicalW(wstr wstr)
@ stdcall StrCmpNA (str str long)
@ stdcall StrCmpNIA (str str long)
@ stdcall StrCmpNIW (wstr wstr long)
@@ -734,8 +767,11 @@
@ stdcall StrCpyW (ptr wstr)
@ stdcall StrDupA (str)
@ stdcall StrDupW (wstr)
+@ stdcall StrFormatByteSize64A(long long ptr long)
@ stdcall StrFormatByteSizeA(long ptr long)
@ stdcall StrFormatByteSizeW(long long ptr long)
+@ stdcall StrFormatKBSizeA(long long str long)
+@ stdcall StrFormatKBSizeW(long long wstr long)
@ stdcall StrFromTimeIntervalA(ptr long long long)
@ stdcall StrFromTimeIntervalW(ptr long long long)
@ stdcall StrIsIntlEqualA(long str str long)
@@ -750,6 +786,11 @@
@ stdcall StrRChrW (wstr wstr long)
@ stdcall StrRStrIA (str str str)
@ stdcall StrRStrIW (wstr wstr wstr)
+@ stdcall StrRetToBSTR(ptr ptr ptr)
+@ stdcall StrRetToBufA(ptr ptr ptr long)
+@ stdcall StrRetToBufW(ptr ptr ptr long)
+@ stdcall StrRetToStrA(ptr ptr ptr)
+@ stdcall StrRetToStrW(ptr ptr ptr)
@ stdcall StrSpnA (str str)
@ stdcall StrSpnW (wstr wstr)
@ stdcall StrStrA(str str)
@@ -788,52 +829,8 @@
@ stdcall UrlIsW(wstr long)
@ stdcall UrlUnescapeA(str ptr ptr long)
@ stdcall UrlUnescapeW(wstr ptr ptr long)
+@ stdcall _SHGetInstanceExplorer(ptr)
@ varargs wnsprintfA(ptr long str)
@ varargs wnsprintfW(ptr long wstr)
@ stdcall wvnsprintfA(ptr long str ptr)
@ stdcall wvnsprintfW(ptr long wstr ptr)
-
-
-# exported in later versions
-@ stdcall AssocIsDangerous(long)
-@ stdcall StrRetToBufA(ptr ptr ptr long)
-@ stdcall StrRetToBufW(ptr ptr ptr long)
-@ stdcall StrRetToBSTR(ptr ptr ptr)
-@ stdcall StrRetToStrA(ptr ptr ptr)
-@ stdcall StrRetToStrW(ptr ptr ptr)
-@ stdcall SHRegGetPathA(long str str ptr long)
-@ stdcall SHRegGetPathW(long wstr wstr ptr long)
-@ stdcall PathIsDirectoryEmptyA(str)
-@ stdcall PathIsDirectoryEmptyW(wstr)
-@ stdcall PathIsNetworkPathA(str)
-@ stdcall PathIsNetworkPathW(wstr)
-@ stdcall PathIsLFNFileSpecA(str)
-@ stdcall PathIsLFNFileSpecW(wstr)
-@ stdcall PathFindSuffixArrayA(str ptr long)
-@ stdcall PathFindSuffixArrayW(wstr ptr long)
-@ stdcall _SHGetInstanceExplorer(ptr)
-@ stdcall PathUndecorateA(str)
-@ stdcall PathUndecorateW(wstr)
-@ stdcall PathUnExpandEnvStringsA(str ptr long)
-@ stdcall PathUnExpandEnvStringsW(wstr ptr long)
-@ stdcall SHCopyKeyA(long str long long)
-@ stdcall SHCopyKeyW(long wstr long long)
-@ stdcall SHAutoComplete(ptr long)
-@ stdcall SHCreateStreamOnFileA(str long ptr)
-@ stdcall SHCreateStreamOnFileW(wstr long ptr)
-@ stdcall SHCreateStreamOnFileEx(wstr long long long ptr ptr)
-@ stdcall SHCreateStreamWrapper(ptr ptr long ptr)
-@ stdcall SHGetThreadRef (ptr)
-@ stdcall SHRegDuplicateHKey (long)
-@ stdcall SHRegSetPathA(long str str str long)
-@ stdcall SHRegSetPathW(long wstr wstr wstr long)
-@ stdcall SHRegisterValidateTemplate(wstr long)
-@ stdcall SHSetThreadRef (ptr)
-@ stdcall SHReleaseThreadRef()
-@ stdcall SHSkipJunction(ptr ptr)
-@ stdcall SHStrDupA (str ptr)
-@ stdcall SHStrDupW (wstr ptr)
-@ stdcall StrFormatByteSize64A(long long ptr long)
-@ stdcall StrFormatKBSizeA(long long str long)
-@ stdcall StrFormatKBSizeW(long long wstr long)
-@ stdcall StrCmpLogicalW(wstr wstr)