From 45918813f0599505e4f84bd44b09fb708b4e7f23 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Tue, 20 Apr 2021 10:50:10 +0200 Subject: [PATCH] Support log-file option from common.conf for all daemon. * agent/gpg-agent.c: Include comopt.h. (main): Read log-file option from common.conf. (reread_configuration): Ditto. * dirmngr/dirmngr.c: Include comopt.h. (main): Read log-file option from common.conf. (reread_configuration): Ditto. * kbx/keyboxd.c: Include comopt.h. (main): Read log-file option from common.conf. (reread_configuration): Ditto. * scd/scdaemon.c: Include comopt.h. (main): Read log-file option from common.conf. Signed-off-by: Werner Koch --- agent/gpg-agent.c | 28 +++++++++++++++++++++++++++- dirmngr/dirmngr.c | 31 +++++++++++++++++++++++++++++-- kbx/keyboxd.c | 31 +++++++++++++++++++++++++++++-- scd/scdaemon.c | 12 ++++++++++++ 4 files changed, 97 insertions(+), 5 deletions(-) diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 74c2108b1..0a9e903c4 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -59,6 +59,7 @@ #include "../common/gc-opt-flags.h" #include "../common/exechelp.h" #include "../common/asshelp.h" +#include "../common/comopt.h" #include "../common/init.h" @@ -1317,6 +1318,13 @@ main (int argc, char **argv) finalize_rereadable_options (); + /* Get a default log file from common.conf. */ + if (!logfile && !parse_comopt (GNUPG_MODULE_NAME_AGENT, debug_argparser)) + { + logfile = comopt.logfile; + comopt.logfile = NULL; + } + /* Print a warning if an argument looks like an option. */ if (!opt.quiet && !(pargs.flags & ARGPARSE_FLAG_STOP_SEEN)) { @@ -1986,6 +1994,7 @@ reread_configuration (void) gpgrt_argparse_t pargs; char *twopart; int dummy; + int logfile_seen = 0; if (!config_filename) return; /* No config file. */ @@ -2013,12 +2022,29 @@ reread_configuration (void) else if (pargs.r_opt < -1) pargs.err = ARGPARSE_PRINT_WARNING; else /* Try to parse this option - ignore unchangeable ones. */ - parse_rereadable_options (&pargs, 1); + { + if (pargs.r_opt == oLogFile) + logfile_seen = 1; + parse_rereadable_options (&pargs, 1); + } } gpgrt_argparse (NULL, &pargs, NULL); /* Release internal state. */ xfree (twopart); + finalize_rereadable_options (); set_debug (); + + /* Get a default log file from common.conf. */ + if (!logfile_seen && !parse_comopt (GNUPG_MODULE_NAME_AGENT, !!opt.debug)) + { + if (!current_logfile || !comopt.logfile + || strcmp (current_logfile, comopt.logfile)) + { + log_set_file (comopt.logfile); + xfree (current_logfile); + current_logfile = comopt.logfile? xtrystrdup (comopt.logfile) : NULL; + } + } } diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 33de686f5..38ae1c6ed 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -71,6 +71,7 @@ #if USE_LDAP # include "ldap-wrapper.h" #endif +#include "../common/comopt.h" #include "../common/init.h" #include "../common/gc-opt-flags.h" #include "dns-stuff.h" @@ -1072,6 +1073,14 @@ main (int argc, char **argv) if (log_get_errorcount(0)) exit(2); + + /* Get a default log file from common.conf. */ + if (!logfile && !parse_comopt (GNUPG_MODULE_NAME_DIRMNGR, debug_argparser)) + { + logfile = comopt.logfile; + comopt.logfile = NULL; + } + if (nogreeting ) greeting = 0; @@ -1806,9 +1815,10 @@ reread_configuration (void) gpgrt_argparse_t pargs; char *twopart; int dummy; + int logfile_seen = 0; if (!opt.config_filename) - return; /* No config file. */ + goto finish; /* No config file. */ twopart = strconcat (DIRMNGR_NAME EXTSEP_S "conf" PATHSEP_S, opt.config_filename, NULL); @@ -1833,11 +1843,28 @@ reread_configuration (void) else if (pargs.r_opt < -1) pargs.err = ARGPARSE_PRINT_WARNING; else /* Try to parse this option - ignore unchangeable ones. */ - parse_rereadable_options (&pargs, 1); + { + if (pargs.r_opt == oLogFile) + logfile_seen = 1; + parse_rereadable_options (&pargs, 1); + } } gpgrt_argparse (NULL, &pargs, NULL); /* Release internal state. */ xfree (twopart); post_option_parsing (); + + finish: + /* Get a default log file from common.conf. */ + if (!logfile_seen && !parse_comopt (GNUPG_MODULE_NAME_DIRMNGR, !!opt.debug)) + { + if (!current_logfile || !comopt.logfile + || strcmp (current_logfile, comopt.logfile)) + { + log_set_file (comopt.logfile); + xfree (current_logfile); + current_logfile = comopt.logfile? xtrystrdup (comopt.logfile) : NULL; + } + } } diff --git a/kbx/keyboxd.c b/kbx/keyboxd.c index be9098c13..76a0694a4 100644 --- a/kbx/keyboxd.c +++ b/kbx/keyboxd.c @@ -58,6 +58,7 @@ #include "../common/init.h" #include "../common/gc-opt-flags.h" #include "../common/exechelp.h" +#include "../common/comopt.h" #include "frontend.h" @@ -610,6 +611,14 @@ main (int argc, char **argv ) if (log_get_errorcount(0)) exit (2); + /* Get a default log file from common.conf. */ + if (!logfile && !parse_comopt (GNUPG_MODULE_NAME_KEYBOXD, debug_argparser)) + { + logfile = comopt.logfile; + comopt.logfile = NULL; + } + + finalize_rereadable_options (); /* Print a warning if an argument looks like an option. */ @@ -988,9 +997,10 @@ reread_configuration (void) gpgrt_argparse_t pargs; char *twopart; int dummy; + int logfile_seen = 0; if (!config_filename) - return; /* No config file. */ + goto finish; /* No config file. */ twopart = strconcat ("keyboxd" EXTSEP_S "conf" PATHSEP_S, config_filename, NULL); @@ -1015,12 +1025,29 @@ reread_configuration (void) else if (pargs.r_opt < -1) pargs.err = ARGPARSE_PRINT_WARNING; else /* Try to parse this option - ignore unchangeable ones. */ - parse_rereadable_options (&pargs, 1); + { + if (pargs.r_opt == oLogFile) + logfile_seen = 1; + parse_rereadable_options (&pargs, 1); + } } gpgrt_argparse (NULL, &pargs, NULL); /* Release internal state. */ xfree (twopart); finalize_rereadable_options (); set_debug (); + + finish: + /* Get a default log file from common.conf. */ + if (!logfile_seen && !parse_comopt (GNUPG_MODULE_NAME_KEYBOXD, !!opt.debug)) + { + if (!current_logfile || !comopt.logfile + || strcmp (current_logfile, comopt.logfile)) + { + log_set_file (comopt.logfile); + xfree (current_logfile); + current_logfile = comopt.logfile? xtrystrdup (comopt.logfile) : NULL; + } + } } diff --git a/scd/scdaemon.c b/scd/scdaemon.c index eddc83256..60d68c26a 100644 --- a/scd/scdaemon.c +++ b/scd/scdaemon.c @@ -54,6 +54,7 @@ #include "../common/gc-opt-flags.h" #include "../common/asshelp.h" #include "../common/exechelp.h" +#include "../common/comopt.h" #include "../common/init.h" #ifndef ENAMETOOLONG @@ -652,6 +653,17 @@ main (int argc, char **argv ) if (log_get_errorcount(0)) exit(2); + + /* Process common component options. */ + if (parse_comopt (GNUPG_MODULE_NAME_SCDAEMON, debug_argparser)) + exit(2); + + if (!logfile) + { + logfile = comopt.logfile; + comopt.logfile = NULL; + } + if (nogreeting ) greeting = 0;