pdp 2010/06/07 09:42:15 BST
Modified files:
exim-doc/doc-docbook spec.xfpt
exim-doc/doc-txt ChangeLog
exim-src/src expand.c
Log:
Both bool{} and bool_lax{} should ignore trailing whitespace.
Revision Changes Path
1.85 +2 -2 exim/exim-doc/doc-docbook/spec.xfpt
1.630 +2 -1 exim/exim-doc/doc-txt/ChangeLog
1.108 +12 -1 exim/exim-src/src/expand.c
Index: spec.xfpt
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-docbook/spec.xfpt,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- spec.xfpt 7 Jun 2010 08:23:20 -0000 1.84
+++ spec.xfpt 7 Jun 2010 08:42:15 -0000 1.85
@@ -1,4 +1,4 @@
-. $Cambridge: exim/exim-doc/doc-docbook/spec.xfpt,v 1.84 2010/06/07 08:23:20 pdp Exp $
+. $Cambridge: exim/exim-doc/doc-docbook/spec.xfpt,v 1.85 2010/06/07 08:42:15 pdp Exp $
.
. /////////////////////////////////////////////////////////////////////////////
. This is the primary source of the Exim Manual. It is an xfpt document that is
@@ -9802,7 +9802,7 @@
This condition turns a string holding a true or false representation into
a boolean state. It parses &"true"&, &"false"&, &"yes"& and &"no"&
(case-insensitively); also positive integer numbers map to true if non-zero,
-false if zero. Leading whitespace is ignored.
+false if zero. Leading and trailing whitespace is ignored.
All other string values will result in expansion failure.
When combined with ACL variables, this expansion condition will let you
@@ -9819,7 +9819,7 @@
where &%bool%& accepts a strict set of strings, &%bool_lax%& uses the same
loose definition that the Router &%condition%& option uses. The empty string
and the values &"false"&, &"no"& and &"0"& map to false, all others map to
-true.
+true. Leading and trailing whitespace is ignored.
Note that where &"bool{00}"& is false, &"bool_lax{00}"& is true.
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.629
retrieving revision 1.630
diff -u -r1.629 -r1.630
--- ChangeLog 7 Jun 2010 08:23:20 -0000 1.629
+++ ChangeLog 7 Jun 2010 08:42:15 -0000 1.630
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.629 2010/06/07 08:23:20 pdp Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.630 2010/06/07 08:42:15 pdp Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -47,7 +47,8 @@
PP/15 Bugzilla 816: support multiple condition rules on Routers.
PP/16 Add bool_lax{} expansion operator and use that for combining multiple
- condition rules, instead of bool{}.
+ condition rules, instead of bool{}. Make both bool{} and bool_lax{}
+ ignore trailing whitespace.
Exim version 4.72
Index: expand.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/expand.c,v
retrieving revision 1.107
retrieving revision 1.108
diff -u -r1.107 -r1.108
--- expand.c 7 Jun 2010 08:23:20 -0000 1.107
+++ expand.c 7 Jun 2010 08:42:15 -0000 1.108
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/expand.c,v 1.107 2010/06/07 08:23:20 pdp Exp $ */
+/* $Cambridge: exim/exim-src/src/expand.c,v 1.108 2010/06/07 08:42:15 pdp Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -2502,7 +2502,7 @@
case ECOND_BOOL_LAX:
{
uschar *sub_arg[1];
- uschar *t;
+ uschar *t, *t2;
uschar *ourname;
size_t len;
BOOL boolvalue = FALSE;
@@ -2521,6 +2521,17 @@
t = sub_arg[0];
while (isspace(*t)) t++;
len = Ustrlen(t);
+ if (len)
+ {
+ /* trailing whitespace: seems like a good idea to ignore it too */
+ t2 = t + len - 1;
+ while (isspace(*t2)) t2--;
+ if (t2 != (t + len))
+ {
+ *++t2 = '\0';
+ len = t2 - t;
+ }
+ }
DEBUG(D_expand)
debug_printf("considering %s: %s\n", ourname, len ? t : US"<empty>");
/* logic for the lax case from expand_check_condition(), which also does