diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/ChangeLog | 3 | ||||
-rw-r--r-- | util/w32reg.c | 16 |
2 files changed, 15 insertions, 4 deletions
diff --git a/util/ChangeLog b/util/ChangeLog index 4cb53c792..a782ee9c5 100644 --- a/util/ChangeLog +++ b/util/ChangeLog @@ -1,5 +1,8 @@ 2005-02-03 Werner Koch <[email protected]> + * w32reg.c (read_w32_registry_string): Fallback to HKLM also for a + missing name. + * http.c (connect_server): Define ERR outside of the !W32 block. 2005-02-01 David Shaw <[email protected]> diff --git a/util/w32reg.c b/util/w32reg.c index edc77ced9..f8e81b478 100644 --- a/util/w32reg.c +++ b/util/w32reg.c @@ -1,5 +1,5 @@ /* w32reg.c - MS-Windows Registry access - * Copyright (C) 1999, 2002 Free Software Foundation, Inc. + * Copyright (C) 1999, 2002, 2005 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -77,14 +77,22 @@ read_w32_registry_string( const char *root, const char *dir, const char *name ) { if (root) return NULL; /* no need for a RegClose, so return direct */ - /* It seems to be common practise to fall back to HLM. */ + /* It seems to be common practise to fall back to HKLM. */ if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) ) return NULL; /* still no need for a RegClose, so return direct */ } nbytes = 1; - if( RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) ) - goto leave; + if( RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) ) { + if (root) + goto leave; + /* Try to fallback to HKLM also vor a missing value. */ + RegCloseKey (key_handle); + if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) ) + return NULL; /* Nope. */ + if (RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes)) + goto leave; + } result = malloc( (n1=nbytes+1) ); if( !result ) goto leave; |