From: Marcus Brinkmann Date: Wed, 28 Nov 2007 16:31:05 +0000 (+0000) Subject: 2007-11-28 Marcus Brinkmann X-Git-Tag: gpgme-1.2.0@1385~102 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ac371d1cc06deb3578e9c0250185ed368a62f27d;p=gpgme.git 2007-11-28 Marcus Brinkmann * 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. --- diff --git a/trunk/gpgme/ChangeLog b/trunk/gpgme/ChangeLog index 38ad0dd..f942d83 100644 --- a/trunk/gpgme/ChangeLog +++ b/trunk/gpgme/ChangeLog @@ -1,3 +1,9 @@ +2007-11-28 Marcus Brinkmann + + * 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 * engine-gpgsm.c (struct engine_gpgsm): Add field INLINE_DATA and diff --git a/trunk/gpgme/w32-util.c b/trunk/gpgme/w32-util.c index 50a3c92..60c8396 100644 --- a/trunk/gpgme/w32-util.c +++ b/trunk/gpgme/w32-util.c @@ -244,6 +244,36 @@ find_program_in_registry (const char *name) } +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) { @@ -266,6 +296,7 @@ find_program_at_standard_place (const char *name) return result; } + const char * _gpgme_get_gpg_path (void) { @@ -275,11 +306,9 @@ _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; } @@ -293,11 +322,9 @@ _gpgme_get_gpgsm_path (void) 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; }