On Wed, 1 Aug 2007, Magnus Holmgren wrote:

> I' had trouble seeing the benefit of adding "true" and "false" as trivial 
> conditions, taking no arguments. 

Note also that Exim expands left to right. You are asking for something 
like {$something} to work as a condition if the expansion of $something 
is a truth value. The code doesn't work like that. After Exim has read

  ${if and {{
  
it looks for one of the known condition names (eq, >, matches, etc) as a 
*literal string*. After it has found something it recognizes, it then 
knows how many arguments are required, and then it expands each of the 
arguments *independently*. Consider

  ${if and {                                    \
           {eq{$something}{true}}               \
           {some other condition}               \
           }                                    \
           {yes string}{no string}}   
  
It won't expand $something until it has seen "eq", after which it knows 
to expect two arguments.

If Exim did any kind of "pre-expansion" it would often be expanding 
substrings that it then discarded.

One could implement the literal condition "true" (with zero arguments),
but it would be pretty useless, wouldn't it?

Another way of looking at what I am saying is that Exim doesn't expand 
strings twice by default. ... Hmm, you can of course make it do so by 
using the "expand" operator. So if you could say

  ${if true {x}{y}}
  
then you could also say

  ${expand: \${if ${lookup...} {yes}{no} }
  
and if the lookup returned "true" it would work. But is not, IMHO, a
great advance on what you can already do:

  ${lookup... {${if eq{$value}{true}{yes}{no}} {no} }  



-- 
Philip Hazel            University of Cambridge Computing Service
Get the Exim 4 book:    http://www.uit.co.uk/exim-book

-- 
## List details at http://lists.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to