aboutsummaryrefslogtreecommitdiffstats
path: root/common/recsel.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/recsel.c')
-rw-r--r--common/recsel.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/common/recsel.c b/common/recsel.c
index 95c104fdd..60da4d3c9 100644
--- a/common/recsel.c
+++ b/common/recsel.c
@@ -172,6 +172,8 @@ find_next_lc (char *string)
*
* -- VALUE spans to the end of the expression.
* -c The string match in this part is done case-sensitive.
+ * -t Do not trim leading and trailing spaces from VALUE.
+ * Note that a space after <op> is here required.
*
* For example four calls to recsel_parse_expr() with these values for
* EXPR
@@ -203,6 +205,7 @@ recsel_parse_expr (recsel_expr_t *selector, const char *expression)
char *s0, *s;
int toend = 0;
int xcase = 0;
+ int notrim = 0;
int disjun = 0;
char *next_lc = NULL;
@@ -232,6 +235,7 @@ recsel_parse_expr (recsel_expr_t *selector, const char *expression)
{
case '-': toend = 1; break;
case 'c': xcase = 1; break;
+ case 't': notrim = 1; break;
default:
log_error ("invalid flag '-%c' in expression\n", *expr);
recsel_release (se_head);
@@ -397,8 +401,11 @@ recsel_parse_expr (recsel_expr_t *selector, const char *expression)
return my_error (GPG_ERR_INV_OP);
}
- while (*s == ' ' || *s == '\t')
+ if (*s == ' ' || *s == '\t')
s++;
+ if (!notrim)
+ while (*s == ' ' || *s == '\t')
+ s++;
if (se->op == SELECT_NONEMPTY || se->op == SELECT_ISTRUE)
{
@@ -431,7 +438,8 @@ recsel_parse_expr (recsel_expr_t *selector, const char *expression)
return my_error (GPG_ERR_NO_NAME);
}
- trim_spaces (se->name + (s - expr));
+ if (!notrim)
+ trim_spaces (se->name + (s - expr));
se->value = se->name + (s - expr);
if (!se->value[0] && !(se->op == SELECT_NONEMPTY || se->op == SELECT_ISTRUE))
{