Make maildir_use_size_file expandable.
authorPhil Pennock <pdp@exim.org>
Sat, 27 Aug 2011 23:19:48 +0000 (16:19 -0700)
committerPhil Pennock <pdp@exim.org>
Sat, 27 Aug 2011 23:19:48 +0000 (16:19 -0700)
Patch from Heiko Schlittermann.
Fixes bug 1089

doc/doc-docbook/spec.xfpt
doc/doc-txt/ChangeLog
src/src/transports/appendfile.c
src/src/transports/appendfile.h

index aa4be53323c8739ff79748a663faf8c87cbfad01..7a3cc8dd614278a08eb8498313a02eef5058021e 100644 (file)
@@ -19955,13 +19955,16 @@ This option applies only to deliveries in maildir format, and is described in
 section &<<SECTmaildirdelivery>>& below.
 
 
 section &<<SECTmaildirdelivery>>& below.
 
 
-.option maildir_use_size_file appendfile boolean false
+.new
+.option maildir_use_size_file appendfile&!! boolean false
 .cindex "maildir format" "&_maildirsize_& file"
 .cindex "maildir format" "&_maildirsize_& file"
-Setting this option true enables support for &_maildirsize_& files. Exim
+The result of string expansion for this option must be a valid boolean value.
+If it is true, it enables support for &_maildirsize_& files. Exim
 creates a &_maildirsize_& file in a maildir if one does not exist, taking the
 quota from the &%quota%& option of the transport. If &%quota%& is unset, the
 value is zero. See &%maildir_quota_directory_regex%& above and section
 &<<SECTmaildirdelivery>>& below for further details.
 creates a &_maildirsize_& file in a maildir if one does not exist, taking the
 quota from the &%quota%& option of the transport. If &%quota%& is unset, the
 value is zero. See &%maildir_quota_directory_regex%& above and section
 &<<SECTmaildirdelivery>>& below for further details.
+.wen
 
 .option maildirfolder_create_regex appendfile string unset
 .cindex "maildir format" "&_maildirfolder_& file"
 
 .option maildirfolder_create_regex appendfile string unset
 .cindex "maildir format" "&_maildirfolder_& file"
index d6891794d68391ee13983d6a00b877b0edc65df3..a8e886836f4b85dfa5a668ecd6c7ef7ecd6382c4 100644 (file)
@@ -103,6 +103,9 @@ PP/05 Variable $av_failed, true if the AV scanner deferred.
 PP/06 Stop make process more reliably on build failure.
       Bugzilla 1087.  Patch from Heiko Schlittermann.
 
 PP/06 Stop make process more reliably on build failure.
       Bugzilla 1087.  Patch from Heiko Schlittermann.
 
+PP/07 Make maildir_use_size_file an _expandable_ boolean.
+      Bugzilla 1089.  Patch Heiko Schlittermann.
+
 
 Exim version 4.76
 -----------------
 
 Exim version 4.76
 -----------------
index a9283f696b08432554db0553b021140fe1c12fce..11c59bb0b96b1d1c93088def9cc2ce7be3efa38f 100644 (file)
@@ -36,6 +36,10 @@ stored in the publicly visible instance block - these are flagged with the
 opt_public flag. */
 
 optionlist appendfile_transport_options[] = {
 opt_public flag. */
 
 optionlist appendfile_transport_options[] = {
+#ifdef SUPPORT_MAILDIR
+  { "*expand_maildir_use_size_file", opt_stringptr,
+      (void *)offsetof(appendfile_transport_options_block, expand_maildir_use_size_file) },
+#endif
   { "*set_use_fcntl_lock",opt_bool | opt_hidden,
       (void *)offsetof(appendfile_transport_options_block, set_use_fcntl) },
   { "*set_use_flock_lock",opt_bool | opt_hidden,
   { "*set_use_fcntl_lock",opt_bool | opt_hidden,
       (void *)offsetof(appendfile_transport_options_block, set_use_fcntl) },
   { "*set_use_flock_lock",opt_bool | opt_hidden,
@@ -103,7 +107,7 @@ optionlist appendfile_transport_options[] = {
       (void *)offsetof(appendfile_transport_options_block, maildir_retries) },
   { "maildir_tag",       opt_stringptr,
       (void *)offsetof(appendfile_transport_options_block, maildir_tag) },
       (void *)offsetof(appendfile_transport_options_block, maildir_retries) },
   { "maildir_tag",       opt_stringptr,
       (void *)offsetof(appendfile_transport_options_block, maildir_tag) },
-  { "maildir_use_size_file", opt_bool,
+  { "maildir_use_size_file", opt_expand_bool,
       (void *)offsetof(appendfile_transport_options_block, maildir_use_size_file ) } ,
   { "maildirfolder_create_regex", opt_stringptr,
       (void *)offsetof(appendfile_transport_options_block, maildirfolder_create_regex ) },
       (void *)offsetof(appendfile_transport_options_block, maildir_use_size_file ) } ,
   { "maildirfolder_create_regex", opt_stringptr,
       (void *)offsetof(appendfile_transport_options_block, maildirfolder_create_regex ) },
@@ -182,6 +186,7 @@ appendfile_transport_options_block appendfile_transport_option_defaults = {
   NULL,           /* quota_warn_threshold */
   NULL,           /* mailbox_size_string */
   NULL,           /* mailbox_filecount_string */
   NULL,           /* quota_warn_threshold */
   NULL,           /* mailbox_size_string */
   NULL,           /* mailbox_filecount_string */
+  NULL,           /* expand_maildir_use_size_file */ 
   US"^(?:cur|new|\\..*)$",  /* maildir_dir_regex */
   NULL,           /* maildir_tag */
   NULL,           /* maildirfolder_create_regex */
   US"^(?:cur|new|\\..*)$",  /* maildir_dir_regex */
   NULL,           /* maildir_tag */
   NULL,           /* maildirfolder_create_regex */
@@ -270,6 +275,10 @@ dummy = dummy;
 uid = uid;
 gid = gid;
 
 uid = uid;
 gid = gid;
 
+if (ob->expand_maildir_use_size_file)
+       ob->maildir_use_size_file = expand_check_condition(ob->expand_maildir_use_size_file, 
+               US"`maildir_use_size_file` in transport", tblock->name);
+
 /* Loop for quota, quota_filecount, quota_warn_threshold, mailbox_size,
 mailbox_filecount */
 
 /* Loop for quota, quota_filecount, quota_warn_threshold, mailbox_size,
 mailbox_filecount */
 
index d0c0e72395ac226e2db15e5e0f0384f9bf4fdc43..52dc3bacadfda7cb120723054d0f557bfee17d7d 100644 (file)
@@ -21,6 +21,7 @@ typedef struct {
   uschar *quota_warn_threshold;
   uschar *mailbox_size_string;
   uschar *mailbox_filecount_string;
   uschar *quota_warn_threshold;
   uschar *mailbox_size_string;
   uschar *mailbox_filecount_string;
+  uschar *expand_maildir_use_size_file;
   uschar *maildir_dir_regex;
   uschar *maildir_tag;
   uschar *maildirfolder_create_regex;
   uschar *maildir_dir_regex;
   uschar *maildir_tag;
   uschar *maildirfolder_create_regex;