w32: Fallback to 2.1 reg key for gpgconf search
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 1 Mar 2016 12:11:13 +0000 (13:11 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 5 Jul 2016 19:51:24 +0000 (21:51 +0200)
* src/w32-util.c (_gpgme_get_gpgconf_path): Fallback to 2.1 installer
 registry key.

--
Finding gpgconf is utterly important so we should be as compatible
as possible.

src/w32-util.c

index a27955b..0086fe3 100644 (file)
@@ -563,15 +563,26 @@ _gpgme_get_gpgconf_path (void)
       gpgconf = find_program_at_standard_place (name2);
     }
 
-  /* 3. Try to find gpgconf.exe using that ancient registry key.  This
-        should eventually be removed.  */
+  /* 3. Try to find gpgconf.exe using the Windows registry. */
   if (!gpgconf)
     {
       char *dir;
 
-      dir = read_w32_registry_string ("HKEY_LOCAL_MACHINE",
+      dir = read_w32_registry_string (NULL,
                                       "Software\\GNU\\GnuPG",
                                       "Install Directory");
+      if (!dir)
+        {
+          char *tmp = read_w32_registry_string (NULL,
+                                                "Software\\GnuPG",
+                                                "Install Directory");
+          if (tmp)
+            {
+              if (gpgrt_asprintf (&dir, "%s\\bin", tmp) == -1)
+                return NULL;
+              free (tmp);
+            }
+        }
       if (dir)
         {
           gpgconf = find_program_in_dir (dir, name);