diff options
| author | Marcus Brinkmann <[email protected]> | 2007-11-28 16:31:05 +0000 | 
|---|---|---|
| committer | Marcus Brinkmann <[email protected]> | 2007-11-28 16:31:05 +0000 | 
| commit | 6286b436bdd22361538267d91959576ef11a2bd9 (patch) | |
| tree | 2ca6237ca01b76d203ba70d7e39f296ecdfd1a9c | |
| parent | Made autolog feature for if --enable-fd-passing has not been enabled. (diff) | |
| download | gpgme-6286b436bdd22361538267d91959576ef11a2bd9.tar.gz gpgme-6286b436bdd22361538267d91959576ef11a2bd9.zip | |
2007-11-28  Marcus Brinkmann  <[email protected]>
	* 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.
| -rw-r--r-- | gpgme/ChangeLog | 6 | ||||
| -rw-r--r-- | gpgme/w32-util.c | 43 | 
2 files changed, 41 insertions, 8 deletions
| diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index 38ad0dd0..f942d83c 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,3 +1,9 @@ +2007-11-28  Marcus Brinkmann  <[email protected]> + +	* 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  <[email protected]>  	* engine-gpgsm.c (struct engine_gpgsm): Add field INLINE_DATA and diff --git a/gpgme/w32-util.c b/gpgme/w32-util.c index 50a3c92d..60c8396d 100644 --- a/gpgme/w32-util.c +++ b/gpgme/w32-util.c @@ -245,6 +245,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)  {    char path[MAX_PATH]; @@ -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;  } | 
