diff options
author | Werner Koch <[email protected]> | 2019-02-25 14:55:13 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-02-26 12:15:58 +0000 |
commit | 92e26ade5c0d52f2e50eaf338a0bb8006e75711c (patch) | |
tree | 4b1dbc2c66c26074ee9c4da80055accb971477f1 | |
parent | scd: Don't let the "undefined" app cause a conflict error. (diff) | |
download | gnupg-92e26ade5c0d52f2e50eaf338a0bb8006e75711c.tar.gz gnupg-92e26ade5c0d52f2e50eaf338a0bb8006e75711c.zip |
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 <[email protected]>
(cherry picked from commit ac485b4f253ad6bbd2bc648650b56d60fc82f89d)
Diffstat (limited to '')
-rw-r--r-- | tools/gpgconf-comp.c | 28 | ||||
-rw-r--r-- | tools/gpgconf.c | 21 | ||||
-rw-r--r-- | tools/gpgconf.h | 28 |
3 files changed, 48 insertions, 29 deletions
diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c index b10b146f4..79a7489f9 100644 --- a/tools/gpgconf-comp.c +++ b/tools/gpgconf-comp.c @@ -1066,34 +1066,6 @@ static gc_option_t gc_options_pinentry[] = -/* Component system. Each component is a set of options that can be - configured at the same time. If you change this, don't forget to - update GC_COMPONENT below. */ -typedef enum - { - /* The classic GPG for OpenPGP. */ - GC_COMPONENT_GPG, - - /* The GPG Agent. */ - GC_COMPONENT_GPG_AGENT, - - /* The Smardcard Daemon. */ - GC_COMPONENT_SCDAEMON, - - /* GPG for S/MIME. */ - GC_COMPONENT_GPGSM, - - /* The LDAP Directory Manager for CRLs. */ - GC_COMPONENT_DIRMNGR, - - /* The external Pinentry. */ - GC_COMPONENT_PINENTRY, - - /* The number of components. */ - GC_COMPONENT_NR - } gc_component_t; - - /* The information associated with each component. */ static const struct { diff --git a/tools/gpgconf.c b/tools/gpgconf.c index 59085d8b5..4cd0505dd 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 diff --git a/tools/gpgconf.h b/tools/gpgconf.h index 8a061ef68..192259789 100644 --- a/tools/gpgconf.h +++ b/tools/gpgconf.h @@ -43,6 +43,34 @@ void gpgconf_failure (gpg_error_t err) GPGRT_ATTR_NORETURN; /*-- gpgconf-comp.c --*/ +/* Component system. Each component is a set of options that can be + * configured at the same time. If you change this, don't forget to + * update GC_COMPONENT in gpgconf-comp.c. */ +typedef enum + { + /* The classic GPG for OpenPGP. */ + GC_COMPONENT_GPG, + + /* The GPG Agent. */ + GC_COMPONENT_GPG_AGENT, + + /* The Smardcard Daemon. */ + GC_COMPONENT_SCDAEMON, + + /* GPG for S/MIME. */ + GC_COMPONENT_GPGSM, + + /* The LDAP Directory Manager for CRLs. */ + GC_COMPONENT_DIRMNGR, + + /* The external Pinentry. */ + GC_COMPONENT_PINENTRY, + + /* The number of components. */ + GC_COMPONENT_NR + } gc_component_t; + + /* Initialize the components. */ void gc_components_init (void); |