Added mouse-highlight variable to turn off mouse highlight or
[bpt/emacs.git] / src / w32reg.c
index 0bffe82..6a8413f 100644 (file)
@@ -31,7 +31,7 @@ Boston, MA 02111-1307, USA.  */
 #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));
 }