summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilip Hazel <ph10@hermes.cam.ac.uk>2006-07-27 13:50:43 +0000
committerPhilip Hazel <ph10@hermes.cam.ac.uk>2006-07-27 13:50:43 +0000
commit366fc9f0fbb8ea549b36dc2f4afee4e92bf7d81d (patch)
treebabb97d32d708427a8677cb682b17b7a396e2ff7 /src
parent084efe8d7243ef5184443e2c7075e80074476703 (diff)
Allow (?-i) to work as expected in a (n)wildlsearch key.
Diffstat (limited to 'src')
-rw-r--r--src/src/match.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/src/match.c b/src/src/match.c
index 218944530..238a2cdea 100644
--- a/src/src/match.c
+++ b/src/src/match.c
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/match.c,v 1.14 2006/04/04 10:01:20 ph10 Exp $ */
+/* $Cambridge: exim/src/src/match.c,v 1.15 2006/07/27 13:50:43 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -74,7 +74,8 @@ Arguments:
returns ERROR)
Contents of the argument block:
- subject the subject string to be checked
+ origsubject the subject in its original casing
+ subject the subject string to be checked, lowercased if caseless
expand_setup if < 0, don't set up any numeric expansion variables;
if = 0, set $0 to whole subject, and either
$1 to what matches * or
@@ -99,7 +100,7 @@ check_string_block *cb = (check_string_block *)arg;
int search_type, partial, affixlen, starflags;
int expand_setup = cb->expand_setup;
uschar *affix;
-uschar *s = cb->subject;
+uschar *s;
uschar *filename = NULL;
uschar *keyquery, *result, *semicolon;
void *handle;
@@ -108,6 +109,12 @@ error = error; /* Keep clever compilers from complaining */
if (valueptr != NULL) *valueptr = NULL; /* For non-lookup matches */
+/* For regular expressions, use cb->origsubject rather than cb->subject so that
+it works if the pattern uses (?-i) to turn off case-independence, overriding
+"caseless". */
+
+s = (pattern[0] == '^')? cb->origsubject : cb->subject;
+
/* If required to set up $0, initialize the data but don't turn on by setting
expand_nmax until the match is assured. */