X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/3b7ad313e0d7b351c55cf999474b61cdc18ecad1..563b67aafd1cdfa239c5ce1f6d3d6fc5567dee39:/src/w32reg.c diff --git a/src/w32reg.c b/src/w32reg.c index dcb4ba2971..6a8413fdc0 100644 --- a/src/w32reg.c +++ b/src/w32reg.c @@ -28,10 +28,10 @@ Boston, MA 02111-1307, USA. */ #include #include -#define REG_ROOT "SOFTWARE\\GNU\\Emacs\\" +#define REG_ROOT "SOFTWARE\\GNU\\Emacs" LPBYTE -win32_get_string_resource (name, class, dwexptype) +w32_get_string_resource (name, class, dwexptype) char *name, *class; DWORD dwexptype; { @@ -40,13 +40,16 @@ win32_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 @@ win32_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 @@ -93,5 +102,5 @@ x_get_string_resource (rdb, name, class) int rdb; char *name, *class; { - return (win32_get_string_resource (name, class, REG_SZ)); + return (w32_get_string_resource (name, class, REG_SZ)); }