From ac485b4f253ad6bbd2bc648650b56d60fc82f89d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 25 Feb 2019 15:55:13 +0100 Subject: conf: New option --show-socket. * tools/gpgconf-comp.c (gc_component_t): Move this enum to ... * tools/gpgconf.h: here. * tools/gpgconf.c (oShowSocket): New. (opts): Add new option. (main): Implement new option. -- This is a convenience options for software which directly connects to gpg-agent and thus needs to new the socket. By using --show-socket along with --launch that software can also autostart the agent or the dirmngr. Without this two calls to gpgconf would be required. Actually the same behaviour can be achieved by running gpg-connect-agent to query the running gpg-agent's socket via GETINFO. The gpg-connect also makes sure that the agent is started. This is not anymore suggested because gpgconf shall in future be used for all such things. Signed-off-by: Werner Koch --- tools/gpgconf.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'tools/gpgconf.c') diff --git a/tools/gpgconf.c b/tools/gpgconf.c index df3ae8cab..b67125b89 100644 --- a/tools/gpgconf.c +++ b/tools/gpgconf.c @@ -47,6 +47,7 @@ enum cmd_and_opt_values oHomedir, oBuilddir, oStatusFD, + oShowSocket, aListComponents, aCheckPrograms, @@ -108,6 +109,7 @@ static ARGPARSE_OPTS opts[] = { oBuilddir, "build-prefix", 2, "@" }, { oNull, "null", 0, "@" }, { oNoVerbose, "no-verbose", 0, "@"}, + ARGPARSE_s_n (oShowSocket, "show-socket", "@"), ARGPARSE_end(), }; @@ -525,6 +527,7 @@ main (int argc, char **argv) int no_more_options = 0; enum cmd_and_opt_values cmd = 0; estream_t outfp = NULL; + int show_socket = 0; early_system_init (); gnupg_reopen_std (GPGCONF_NAME); @@ -558,6 +561,7 @@ main (int argc, char **argv) case oStatusFD: set_status_fd (translate_sys2libc_fd_int (pargs.r.ret_int, 1)); break; + case oShowSocket: show_socket = 1; break; case aListDirs: case aListComponents: @@ -682,7 +686,22 @@ main (int argc, char **argv) } else if (cmd == aLaunch) { - if (gc_component_launch (idx)) + err = gc_component_launch (idx); + if (show_socket) + { + char *names[2]; + + if (idx == GC_COMPONENT_GPG_AGENT) + names[0] = "agent-socket"; + else if (idx == GC_COMPONENT_DIRMNGR) + names[0] = "dirmngr-socket"; + else + names[0] = NULL; + names[1] = NULL; + get_outfp (&outfp); + list_dirs (outfp, names); + } + if (err) gpgconf_failure (0); } else -- cgit