changeset 24672:8387918b52c6

(w32_get_string_resource): Check for name in current user area, and if not found look in the local machine area.
author Andrew Innes <andrewi@gnu.org>
date Sun, 02 May 1999 10:28:55 +0000
parents 65ebab3569e0
children ea7d8435d078
files src/w32reg.c
diffstat 1 files changed, 18 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32reg.c	Sun May 02 10:27:27 1999 +0000
+++ b/src/w32reg.c	Sun May 02 10:28:55 1999 +0000
@@ -40,13 +40,16 @@
   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 @@
   
   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