And make these strings const.
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/oledb32/datainit.c | 10 +++++----- dlls/oledb32/dslocator.c | 6 +++--- dlls/oledb32/oledb_private.h | 2 +- include/msdasc.idl | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/oledb32/datainit.c b/dlls/oledb32/datainit.c index 3694ac67fec..c2066712f8b 100644 --- a/dlls/oledb32/datainit.c +++ b/dlls/oledb32/datainit.c @@ -631,7 +631,7 @@ static WCHAR *strstriW(const WCHAR *str, const WCHAR *sub) return r; }
-HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPWSTR initstring, REFIID riid, IUnknown **datasource) +HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPCOLESTR initstring, REFIID riid, IUnknown **datasource) { static const WCHAR providerW[] = L"Provider="; BOOL datasource_created = FALSE; @@ -768,7 +768,7 @@ HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPWSTR initstring, REFIID }
static HRESULT WINAPI datainit_GetDataSource(IDataInitialize *iface, IUnknown *outer, DWORD clsctx, - LPWSTR initstring, REFIID riid, IUnknown **datasource) + LPCOLESTR initstring, REFIID riid, IUnknown **datasource) { datainit *This = impl_from_IDataInitialize(iface);
@@ -977,7 +977,7 @@ static HRESULT WINAPI datainit_CreateDBInstanceEx(IDataInitialize *iface, REFCLS return E_NOTIMPL; }
-static HRESULT WINAPI datainit_LoadStringFromStorage(IDataInitialize *iface, LPWSTR pwszFileName, +static HRESULT WINAPI datainit_LoadStringFromStorage(IDataInitialize *iface, LPCOLESTR pwszFileName, LPWSTR *ppwszInitializationString) { datainit *This = impl_from_IDataInitialize(iface); @@ -987,8 +987,8 @@ static HRESULT WINAPI datainit_LoadStringFromStorage(IDataInitialize *iface, LPW return E_NOTIMPL; }
-static HRESULT WINAPI datainit_WriteStringToStorage(IDataInitialize *iface, LPWSTR pwszFileName, - LPWSTR pwszInitializationString, DWORD dwCreationDisposition) +static HRESULT WINAPI datainit_WriteStringToStorage(IDataInitialize *iface, LPCOLESTR pwszFileName, + LPCOLESTR pwszInitializationString, DWORD dwCreationDisposition) { datainit *This = impl_from_IDataInitialize(iface);
diff --git a/dlls/oledb32/dslocator.c b/dlls/oledb32/dslocator.c index 6991be65f65..066f14a5508 100644 --- a/dlls/oledb32/dslocator.c +++ b/dlls/oledb32/dslocator.c @@ -707,7 +707,7 @@ static ULONG WINAPI datainitialize_Release(IDataInitialize *iface) }
static HRESULT WINAPI datainitialize_GetDataSource(IDataInitialize *iface, - IUnknown *outer, DWORD context, LPWSTR initstring, REFIID riid, IUnknown **datasource) + IUnknown *outer, DWORD context, LPCOLESTR initstring, REFIID riid, IUnknown **datasource) { TRACE("(%p)->(%p %#lx %s %s %p)\n", iface, outer, context, debugstr_w(initstring), debugstr_guid(riid), datasource); @@ -738,13 +738,13 @@ static HRESULT WINAPI datainitialize_CreateDBInstanceEx(IDataInitialize *iface, return E_NOTIMPL; }
-static HRESULT WINAPI datainitialize_LoadStringFromStorage(IDataInitialize *iface, LPWSTR filename, LPWSTR *initstring) +static HRESULT WINAPI datainitialize_LoadStringFromStorage(IDataInitialize *iface, LPCOLESTR filename, LPWSTR *initstring) { FIXME("(%p)->(%s %p): stub\n", iface, debugstr_w(filename), initstring); return E_NOTIMPL; }
-static HRESULT WINAPI datainitialize_WriteStringToStorage(IDataInitialize *iface, LPWSTR filename, LPWSTR initstring, +static HRESULT WINAPI datainitialize_WriteStringToStorage(IDataInitialize *iface, LPCOLESTR filename, LPCOLESTR initstring, DWORD disposition) { FIXME("(%p)->(%s %s %#lx): stub\n", iface, debugstr_w(filename), debugstr_w(initstring), disposition); diff --git a/dlls/oledb32/oledb_private.h b/dlls/oledb32/oledb_private.h index 3bc16f73f52..278b3c47f0e 100644 --- a/dlls/oledb32/oledb_private.h +++ b/dlls/oledb32/oledb_private.h @@ -23,7 +23,7 @@ HRESULT create_error_info(IUnknown *outer, void **obj); HRESULT create_oledb_rowpos(IUnknown *outer, void **obj); HRESULT create_dslocator(IUnknown *outer, void **obj);
-HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPWSTR initstring, REFIID riid, +HRESULT get_data_source(IUnknown *outer, DWORD clsctx, LPCOLESTR initstring, REFIID riid, IUnknown **datasource);
extern HINSTANCE instance; diff --git a/include/msdasc.idl b/include/msdasc.idl index 6a904ba1d2f..98d3f2abb50 100644 --- a/include/msdasc.idl +++ b/include/msdasc.idl @@ -92,7 +92,7 @@ library MSDASC interface IDataInitialize : IUnknown { HRESULT GetDataSource([in] IUnknown* pUnkOuter, [in] DWORD dwClsCtx, - [in] LPWSTR pwszInitializationString, [in] REFIID riid, + [in] LPCOLESTR pwszInitializationString, [in] REFIID riid, [in, out] IUnknown** ppDataSource);
HRESULT GetInitializationString([in] IUnknown* pDataSource, [in] boolean fIncludePassword, @@ -113,9 +113,9 @@ library MSDASC [in] DWORD cmq, [in, size_is(cmq)] const IID **iids, [out, size_is(cmq)] IUnknown **ifs, [out, size_is(cmq)] HRESULT *hr);
- HRESULT LoadStringFromStorage([in] LPWSTR pwszFileName, [out] LPWSTR* ppwszInitializationString); + HRESULT LoadStringFromStorage([in] LPCOLESTR pwszFileName, [out] LPOLESTR *ppwszInitializationString);
- HRESULT WriteStringToStorage([in] LPWSTR pwszFileName, [in] LPWSTR pwszInitializationString, + HRESULT WriteStringToStorage([in] LPCOLESTR pwszFileName, [in] LPCOLESTR pwszInitializationString, [in] DWORD dwCreationDisposition); }
From: Zhiyi Zhang zzhang@codeweavers.com
And make these strings const. --- dlls/oledb32/tests/database.c | 57 +++++++++++------------------------ 1 file changed, 18 insertions(+), 39 deletions(-)
diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c index c0a4fbd4005..4a3d7c8c907 100644 --- a/dlls/oledb32/tests/database.c +++ b/dlls/oledb32/tests/database.c @@ -38,8 +38,6 @@
DEFINE_GUID(CSLID_MSDAER, 0xc8b522cf,0x5cf3,0x11ce,0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d);
-static WCHAR initstring_default[] = {'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';',0}; - #define EXPECT_REF(obj,ref) _expect_ref((IUnknown*)obj, ref, __LINE__) static void _expect_ref(IUnknown* obj, ULONG ref, int line) { @@ -49,7 +47,7 @@ static void _expect_ref(IUnknown* obj, ULONG ref, int line) ok_(__FILE__, line)(rc == ref, "expected refcount %ld, got %ld\n", ref, rc); }
-static void test_GetDataSource(WCHAR *initstring) +static void test_GetDataSource(const WCHAR *initstring) { IDataInitialize *datainit = NULL; IDBInitialize *dbinit = NULL; @@ -223,8 +221,7 @@ static ULONG WINAPI dbpersist_Release(IPersist *iface)
static HRESULT WINAPI dbpersist_GetClassID(IPersist *iface, CLSID *clsid) { - static const WCHAR msdasqlW[] = {'M','S','D','A','S','Q','L',0}; - return CLSIDFromProgID(msdasqlW, clsid); + return CLSIDFromProgID(L"MSDASQL", clsid); }
static const IPersistVtbl dbpersistvtbl = { @@ -289,7 +286,7 @@ static const IDBInitializeVtbl dbinitvtbl = {
static IDBInitialize dbinittest = { &dbinitvtbl };
-static void test_GetDataSource2(WCHAR *initstring) +static void test_GetDataSource2(const WCHAR *initstring) { IDataInitialize *datainit = NULL; IDBInitialize *dbinit = NULL; @@ -307,24 +304,14 @@ static void test_GetDataSource2(WCHAR *initstring)
static void test_database(void) { - static WCHAR initstring_jet[] = {'P','r','o','v','i','d','e','r','=','M','i','c','r','o','s','o','f','t','.', - 'J','e','t','.','O','L','E','D','B','.','4','.','0',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';', - 'P','e','r','s','i','s','t',' ','S','e','c','u','r','i','t','y',' ','I','n','f','o','=','F','a','l','s','e',';',0}; - static WCHAR initstring_lower[] = {'d','a','t','a',' ','s','o','u','r','c','e','=','d','u','m','m','y',';',0}; - static WCHAR customprop[] = {'d','a','t','a',' ','s','o','u','r','c','e','=','d','u','m','m','y',';', - 'c','u','s','t','o','m','p','r','o','p','=','1','2','3','.','4',';',0}; - static WCHAR initial_catalog_prop[] = {'D','a','t','a',' ','S','o','u','r','c','e','=', - 'i','n','i','t','i','a','l','_','c','a','t','a','l','o','g','_','t','e','s','t',';', - 'I','n','i','t','i','a','l',' ','C','a','t','a','l','o','g','=','d','u','m','m','y','_','c','a','t','a','l','o','g',0}; - static WCHAR extended_prop[] = {'d','a','t','a',' ','s','o','u','r','c','e','=','d','u','m','m','y',';', - 'E','x','t','e','n','d','e','d',' ','P','r','o','p','e','r','t','i','e','s','=','"','D','R','I','V','E','R','=','A', - ' ','W','i','n','e',' ','O','D','B','C',' ','d','r','i','v','e','r',';','U','I','D','=','w','i','n','e',';','"',';',0}; - static WCHAR extended_prop2[] = {'d','a','t','a',' ','s','o','u','r','c','e','=',''','d','u','m','m','y',''',';', - 'c','u','s','t','o','m','p','r','o','p','=',''','1','2','3','.','4',''',';',0}; - static WCHAR multi_provider_prop_test[] = {'D','a','t','a',' ','S','o','u','r','c','e','=', - 'p','r','o','v','i','d','e','r','_','p','r','o','p','_','t','e','s','t',';', - 'a','=','1',';','b','=','2',';','c','=','3',';',0}; + static const WCHAR *initstring_default = L"Data Source=dummy;"; + static const WCHAR *initstring_jet = L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dummy;Persist Security Info=False;"; + static const WCHAR *initstring_lower = L"data source=dummy;"; + static const WCHAR *customprop = L"data source=dummy;customprop=123.4;"; + static const WCHAR *initial_catalog_prop = L"Data Source=initial_catalog_test;Initial Catalog=dummy_catalog"; + static const WCHAR *extended_prop = L"data source=dummy;Extended Properties="DRIVER=A Wine ODBC driver;UID=wine;";"; + static const WCHAR *extended_prop2 = L"data source='dummy';customprop='123.4';"; + static const WCHAR *multi_provider_prop_test = L"Data Source=provider_prop_test;a=1;b=2;c=3;"; IDataInitialize *datainit = NULL; HRESULT hr;
@@ -532,21 +519,13 @@ static void test_errorinfo(void)
static void test_initializationstring(void) { - static const WCHAR initstring_msdasql[] = {'P','r','o','v','i','d','e','r','=','M','S','D','A','S','Q','L','.','1',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y', 0}; - static const WCHAR initstring_msdasql2[] = {'p','R','o','V','i','D','e','R','=','M','S','D','A','S','Q','L','.','1',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y', 0}; - static const WCHAR initstring_sqloledb[] = {'P','r','o','v','i','d','e','r','=','S','Q','L','O','L','E','D','B','.','1',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y', 0}; - static const WCHAR initstring_mode[] = {'P','r','o','v','i','d','e','r','=','M','S','D','A','S','Q','L','.','1',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';', - 'M','o','d','e','=','i','n','v','a','l','i','d',0}; - static const WCHAR initstring_mode2[] = {'P','r','o','v','i','d','e','r','=','M','S','D','A','S','Q','L','.','1',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';', - 'M','o','d','e','=','W','r','i','t','e','R','e','a','d',0}; - static const WCHAR initstring_mode3[] = {'P','r','o','v','i','d','e','r','=','M','S','D','A','S','Q','L','.','1',';', - 'D','a','t','a',' ','S','o','u','r','c','e','=','d','u','m','m','y',';', - 'M','o','d','e','=','R','e','a','d','W','R','I','T','E',0}; + static const WCHAR *initstring_default = L"Data Source=dummy;"; + static const WCHAR *initstring_msdasql = L"Provider=MSDASQL.1;Data Source=dummy"; + static const WCHAR *initstring_msdasql2 = L"pRoViDeR=MSDASQL.1;Data Source=dummy"; + static const WCHAR *initstring_sqloledb = L"Provider=SQLOLEDB.1;Data Source=dummy"; + static const WCHAR *initstring_mode = L"Provider=MSDASQL.1;Data Source=dummy;Mode=invalid"; + static const WCHAR *initstring_mode2 = L"Provider=MSDASQL.1;Data Source=dummy;Mode=WriteRead"; + static const WCHAR *initstring_mode3 = L"Provider=MSDASQL.1;Data Source=dummy;Mode=ReadWRITE"; IDataInitialize *datainit = NULL; IDBInitialize *dbinit; HRESULT hr;
From: Zhiyi Zhang zzhang@codeweavers.com
All these tests are already covered by test_Properties() in msdasql/tests/provider.c. --- dlls/oledb32/tests/database.c | 78 ----------------------------------- 1 file changed, 78 deletions(-)
diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c index 4a3d7c8c907..67b45737ba8 100644 --- a/dlls/oledb32/tests/database.c +++ b/dlls/oledb32/tests/database.c @@ -984,83 +984,6 @@ static void test_dslocator(void) } }
-static void test_odbc_provider(void) -{ - HRESULT hr; - IDBProperties *props; - DBPROPIDSET propidset; - ULONG infocount; - DBPROPINFOSET *propinfoset; - WCHAR *desc; - DBPROPID properties[14] = - { - DBPROP_AUTH_PASSWORD, DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, DBPROP_AUTH_USERID, - DBPROP_INIT_DATASOURCE, DBPROP_INIT_HWND, DBPROP_INIT_LOCATION, - DBPROP_INIT_MODE, DBPROP_INIT_PROMPT, DBPROP_INIT_TIMEOUT, - DBPROP_INIT_PROVIDERSTRING, DBPROP_INIT_LCID, DBPROP_INIT_CATALOG, - DBPROP_INIT_OLEDBSERVICES, DBPROP_INIT_GENERALTIMEOUT - }; - - hr = CoCreateInstance( &CLSID_MSDASQL, NULL, CLSCTX_ALL, &IID_IDBProperties, (void **)&props); - ok(hr == S_OK, "Failed to create object 0x%08lx\n", hr); - if (FAILED(hr)) - { - return; - } - - propidset.rgPropertyIDs = NULL; - propidset.cPropertyIDs = 0; - propidset.guidPropertySet = DBPROPSET_DBINITALL; - - infocount = 0; - hr = IDBProperties_GetPropertyInfo(props, 1, &propidset, &infocount, &propinfoset, &desc); - ok(hr == S_OK, "got 0x%08lx\n", hr); - if (hr == S_OK) - { - ULONG i; - DBPROPIDSET propidlist; - ULONG propcnt; - DBPROPSET *propset; - - ok(IsEqualGUID(&propinfoset->guidPropertySet, &DBPROPSET_DBINIT), "got %s\n", - debugstr_guid(&propinfoset->guidPropertySet)); - ok(propinfoset->cPropertyInfos == 14, "got %ld\n", propinfoset->cPropertyInfos); - - propidlist.guidPropertySet = DBPROPSET_DBINIT; - propidlist.cPropertyIDs = propinfoset->cPropertyInfos; - propidlist.rgPropertyIDs = CoTaskMemAlloc(propinfoset->cPropertyInfos * sizeof(DBPROP)); - - for (i = 0; i < propinfoset->cPropertyInfos; i++) - { - ok(properties[i] == propinfoset->rgPropertyInfos[i].dwPropertyID, "%ld, got %ld\n", i, - propinfoset->rgPropertyInfos[i].dwPropertyID); - ok(propinfoset->rgPropertyInfos[i].vtType != VT_EMPTY, "%ld, got %d\n", i, - propinfoset->rgPropertyInfos[i].vtType); - - propidlist.rgPropertyIDs[i] = propinfoset->rgPropertyInfos[i].dwPropertyID; - } - - for (i = 0; i < propinfoset->cPropertyInfos; i++) - VariantClear(&propinfoset->rgPropertyInfos[i].vValues); - - CoTaskMemFree(propinfoset->rgPropertyInfos); - CoTaskMemFree(propinfoset); - - hr = IDBProperties_GetProperties(props, 1, &propidlist, &propcnt, &propset); - ok(hr == S_OK, "got 0x%08lx\n", hr); - ok(propidlist.cPropertyIDs == 14, "got %ld\n", propinfoset->cPropertyInfos); - - for (i = 0; i < propidlist.cPropertyIDs; i++) - ok(properties[i] == propidlist.rgPropertyIDs[i], "%ld, got %ld\n", i, - propidlist.rgPropertyIDs[i]); - - CoTaskMemFree(propidlist.rgPropertyIDs); - CoTaskMemFree(propset); - } - - IDBProperties_Release(props); -} - static void test_odbc_enumerator(void) { HRESULT hr; @@ -1105,7 +1028,6 @@ START_TEST(database) test_errorinfo(); test_initializationstring(); test_dslocator(); - test_odbc_provider(); test_odbc_enumerator();
/* row position */
From: Zhiyi Zhang zzhang@codeweavers.com
--- dlls/oledb32/tests/database.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c index 67b45737ba8..ebd3cb2fadf 100644 --- a/dlls/oledb32/tests/database.c +++ b/dlls/oledb32/tests/database.c @@ -47,6 +47,19 @@ static void _expect_ref(IUnknown* obj, ULONG ref, int line) ok_(__FILE__, line)(rc == ref, "expected refcount %ld, got %ld\n", ref, rc); }
+static void free_dbpropinfoset(ULONG count, DBPROPINFOSET *propinfoset) +{ + ULONG i, j; + + for (i = 0; i < count; i++) + { + for (j = 0; j < propinfoset[i].cPropertyInfos; j++) + VariantClear(&propinfoset[i].rgPropertyInfos[j].vValues); + CoTaskMemFree(propinfoset[i].rgPropertyInfos); + } + CoTaskMemFree(propinfoset); +} + static void test_GetDataSource(const WCHAR *initstring) { IDataInitialize *datainit = NULL; @@ -90,7 +103,7 @@ static void test_GetDataSource(const WCHAR *initstring) pInfoset->rgPropertyInfos[i].vtType); }
- CoTaskMemFree(pInfoset); + free_dbpropinfoset(cnt, pInfoset); CoTaskMemFree(ary); }