+2007-11-28 Marcus Brinkmann <marcus@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@g10code.com>
* engine-gpgsm.c (struct engine_gpgsm): Add field INLINE_DATA and
}
+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)
{
return result;
}
+
const char *
_gpgme_get_gpg_path (void)
{
if (!gpg_program)
gpg_program = find_program_in_registry ("gpgProgram");
if (!gpg_program)
- gpg_program = find_program_at_standard_place ("GNU\\GnuPG\\gpg.exe");
-#ifdef GPG_PATH
+ gpg_program = find_program_in_inst_dir ("gpg.exe");
if (!gpg_program)
- gpg_program = GPG_PATH;
-#endif
+ gpg_program = find_program_at_standard_place ("GNU\\GnuPG\\gpg.exe");
UNLOCK (get_path_lock);
return gpg_program;
}
if (!gpgsm_program)
gpgsm_program = find_program_in_registry ("gpgsmProgram");
if (!gpgsm_program)
- gpgsm_program = find_program_at_standard_place ("GNU\\GnuPG\\gpgsm.exe");
-#ifdef GPGSM_PATH
+ gpgsm_program = find_program_in_inst_dir ("gpgsm.exe");
if (!gpgsm_program)
- gpgsm_program = GPGSM_PATH;
-#endif
+ gpgsm_program = find_program_at_standard_place ("GNU\\GnuPG\\gpgsm.exe");
UNLOCK (get_path_lock);
return gpgsm_program;
}