New format for exim_message_id
[exim.git] / src / src / expand.c
index 26df25795ce5be77d5d612b8da939b085b46087b..de00c72544c9f8c435a8170dd133ab82d07d8e9e 100644 (file)
@@ -2037,7 +2037,8 @@ switch (vp->type)
     if (!*ss && deliver_datafile >= 0)  /* Read body when needed */
       {
       uschar * body;
-      off_t start_offset = SPOOL_DATA_START_OFFSET;
+      off_t start_offset_o = spool_data_start_offset(message_id);
+      off_t start_offset = start_offset_o;
       int len = message_body_visible;
 
       if (len > message_size) len = message_size;
@@ -2049,8 +2050,8 @@ switch (vp->type)
        if (fstat(deliver_datafile, &statbuf) == 0)
          {
          start_offset = statbuf.st_size - len;
-         if (start_offset < SPOOL_DATA_START_OFFSET)
-           start_offset = SPOOL_DATA_START_OFFSET;
+         if (start_offset < start_offset_o)
+           start_offset = start_offset_o;
          }
        }
       if (lseek(deliver_datafile, start_offset, SEEK_SET) < 0)
@@ -5382,18 +5383,18 @@ while (*s)
           if (iexpire >= inow)
             {
             prvscheck_result = US"1";
-            DEBUG(D_expand) debug_printf_indent("prvscheck: success, $pvrs_result set to 1\n");
+            DEBUG(D_expand) debug_printf_indent("prvscheck: success, $prvscheck_result set to 1\n");
             }
          else
             {
             prvscheck_result = NULL;
-            DEBUG(D_expand) debug_printf_indent("prvscheck: signature expired, $pvrs_result unset\n");
+            DEBUG(D_expand) debug_printf_indent("prvscheck: signature expired, $prvscheck_result unset\n");
             }
           }
         else
           {
           prvscheck_result = NULL;
-          DEBUG(D_expand) debug_printf_indent("prvscheck: hash failure, $pvrs_result unset\n");
+          DEBUG(D_expand) debug_printf_indent("prvscheck: hash failure, $prvscheck_result unset\n");
           }
 
         /* Now expand the final argument. We leave this till now so that
@@ -7047,6 +7048,7 @@ while (*s)
         case 2:
         case 3: goto EXPAND_FAILED;
         }
+      if (flags & ESI_SKIPPING) continue;
 
       if (sub[1] && *(sub[1]))
        {
@@ -7263,7 +7265,7 @@ NOT_ITEM: ;
            "operator is \"%s\", which is not a decimal number", sub);
          goto EXPAND_FAILED;
          }
-       yield = string_cat(yield, string_base62(n));
+       yield = string_cat(yield, string_base62_32(n));         /*XXX only handles 32b input range.  Need variants? */
        break;
        }