[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