diff options
author | Andrew Innes <andrewi@gnu.org> | 1999-05-02 10:28:55 +0000 |
---|---|---|
committer | Andrew Innes <andrewi@gnu.org> | 1999-05-02 10:28:55 +0000 |
commit | 49fb6381cae006086974b6c3fa6d03bf52935d8b (patch) | |
tree | 7ebba13f2e5b93665a36c58f542f5146a038115e /src/w32reg.c | |
parent | f446016fdb7f8b85891ea351799e115dad44304e (diff) | |
download | emacs-49fb6381cae006086974b6c3fa6d03bf52935d8b.tar.gz |
(w32_get_string_resource): Check for name in current
user area, and if not found look in the local machine area.
Diffstat (limited to 'src/w32reg.c')
-rw-r--r-- | src/w32reg.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/w32reg.c b/src/w32reg.c index d32032c76e2..6a8413fdc08 100644 --- a/src/w32reg.c +++ b/src/w32reg.c @@ -40,13 +40,16 @@ w32_get_string_resource (name, class, dwexptype) DWORD dwType; DWORD cbData; BOOL ok = FALSE; + HKEY hive = HKEY_CURRENT_USER; + trykey: + BLOCK_INPUT; - /* Check both the current user and the local machine to see if we have any resources */ - - if (RegOpenKeyEx (HKEY_CURRENT_USER, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS - || RegOpenKeyEx (HKEY_LOCAL_MACHINE, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS) + /* Check both the current user and the local machine to see if we have + any resources */ + + if (RegOpenKeyEx (hive, REG_ROOT, 0, KEY_READ, &hrootkey) == ERROR_SUCCESS) { char *keyname; @@ -76,13 +79,19 @@ w32_get_string_resource (name, class, dwexptype) if (!ok) { - if (lpvalue) xfree (lpvalue); + if (lpvalue) + { + xfree (lpvalue); + lpvalue = NULL; + } + if (hive == HKEY_CURRENT_USER) + { + hive = HKEY_LOCAL_MACHINE; + goto trykey; + } return (NULL); } - else - { - return (lpvalue); - } + return (lpvalue); } /* Retrieve the string resource specified by NAME with CLASS from |