From 3a28706cfd960ff84dda9a22aa2f160b4c2efbb5 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 16 May 2019 12:24:08 +0200 Subject: [PATCH] gpgconf: Before --launch check that the config file is fine. * tools/gpgconf-comp.c (gc_component_launch): Check the conf file. * tools/gpgconf.c (gpgconf_failure): Call log_flush. -- GnuPG-bug-id: 4497 Signed-off-by: Werner Koch --- tools/gpgconf-comp.c | 18 ++++++++++++++---- tools/gpgconf.c | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/tools/gpgconf-comp.c b/tools/gpgconf-comp.c index 19912baf2..d4b3ebd29 100644 --- a/tools/gpgconf-comp.c +++ b/tools/gpgconf-comp.c @@ -1269,8 +1269,17 @@ gc_component_launch (int component) if (!(component == GC_COMPONENT_GPG_AGENT || component == GC_COMPONENT_DIRMNGR)) { - es_fputs (_("Component not suitable for launching"), es_stderr); - es_putc ('\n', es_stderr); + log_error ("%s\n", _("Component not suitable for launching")); + gpgconf_failure (0); + } + + if (gc_component_check_options (component, NULL, NULL)) + { + log_error (_("Configuration file of component %s is broken\n"), + gc_component[component].name); + if (!opt.quiet) + log_info (_("Note: Use the command \"%s%s\" to get details.\n"), + "gpgconf --check-options ", gc_component[component].name); gpgconf_failure (0); } @@ -1681,8 +1690,9 @@ collect_error_output (estream_t fp, const char *tag) } -/* Check the options of a single component. Returns 0 if everything - is OK. */ +/* Check the options of a single component. If CONF_FILE is NULL the + * standard config file is used. If OUT is not NULL the output is + * written to that stream. Returns 0 if everything is OK. */ int gc_component_check_options (int component, estream_t out, const char *conf_file) { diff --git a/tools/gpgconf.c b/tools/gpgconf.c index 4cd0505dd..d9ee4a9c6 100644 --- a/tools/gpgconf.c +++ b/tools/gpgconf.c @@ -900,6 +900,7 @@ main (int argc, char **argv) void gpgconf_failure (gpg_error_t err) { + log_flush (); if (!err) err = gpg_error (GPG_ERR_GENERAL); gpgconf_write_status