aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/recsel.c17
-rw-r--r--common/recsel.h1
-rw-r--r--g10/gpg.c5
-rw-r--r--g10/import.c2
-rw-r--r--g10/keylist.c2
-rw-r--r--g10/options.h2
6 files changed, 29 insertions, 0 deletions
diff --git a/common/recsel.c b/common/recsel.c
index c2c98ed06..36aa01476 100644
--- a/common/recsel.c
+++ b/common/recsel.c
@@ -71,6 +71,10 @@ struct recsel_expr_s
};
+/* Global debug variable. */
+static int recsel_debug;
+
+
/* Helper */
static inline gpg_error_t
my_error_from_syserror (void)
@@ -460,6 +464,15 @@ recsel_release (recsel_expr_t a)
}
+int
+recsel_set_debug (int value)
+{
+ int old = recsel_debug;
+ recsel_debug = value;
+ return old;
+}
+
+
void
recsel_dump (recsel_expr_t selector)
{
@@ -511,6 +524,8 @@ recsel_select (recsel_expr_t selector,
while (se)
{
value = getval? getval (cookie, se->name) : NULL;
+ if (recsel_debug)
+ log_debug ("%s: name=%s got value '%s'\n", __func__, se->name, value);
if (!value)
value = "";
@@ -616,5 +631,7 @@ recsel_select (recsel_expr_t selector,
}
}
+ if (recsel_debug)
+ log_debug ("%s: result=%d\n", __func__, result);
return result;
}
diff --git a/common/recsel.h b/common/recsel.h
index 0e0a7928a..a33a0da01 100644
--- a/common/recsel.h
+++ b/common/recsel.h
@@ -34,6 +34,7 @@ typedef struct recsel_expr_s *recsel_expr_t;
gpg_error_t recsel_parse_expr (recsel_expr_t *selector, const char *expr);
void recsel_release (recsel_expr_t a);
+int recsel_set_debug (int value);
void recsel_dump (recsel_expr_t selector);
int recsel_select (recsel_expr_t selector,
const char *(*getval)(void *cookie, const char *propname),
diff --git a/g10/gpg.c b/g10/gpg.c
index 65b56c4d1..5f9a4b042 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -65,6 +65,7 @@
#include "../common/init.h"
#include "../common/mbox-util.h"
#include "../common/zb32.h"
+#include "../common/recsel.h"
#include "../common/shareddefs.h"
#include "../common/compliance.h"
#include "../common/comopt.h"
@@ -1043,6 +1044,7 @@ static struct debug_flags_s debug_flags [] =
{ DBG_TRUST_VALUE , "trust" },
{ DBG_HASHING_VALUE, "hashing" },
{ DBG_IPC_VALUE , "ipc" },
+ { DBG_RECSEL_VALUE , "recsel" },
{ DBG_CLOCK_VALUE , "clock" },
{ DBG_LOOKUP_VALUE , "lookup" },
{ DBG_EXTPROG_VALUE, "extprog" },
@@ -1413,6 +1415,9 @@ set_debug (const char *level)
if (opt.debug && opt.quiet)
opt.quiet = 0;
+ /* Pass debug flags to the record selection module. */
+ recsel_set_debug (!!DBG_RECSEL);
+
if (opt_set_iobuf_size || opt_set_iobuf_size_used)
log_debug ("iobuf buffer size is %uk\n",
iobuf_set_buffer_size (opt_set_iobuf_size));
diff --git a/g10/import.c b/g10/import.c
index 9d92268c5..9fbebf39d 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -1464,6 +1464,8 @@ impex_filter_getval (void *cookie, const char *propname)
/* We allow a prefix delimited by a slash to limit the scope of the
* keyword. Note that "pub" also includes "sec" and "sub" includes
* "ssb". */
+ if (DBG_RECSEL) /* Printing the packet type is useful. */
+ log_debug ("%s: pkttype=%s\n", __func__, pkttype_str (node->pkt->pkttype));
if ((s=strchr (propname, '/')) && s != propname)
{
size_t n = s - propname;
diff --git a/g10/keylist.c b/g10/keylist.c
index fc0e161ea..8d4617f85 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -132,6 +132,8 @@ parse_and_set_list_filter (const char *string)
err = recsel_parse_expr (&list_filter.selkey, string+7);
else
err = gpg_error (GPG_ERR_INV_NAME);
+ if (!err && DBG_RECSEL)
+ recsel_dump (list_filter.selkey);
return err;
}
diff --git a/g10/options.h b/g10/options.h
index c877404a7..59a3cab73 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -368,6 +368,7 @@ struct {
#define DBG_TRUST_VALUE 256 /* debug the trustdb */
#define DBG_HASHING_VALUE 512 /* debug hashing operations */
#define DBG_IPC_VALUE 1024 /* debug assuan communication */
+#define DBG_RECSEL_VALUE 2048 /* Debug the record selection */
#define DBG_CLOCK_VALUE 4096
#define DBG_LOOKUP_VALUE 8192 /* debug the key lookup */
#define DBG_EXTPROG_VALUE 16384 /* debug external program calls */
@@ -382,6 +383,7 @@ struct {
#define DBG_TRUST (opt.debug & DBG_TRUST_VALUE)
#define DBG_HASHING (opt.debug & DBG_HASHING_VALUE)
#define DBG_IPC (opt.debug & DBG_IPC_VALUE)
+#define DBG_RECSEL (opt.debug & DBG_RECSEL_VALUE)
#define DBG_CLOCK (opt.debug & DBG_CLOCK_VALUE)
#define DBG_LOOKUP (opt.debug & DBG_LOOKUP_VALUE)
#define DBG_EXTPROG (opt.debug & DBG_EXTPROG_VALUE)