aboutsummaryrefslogtreecommitdiffstats
path: root/common/asshelp.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-09-05 08:55:10 +0000
committerWerner Koch <[email protected]>2016-09-05 09:58:48 +0000
commit0ac671f8a2b65a4b339f615c6420287a549779fa (patch)
tree97608684b97d7d01da96f6670e2bada91f01f81f /common/asshelp.c
parentgpg: New export filter drop-subkey. (diff)
downloadgnupg-0ac671f8a2b65a4b339f615c6420287a549779fa.tar.gz
gnupg-0ac671f8a2b65a4b339f615c6420287a549779fa.zip
common: Add an assuan logging monitor.
* common/asshelp.c (my_log_monitor): New var. (my_libassuan_log_handler): Run that monitor. (setup_libassuan_logging): Add arg to set a log monitor and change all callers. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r--common/asshelp.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/common/asshelp.c b/common/asshelp.c
index c03e67bff..bb01a03c7 100644
--- a/common/asshelp.c
+++ b/common/asshelp.c
@@ -69,6 +69,12 @@
static int log_cats;
#define TEST_LOG_CAT(x) (!! (log_cats & (1 << (x - 1))))
+/* The assuan log monitor used to temporary inhibit log messages from
+ * assuan. */
+static int (*my_log_monitor) (assuan_context_t ctx,
+ unsigned int cat,
+ const char *msg);
+
static int
my_libassuan_log_handler (assuan_context_t ctx, void *hook,
@@ -76,8 +82,6 @@ my_libassuan_log_handler (assuan_context_t ctx, void *hook,
{
unsigned int dbgval;
- (void)ctx;
-
if (! TEST_LOG_CAT (cat))
return 0;
@@ -85,6 +89,9 @@ my_libassuan_log_handler (assuan_context_t ctx, void *hook,
if (!(dbgval & 1024))
return 0; /* Assuan debugging is not enabled. */
+ if (ctx && my_log_monitor && !my_log_monitor (ctx, cat, msg))
+ return 0; /* Temporary disabled. */
+
if (msg)
log_string (GPGRT_LOG_DEBUG, msg);
@@ -95,7 +102,10 @@ my_libassuan_log_handler (assuan_context_t ctx, void *hook,
/* Setup libassuan to use our own logging functions. Should be used
early at startup. */
void
-setup_libassuan_logging (unsigned int *debug_var_address)
+setup_libassuan_logging (unsigned int *debug_var_address,
+ int (*log_monitor)(assuan_context_t ctx,
+ unsigned int cat,
+ const char *msg))
{
char *flagstr;
@@ -104,9 +114,11 @@ setup_libassuan_logging (unsigned int *debug_var_address)
log_cats = atoi (flagstr);
else /* Default to log the control channel. */
log_cats = (1 << (ASSUAN_LOG_CONTROL - 1));
+ my_log_monitor = log_monitor;
assuan_set_log_cb (my_libassuan_log_handler, debug_var_address);
}
+
/* Change the Libassuan log categories to those given by NEWCATS.
NEWCATS is 0 the default category of ASSUAN_LOG_CONTROL is
selected. Note, that setup_libassuan_logging overrides the values