gpgconf: Before --launch check that the config file is fine.
authorWerner Koch <wk@gnupg.org>
Thu, 16 May 2019 10:24:08 +0000 (12:24 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 16 May 2019 10:25:07 +0000 (12:25 +0200)
* 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 <wk@gnupg.org>
tools/gpgconf-comp.c
tools/gpgconf.c

index a308c1c..110f889 100644 (file)
@@ -1273,8 +1273,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);
     }
 
@@ -1685,8 +1694,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)
 {
index b67125b..a0cd97f 100644 (file)
@@ -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