mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Fix the Windows preferences support
Now that I can test Windows binaries again, the bugs were rather easy to spot. Because of the different flow of the opening, writing and closing of the registry key my first attempt got things wrong - we simply always create the key with all access rights; if it exists Windows will just open it for us. The second bug was a cut'n'paste error. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
a9d1f318b5
commit
d2654d4951
1 changed files with 6 additions and 10 deletions
|
@ -22,23 +22,19 @@ void subsurface_open_conf(void)
|
|||
{
|
||||
LONG success;
|
||||
|
||||
success = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"), 0,
|
||||
KEY_QUERY_VALUE, &hkey);
|
||||
if (success != ERROR_SUCCESS) {
|
||||
success = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\subsurface"),
|
||||
0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
|
||||
NULL, &hkey, NULL);
|
||||
if (success != ERROR_SUCCESS)
|
||||
printf("CreateKey Software\\subsurface failed %ld\n", success);
|
||||
}
|
||||
}
|
||||
|
||||
void subsurface_set_conf(char *name, pref_type_t type, const void *value)
|
||||
{
|
||||
switch (type) {
|
||||
case PREF_BOOL:
|
||||
/* we simply store the value as DWORD */
|
||||
RegSetValueEx(hkey, TEXT(name), 0, REG_DWORD, value, 4);
|
||||
RegSetValueEx(hkey, TEXT(name), 0, REG_DWORD, &value, 4);
|
||||
break;
|
||||
case PREF_STRING:
|
||||
RegSetValueEx(hkey, TEXT(name), 0, REG_SZ, value, strlen(value));
|
||||
|
|
Loading…
Add table
Reference in a new issue