Make $value usable in the "else" part of ${run.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Thu, 28 Apr 2005 13:29:27 +0000 (13:29 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Thu, 28 Apr 2005 13:29:27 +0000 (13:29 +0000)
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/src/expand.c

index cbb8e9cbbc45707587f1dd2baa3d9320fe4822f6..c2a6c7711624f2016a8b187876bbb303af52d2cb 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.128 2005/04/28 13:06:32 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.129 2005/04/28 13:29:27 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -263,6 +263,8 @@ PH/42 Exim no longer gives details of delivery errors for specific addresses in
       warning messages. There are also a few cases where bland messages such
       as "unrouteable address" or "local delivery error" are given.
 
       warning messages. There are also a few cases where bland messages such
       as "unrouteable address" or "local delivery error" are given.
 
+PH/43 $value is now also set for the "else" part of a ${run expansion.
+
 
 A note about Exim versions 4.44 and 4.50
 ----------------------------------------
 
 A note about Exim versions 4.44 and 4.50
 ----------------------------------------
index bd6f2e8c18903bf7cca247ac9ee5f76eace04b1c..2df222c99f729e86149b003daad3c74faaec0490 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/NewStuff,v 1.37 2005/04/27 13:29:32 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/NewStuff,v 1.38 2005/04/28 13:29:27 ph10 Exp $
 
 New Features in Exim
 --------------------
 
 New Features in Exim
 --------------------
@@ -167,6 +167,9 @@ PH/10 $message_linecount is a new variable that contains the total number of
       In the MAIL and RCPT ACLs, the value is zero because at that stage the
       message has not yet been received.
 
       In the MAIL and RCPT ACLs, the value is zero because at that stage the
       message has not yet been received.
 
+PH/11 In a ${run expansion, the variable $value (which contains the standard
+      output) is now also usable in the "else" string.
+
 
 Version 4.50
 ------------
 
 Version 4.50
 ------------
index b1f7d3f9698d14eca6d69c788880dc193bf42b3b..49686555e3d0eb2048f4022bd3b6c867da58cc16 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/expand.c,v 1.19 2005/04/27 13:29:32 ph10 Exp $ */
+/* $Cambridge: exim/src/src/expand.c,v 1.20 2005/04/28 13:29:27 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -2333,8 +2333,8 @@ if (yes)
 
 /* If this is called from a lookup or an extract, we want to restore $value to
 what it was at the start of the item, so that it has this value during the
 
 /* If this is called from a lookup or an extract, we want to restore $value to
 what it was at the start of the item, so that it has this value during the
-second string expansion. For the call from "if" to this function, save_lookup
-is set to lookup_value, so that this statement does nothing. */
+second string expansion. For the call from "if" or "run" to this function,
+save_lookup is set to lookup_value, so that this statement does nothing. */
 
 lookup_value = save_lookup;
 
 
 lookup_value = save_lookup;
 
@@ -3330,7 +3330,6 @@ while (*s != 0)
     case EITEM_RUN:
       {
       FILE *f;
     case EITEM_RUN:
       {
       FILE *f;
-      uschar *old_lookup_value = NULL;
       uschar *arg;
       uschar **argv;
       pid_t pid;
       uschar *arg;
       uschar **argv;
       pid_t pid;
@@ -3410,18 +3409,17 @@ while (*s != 0)
         in lookup_value). */
 
         f = fdopen(fd_out, "rb");
         in lookup_value). */
 
         f = fdopen(fd_out, "rb");
-        old_lookup_value = lookup_value;
         lookup_value = NULL;
         lookup_value = cat_file(f, lookup_value, &lsize, &lptr, NULL);
         fclose(f);
         }
 
         lookup_value = NULL;
         lookup_value = cat_file(f, lookup_value, &lsize, &lptr, NULL);
         fclose(f);
         }
 
-      /* Process the yes/no strings */
+      /* Process the yes/no strings; $value may be useful in both cases */
 
       switch(process_yesno(
                skipping,                     /* were previously skipping */
                runrc == 0,                   /* success/failure indicator */
 
       switch(process_yesno(
                skipping,                     /* were previously skipping */
                runrc == 0,                   /* success/failure indicator */
-               old_lookup_value,             /* value to reset for string2 */
+               lookup_value,                 /* value to reset for string2 */
                &s,                           /* input pointer */
                &yield,                       /* output pointer */
                &size,                        /* output size */
                &s,                           /* input pointer */
                &yield,                       /* output pointer */
                &size,                        /* output size */