core: Extend gpgme_get_dirinfo to return the gpg-wks-client name.

* src/dirinfo.c (WANT_GPG_WKS_CLIENT_NAME): New const.
(struct dirinfo): New field 'gpg_wks_client_name'.
(get_gpgconf_item): Build it on demand.
(gpgme_get_dirinfo): New value "gpg-wks-client-name" for WHAT.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2017-03-21 11:16:16 +01:00
parent fab8b1a166
commit 55ac5eed9f
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
3 changed files with 18 additions and 1 deletions

View File

@ -979,6 +979,9 @@ Return the file name of the CMS engine.
@item g13-name @item g13-name
Return the name of the file container encryption engine. Return the name of the file container encryption engine.
@item gpg-wks-client-name
Return the name of the Web Key Service tool.
@end table @end table
@end deftypefun @end deftypefun

View File

@ -51,6 +51,7 @@ enum
WANT_GPG_NAME, WANT_GPG_NAME,
WANT_GPGSM_NAME, WANT_GPGSM_NAME,
WANT_G13_NAME, WANT_G13_NAME,
WANT_GPG_WKS_CLIENT_NAME,
WANT_GPG_ONE_MODE WANT_GPG_ONE_MODE
}; };
@ -73,6 +74,7 @@ static struct {
char *gpg_name; char *gpg_name;
char *gpgsm_name; char *gpgsm_name;
char *g13_name; char *g13_name;
char *gpg_wks_client_name;
int gpg_one_mode; /* System is in gpg1 mode. */ int gpg_one_mode; /* System is in gpg1 mode. */
} dirinfo; } dirinfo;
@ -333,6 +335,14 @@ get_gpgconf_item (int what)
case WANT_G13_NAME: result = dirinfo.g13_name; break; case WANT_G13_NAME: result = dirinfo.g13_name; break;
case WANT_UISRV_SOCKET: result = dirinfo.uisrv_socket; break; case WANT_UISRV_SOCKET: result = dirinfo.uisrv_socket; break;
case WANT_GPG_ONE_MODE: result = dirinfo.gpg_one_mode? "1":NULL; break; case WANT_GPG_ONE_MODE: result = dirinfo.gpg_one_mode? "1":NULL; break;
case WANT_GPG_WKS_CLIENT_NAME:
if (!dirinfo.gpg_wks_client_name && dirinfo.libexecdir)
dirinfo.gpg_wks_client_name = _gpgme_strconcat (dirinfo.libexecdir,
"/",
"gpg-wks-client",
NULL);
result = dirinfo.gpg_wks_client_name;
break;
} }
UNLOCK (dirinfo_lock); UNLOCK (dirinfo_lock);
return result; return result;
@ -438,6 +448,8 @@ gpgme_get_dirinfo (const char *what)
return get_gpgconf_item (WANT_GPGSM_NAME); return get_gpgconf_item (WANT_GPGSM_NAME);
else if (!strcmp (what, "g13-name")) else if (!strcmp (what, "g13-name"))
return get_gpgconf_item (WANT_G13_NAME); return get_gpgconf_item (WANT_G13_NAME);
else if (!strcmp (what, "gpg-wks-client-name"))
return get_gpgconf_item (WANT_GPG_WKS_CLIENT_NAME);
else if (!strcmp (what, "agent-ssh-socket")) else if (!strcmp (what, "agent-ssh-socket"))
return get_gpgconf_item (WANT_AGENT_SSH_SOCKET); return get_gpgconf_item (WANT_AGENT_SSH_SOCKET);
else if (!strcmp (what, "dirmngr-socket")) else if (!strcmp (what, "dirmngr-socket"))

View File

@ -125,7 +125,9 @@ main (int argc, char **argv )
"gpgconf-name", "gpgconf-name",
"gpg-name", "gpg-name",
"gpgsm-name", "gpgsm-name",
"g13-name", NULL }; "g13-name",
"gpg-wks-client-name",
NULL };
const char *s; const char *s;
int i; int i;