aboutsummaryrefslogtreecommitdiffstats
path: root/src/dirinfo.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2013-12-27 15:08:20 +0000
committerWerner Koch <[email protected]>2013-12-27 15:08:20 +0000
commit02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b (patch)
treec2286910441497fa7af0debbeca2da61f61617d0 /src/dirinfo.c
parentDocument API change for GPGME_EVENT_DONE from 2009. (diff)
downloadgpgme-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/dirinfo.c')
-rw-r--r--src/dirinfo.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/dirinfo.c b/src/dirinfo.c
index 27c0dd76..2e387fa1 100644
--- a/src/dirinfo.c
+++ b/src/dirinfo.c
@@ -38,6 +38,7 @@ enum
{
WANT_HOMEDIR,
WANT_AGENT_SOCKET,
+ WANT_GPGCONF_NAME,
WANT_GPG_NAME,
WANT_GPGSM_NAME,
WANT_G13_NAME,
@@ -49,6 +50,7 @@ static struct {
int valid; /* Cached information is valid. */
char *homedir;
char *agent_socket;
+ char *gpgconf_name;
char *gpg_name;
char *gpgsm_name;
char *g13_name;
@@ -194,13 +196,14 @@ get_gpgconf_item (int what)
LOCK (dirinfo_lock);
if (!dirinfo.valid)
{
- const char *pgmname;
+ char *pgmname;
pgmname = _gpgme_get_gpgconf_path ();
if (pgmname && access (pgmname, F_OK))
{
_gpgme_debug (DEBUG_INIT,
"gpgme_dinfo: gpgconf='%s' [not installed]\n", pgmname);
+ free (pgmname);
pgmname = NULL; /* Not available. */
}
else
@@ -212,12 +215,13 @@ get_gpgconf_item (int what)
GnuPG-1. */
pgmname = _gpgme_get_gpg_path ();
if (pgmname)
- dirinfo.gpg_name = strdup (pgmname);
+ dirinfo.gpg_name = pgmname;
}
else
{
read_gpgconf_dirs (pgmname, 0);
read_gpgconf_dirs (pgmname, 1);
+ dirinfo.gpgconf_name = pgmname;
}
/* Even if the reading of the directories failed (e.g. due to an
too old version gpgconf or no gpgconf at all), we need to
@@ -249,6 +253,7 @@ get_gpgconf_item (int what)
{
case WANT_HOMEDIR: result = dirinfo.homedir; break;
case WANT_AGENT_SOCKET: result = dirinfo.agent_socket; break;
+ case WANT_GPGCONF_NAME: result = dirinfo.gpgconf_name; break;
case WANT_GPG_NAME: result = dirinfo.gpg_name; break;
case WANT_GPGSM_NAME: result = dirinfo.gpgsm_name; break;
case WANT_G13_NAME: result = dirinfo.g13_name; break;
@@ -294,14 +299,11 @@ _gpgme_get_default_g13_name (void)
return get_gpgconf_item (WANT_G13_NAME);
}
-/* Return the default gpgconf file name. Returns NULL if not known.
- Because gpgconf is the binary used to retrieved all these default
- names, this function is merely a simple wrapper around the function
- used to locate this binary. */
+/* Return the default gpgconf file name. Returns NULL if not known. */
const char *
_gpgme_get_default_gpgconf_name (void)
{
- return _gpgme_get_gpgconf_path ();
+ return get_gpgconf_item (WANT_GPGCONF_NAME);
}
/* Return the default UI-server socket name. Returns NULL if not