On Wed, Apr 26, 2017 at 12:46:49AM +0000, Alistair Leslie-Hughes wrote:
diff --git a/dlls/odbccp32/odbccp32.c b/dlls/odbccp32/odbccp32.c index f28d464..475b74e 100644 --- a/dlls/odbccp32/odbccp32.c +++ b/dlls/odbccp32/odbccp32.c @@ -65,6 +65,7 @@ static const WCHAR odbc_error_invalid_param_string[] = {'I','n','v','a','l','i', static const WCHAR odbc_error_invalid_dsn[] = {'I','n','v','a','l','i','d',' ','D','S','N',0}; static const WCHAR odbc_error_load_lib_failed[] = {'L','o','a','d',' ','L','i','b','r','a','r','y',' ','F','a','i','l','e','d',0}; static const WCHAR odbc_error_request_failed[] = {'R','e','q','u','e','s','t',' ','F','a','i','l','e','d',0}; +static const WCHAR odbc_error_invalid_keyword[] = {'I','n','v','a','l','i','d',' ','k','e','y','w','o','r','d',' ','v','a','l','u','e',0};
/* Push an error onto the error stack, taking care of ranges etc. */ static void push_error(int code, LPCWSTR msg) @@ -303,6 +304,64 @@ static HMODULE load_config_driver(const WCHAR *driver) return hmod; }
+static BOOL write_config_value(const WCHAR *driver, const WCHAR *args) +{
- long ret;
- HKEY hkey, hkeydriver;
- WCHAR *name = NULL;
- if (!args)
return FALSE;
- if ((ret = RegOpenKeyW(HKEY_LOCAL_MACHINE, odbcini, &hkey)) == ERROR_SUCCESS)
- {
if ((ret = RegOpenKeyW(hkey, driver, &hkeydriver)) == ERROR_SUCCESS)
{
WCHAR *divider, *value;
name = heap_alloc( (strlenW(args) + 1) * sizeof(WCHAR));
if(!name)
{
push_error(ODBC_ERROR_OUT_OF_MEM, odbc_error_out_of_mem);
goto fail;
}
lstrcpyW(name, args);
divider = strchrW(name,'=');
if(!divider)
{
push_error(ODBC_ERROR_INVALID_KEYWORD_VALUE, odbc_error_invalid_keyword);
goto fail;
}
value = divider + 1;
*divider = '\0';
TRACE("Write pair: %s = %s\n", debugstr_w(name), debugstr_w(value));
if(RegSetValueExW(hkeydriver, name, 0, REG_SZ, (BYTE*)value,
strlenW(value) * sizeof(WCHAR)) != ERROR_SUCCESS)
The length should be (strlenW(value) + 1) * sizeof(WCHAR). Sorry, I missed that last time.
While you're at it, decide whether you're going to use a space after 'if' or not, and then be consistent.
Otherwise, this looks good.
Huw.