diff options
| author | Werner Koch <[email protected]> | 2013-12-27 15:08:20 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2013-12-27 15:08:20 +0000 | 
| commit | 02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b (patch) | |
| tree | c2286910441497fa7af0debbeca2da61f61617d0 /src/posix-util.c | |
| parent | Document API change for GPGME_EVENT_DONE from 2009. (diff) | |
| download | gpgme-02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b.tar.gz gpgme-02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b.zip | |
Locate engine names only at runtime and prefer GnuPG-2.
* configure.ac (NEED_GPG_VERSION, NEED_GPGSM_VERSION)
(NEED_G13_VERSION, NEED_GPGCONF_VERSION): Remove vars and all related
checks.  Do not check for any engine version.
(HAVE_ASSUAN): Remove AM conditional.
* src/Makefile.am: Remove separate component vars and always build all
engines but uiserver.
* src/dirinfo.c (WANT_GPGCONF_NAME): New.
(struct dirinfo): Add field gpgconf_name.
(_gpgme_get_default_gpgconf_name): Use WANT_GPGCONF_NAME.
(get_gpgconf_item): Set gpgconf name and adjust for _gpgme_get_*_path
now returning a malloced string.
* src/engine.c (engine_ops): Always init all engines except for
uiserver.
* src/posix-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path):
Remove unused functions.
(walk_path): New.
(_gpgme_get_gpg_path, _gpgme_get_gpgconf_path ): Re-implement using
walk_path.
* src/w32-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path): Remove
unused functions.
(_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Return a malloced
string.
* src/engine-g13.c (g13_get_req_version): Use a hardwired string with
the required version.  This info belongs into this file.
* src/engine-gpg.c (gpg_get_req_version): Ditto.
* src/engine-gpgconf.c (gpgconf_get_req_version): Ditto.
* src/engine-gpgsm.c (gpgsm_get_req_version): Ditto.
* tests/t-engine-info.c: Replace now useless test by an info output.
* tests/gpg/Makefile.am (GPG, GPG_AGENT): Hardwire gpg and gpg-agent.
* tests/gpgsm/Makefile.am (GPGSM): Hardwire gpgsm.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src/posix-util.c')
| -rw-r--r-- | src/posix-util.c | 73 | 
1 files changed, 43 insertions, 30 deletions
| diff --git a/src/posix-util.c b/src/posix-util.c index fd445070..d4e4e3f4 100644 --- a/src/posix-util.c +++ b/src/posix-util.c @@ -30,47 +30,60 @@  #include "util.h"  #include "sys-util.h" -const char * -_gpgme_get_gpg_path (void) -{ -#ifdef GPG_PATH -  return GPG_PATH; -#else -  return NULL; -#endif -} -const char * -_gpgme_get_gpgsm_path (void) +/* Find an executable program PGM along the envvar PATH.  */ +static char * +walk_path (const char *pgm)  { -#ifdef GPGSM_PATH -  return GPGSM_PATH; -#else +  const char *path, *s; +  char *fname, *p; + +  path = getenv ("PATH"); +  if (!path) +    path = "/bin:/usr/bin:."; + +  fname = malloc (strlen (path) + 1 + strlen (pgm) + 1); +  if (!fname) +    return NULL; + +  for (;;) +    { +      for (s=path, p=fname; *s && *s != ':'; s++, p++) +        *p = *s; +      if (*p != '/') +        *p++ = '/'; +      strcpy (p, pgm); +      if (!access (fname, X_OK)) +        return fname; +      if (!*s) +        break; +      path = s + 1; +    } + +  free (fname);    return NULL; -#endif  } -const char * -_gpgme_get_gpgconf_path (void) + +/* Return the full file name of the GPG binary.  This function is used +   if gpgconf was not found and thus it can be assumed that gpg2 is +   not installed.  This function is only called by get_gpgconf_item +   and may not be called concurrently.  */ +char * +_gpgme_get_gpg_path (void)  { -#ifdef GPGCONF_PATH -  return GPGCONF_PATH; -#else -  return NULL; -#endif +  return walk_path ("gpg");  } -const char * -_gpgme_get_g13_path (void) + +/* This function is only called by get_gpgconf_item and may not be +   called concurrently.  */ +char * +_gpgme_get_gpgconf_path (void)  { -#ifdef G13_PATH -  return G13_PATH; -#else -  return NULL; -#endif +  return walk_path ("gpgconf");  } -  /* See w32-util.c */  int  _gpgme_get_conf_int (const char *key, int *value) | 
