[svn] gpgme - r1282 - trunk/gpgme

svn author marcus cvs at cvs.gnupg.org
Wed Nov 28 17:31:07 CET 2007


Author: marcus
Date: 2007-11-28 17:31:05 +0100 (Wed, 28 Nov 2007)
New Revision: 1282

Modified:
   trunk/gpgme/ChangeLog
   trunk/gpgme/w32-util.c
Log:
2007-11-28  Marcus Brinkmann  <marcus at g10code.de>

	* w32-util.c (_gpgme_get_gpg_path, _gpgme_get_gpgsm_path): Search
	for installation directory.  Remove old fallback default.
	(find_program_in_inst_dir): New function.


Modified: trunk/gpgme/ChangeLog
===================================================================
--- trunk/gpgme/ChangeLog	2007-11-26 10:59:11 UTC (rev 1281)
+++ trunk/gpgme/ChangeLog	2007-11-28 16:31:05 UTC (rev 1282)
@@ -1,3 +1,9 @@
+2007-11-28  Marcus Brinkmann  <marcus at g10code.de>
+
+	* w32-util.c (_gpgme_get_gpg_path, _gpgme_get_gpgsm_path): Search
+	for installation directory.  Remove old fallback default.
+	(find_program_in_inst_dir): New function.
+
 2007-11-26  Werner Koch  <wk at g10code.com>
 
 	* engine-gpgsm.c (struct engine_gpgsm): Add field INLINE_DATA and

Modified: trunk/gpgme/w32-util.c
===================================================================
--- trunk/gpgme/w32-util.c	2007-11-26 10:59:11 UTC (rev 1281)
+++ trunk/gpgme/w32-util.c	2007-11-28 16:31:05 UTC (rev 1282)
@@ -245,6 +245,36 @@
 
 
 static char *
+find_program_in_inst_dir (const char *name)
+{
+  char *result = NULL;
+  char *tmp;
+
+  tmp = read_w32_registry_string ("HKEY_LOCAL_MACHINE",
+					"Software\\GNU\\GnuPG",
+					"Install Directory");
+  if (!tmp)
+    return NULL;
+
+  result = malloc (strlen (tmp) + 1 + strlen (name) + 1);
+  if (!result)
+    {
+      free (tmp);
+      return NULL;
+    }
+
+  strcpy (stpcpy (stpcpy (result, tmp), "\\"), name);
+  free (tmp);
+  if (access (result, F_OK))
+    {
+      free (result);
+      return NULL;
+    }
+
+  return result;
+}
+
+static char *
 find_program_at_standard_place (const char *name)
 {
   char path[MAX_PATH];
@@ -266,6 +296,7 @@
   return result;
 }
 
+
 const char *
 _gpgme_get_gpg_path (void)
 {
@@ -275,11 +306,9 @@
   if (!gpg_program)
     gpg_program = find_program_in_registry ("gpgProgram");
   if (!gpg_program)
+    gpg_program = find_program_in_inst_dir ("gpg.exe");
+  if (!gpg_program)
     gpg_program = find_program_at_standard_place ("GNU\\GnuPG\\gpg.exe");
-#ifdef GPG_PATH
-  if (!gpg_program)
-    gpg_program = GPG_PATH;
-#endif
   UNLOCK (get_path_lock);
   return gpg_program;
 }
@@ -293,11 +322,9 @@
   if (!gpgsm_program)
     gpgsm_program = find_program_in_registry ("gpgsmProgram");
   if (!gpgsm_program)
+    gpgsm_program = find_program_in_inst_dir ("gpgsm.exe");
+  if (!gpgsm_program)
     gpgsm_program = find_program_at_standard_place ("GNU\\GnuPG\\gpgsm.exe");
-#ifdef GPGSM_PATH
-  if (!gpgsm_program)
-    gpgsm_program = GPGSM_PATH;
-#endif
   UNLOCK (get_path_lock);
   return gpgsm_program;
 }




More information about the Gnupg-commits mailing list