Commit 0cb665ca authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

oledb32: Allow single quotation marks around property values.

parent 83d33b6f
...@@ -401,18 +401,19 @@ static HRESULT parse_init_string(const WCHAR *initstring, struct dbprops *props) ...@@ -401,18 +401,19 @@ static HRESULT parse_init_string(const WCHAR *initstring, struct dbprops *props)
while (start && (eq = strchrW(start, '='))) while (start && (eq = strchrW(start, '=')))
{ {
static const WCHAR providerW[] = {'P','r','o','v','i','d','e','r',0}; static const WCHAR providerW[] = {'P','r','o','v','i','d','e','r',0};
WCHAR *delim, quote;
BSTR value, name; BSTR value, name;
WCHAR *delim;
name = SysAllocStringLen(start, eq - start); name = SysAllocStringLen(start, eq - start);
/* skip equal sign to get value */ /* skip equal sign to get value */
eq++; eq++;
if (*eq == '"') quote = (*eq == '"' || *eq == '\'') ? *eq : 0;
if (quote)
{ {
/* for quoted value string, skip opening mark, look for terminating one */ /* for quoted value string, skip opening mark, look for terminating one */
eq++; eq++;
delim = strchrW(eq, '"'); delim = strchrW(eq, quote);
} }
else else
delim = strchrW(eq, ';'); delim = strchrW(eq, ';');
...@@ -422,7 +423,7 @@ static HRESULT parse_init_string(const WCHAR *initstring, struct dbprops *props) ...@@ -422,7 +423,7 @@ static HRESULT parse_init_string(const WCHAR *initstring, struct dbprops *props)
/* skip semicolon if present */ /* skip semicolon if present */
if (delim) if (delim)
{ {
if (*delim == '"') if (*delim == quote)
delim++; delim++;
if (*delim == ';') if (*delim == ';')
delim++; delim++;
......
...@@ -295,6 +295,8 @@ static void test_database(void) ...@@ -295,6 +295,8 @@ static void test_database(void)
static WCHAR extended_prop[] = {'d','a','t','a',' ','s','o','u','r','c','e','=','d','u','m','m','y',';', 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', '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}; ' ','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};
IDataInitialize *datainit = NULL; IDataInitialize *datainit = NULL;
HRESULT hr; HRESULT hr;
...@@ -312,6 +314,7 @@ static void test_database(void) ...@@ -312,6 +314,7 @@ static void test_database(void)
test_GetDataSource(initstring_lower); test_GetDataSource(initstring_lower);
test_GetDataSource2(customprop); test_GetDataSource2(customprop);
test_GetDataSource2(extended_prop); test_GetDataSource2(extended_prop);
test_GetDataSource2(extended_prop2);
} }
static void free_dispparams(DISPPARAMS *params) static void free_dispparams(DISPPARAMS *params)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment