]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.9.0-RC2 v2.9.0-RC2
authorWietse Venema <wietse@porcupine.org>
Tue, 24 Jan 2012 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Sat, 10 Feb 2018 17:48:52 +0000 (12:48 -0500)
105 files changed:
postfix/HISTORY
postfix/Makefile.in
postfix/README_FILES/DATABASE_README
postfix/README_FILES/MEMCACHE_README
postfix/RELEASE_NOTES
postfix/html/DATABASE_README.html
postfix/html/MEMCACHE_README.html
postfix/html/memcache_table.5.html
postfix/html/postconf.1.html
postfix/html/postkick.1.html
postfix/man/man1/postconf.1
postfix/man/man1/postkick.1
postfix/man/man5/memcache_table.5
postfix/pflogsumm_quickfix.txt [new file with mode: 0644]
postfix/proto/DATABASE_README.html
postfix/proto/MEMCACHE_README.html
postfix/proto/memcache_table
postfix/src/cleanup/Makefile.in
postfix/src/cleanup/cleanup_region.c
postfix/src/dns/dns_rr_eq_sa.ref
postfix/src/dns/dns_sa_to_rr.ref
postfix/src/flush/Makefile.in
postfix/src/flush/flush.c
postfix/src/global/Makefile.in
postfix/src/global/data_redirect.c
postfix/src/global/dot_lockfile.c
postfix/src/global/file_id.c
postfix/src/global/mail_copy.c
postfix/src/global/mail_open_ok.c
postfix/src/global/mail_stream.c
postfix/src/global/mail_trigger.c
postfix/src/global/mail_version.h
postfix/src/global/mbox_open.c
postfix/src/global/mkmap_db.c
postfix/src/global/namadr_list.in
postfix/src/global/namadr_list.ref
postfix/src/global/remove.c
postfix/src/local/Makefile.in
postfix/src/local/mailbox.c
postfix/src/local/maildir.c
postfix/src/master/Makefile.in
postfix/src/master/mail_flow.c
postfix/src/oqmgr/Makefile.in
postfix/src/oqmgr/qmgr_active.c
postfix/src/postalias/Makefile.in
postfix/src/postalias/postalias.c
postfix/src/postcat/Makefile.in
postfix/src/postcat/postcat.c
postfix/src/postconf/Makefile.in
postfix/src/postconf/postconf.c
postfix/src/postconf/postconf_master.c
postfix/src/postconf/postconf_user.c
postfix/src/postconf/test30.ref [new file with mode: 0644]
postfix/src/postdrop/Makefile.in
postfix/src/postdrop/postdrop.c
postfix/src/postfix/Makefile.in
postfix/src/postfix/postfix.c
postfix/src/postkick/Makefile.in
postfix/src/postkick/postkick.c
postfix/src/postlock/Makefile.in
postfix/src/postlock/postlock.c
postfix/src/postlog/Makefile.in
postfix/src/postlog/postlog.c
postfix/src/postmap/Makefile.in
postfix/src/postmap/postmap.c
postfix/src/postmulti/Makefile.in
postfix/src/postmulti/postmulti.c
postfix/src/postqueue/Makefile.in
postfix/src/postqueue/postqueue.c
postfix/src/postscreen/postscreen.c
postfix/src/postscreen/postscreen_smtpd.c
postfix/src/postsuper/Makefile.in
postfix/src/postsuper/postsuper.c
postfix/src/qmgr/Makefile.in
postfix/src/qmgr/qmgr_active.c
postfix/src/sendmail/Makefile.in
postfix/src/sendmail/sendmail.c
postfix/src/tlsmgr/Makefile.in
postfix/src/tlsmgr/tlsmgr.c
postfix/src/util/Makefile.in
postfix/src/util/argv.c
postfix/src/util/argv.h
postfix/src/util/dict.c
postfix/src/util/dict_cdb.c
postfix/src/util/dict_cidr.c
postfix/src/util/dict_db.c
postfix/src/util/dict_dbm.c
postfix/src/util/dict_pcre.c
postfix/src/util/dict_regexp.c
postfix/src/util/dict_sdbm.c
postfix/src/util/dict_thash.c
postfix/src/util/edit_file.c
postfix/src/util/fifo_listen.c
postfix/src/util/load_file.c
postfix/src/util/lstat_as.c
postfix/src/util/make_dirs.c
postfix/src/util/myaddrinfo.ref
postfix/src/util/safe_open.c
postfix/src/util/sane_link.c
postfix/src/util/sane_rename.c
postfix/src/util/stat_as.c
postfix/src/util/warn_stat.c [new file with mode: 0644]
postfix/src/util/warn_stat.h [new file with mode: 0644]
postfix/src/virtual/Makefile.in
postfix/src/virtual/maildir.c

index daf7b45750d4c77a11f07ea0fb1ff19c2de9ad4f..8d0758c5b22178414cd33d929a7db22512e741c8 100644 (file)
@@ -17545,7 +17545,7 @@ Apologies for any names omitted.
        table is unavailable. Files: global/mail_error.[hc],
        smtpd/smtpd_check.c, smtp/smtp_trouble.c.
 
-20111215
+20120115
 
        Fine tuning: SMTP server error messages. File: smtpd/smtpd.c.
 
@@ -17558,7 +17558,7 @@ Apologies for any names omitted.
        Cleanup: tiny memory leaks after surrogate database opens.
        Files: util/dict_cidr.c, util/dict_db.c.
 
-20111217
+20120117
 
        Cleanup: support for legacy-style database configuration
        where parameter names are generated by appending suffixes
@@ -17567,3 +17567,25 @@ Apologies for any names omitted.
        Other: build without Berkeley DB support (make makefiles
        "CCARGS=$CCARGS -DNO_DB"). Files: makedefs, util/sys_defs.h,
        proto/DB_README.html, proto/INSTALL.html.
+
+20120120
+
+       Compatibility: added file pflogsumm_quickfix.txt with quick
+       patches for pflogsumm that handle the new default master.cf
+       entries for the submission and smtps services.
+
+20120121
+
+       Cleanup: getopt(3) compatibility in the postconf(1) master.cf
+       parser. Process "--" as the end-of-options indicator, and
+       process "-oname=value" as "-o name=value".  Files:
+       util/argv.[hc], postconf/postconf_master.cf,
+       postconf/postconf_user.c.
+
+20120122
+
+       Workaround: log a warning and suggested solution for common
+       stat()/fstat()/lstat() problems caused by 32-bit overflow.
+       This is a real stinker that causes Postfix to fail without
+       any prior warning.  File: util/warn_stat.[hc], and everything
+       that directly calls stat(), fstat() or lstat().
index 8a45ddd6ffe725a8a592aff395dc9e38a15de73c..e45ba73a01f90b4cdbcf47ab23653663442088a7 100644 (file)
@@ -35,25 +35,25 @@ update printfck tests root_tests:
 update: $(LIBEXEC)
 
 libexec/post-install: conf/post-install
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 libexec/postfix-files: conf/postfix-files
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 libexec/postfix-script: conf/postfix-script
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 libexec/postfix-wrapper: conf/postfix-wrapper
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 libexec/main.cf: conf/main.cf
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 libexec/master.cf: conf/master.cf
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 libexec/postmulti-script: conf/postmulti-script
-       rm -f $@ && ln -sf ../$? $@
+       rm -f $@ && ln -$? $@
 
 manpages:
        set -e; for i in $(MANDIRS); do \
index 231e426c8cd95b9285394add06db4846236cd23d..18e898250d501a57a294fb473ed52be7014ef3ca 100644 (file)
@@ -198,7 +198,7 @@ To find out what database types your Postfix system supports, use the "p\bpo\bos\bs
     e\ben\bnv\bvi\bir\bro\bon\bn
         The UNIX process environment array. The lookup key is the variable
         name. The lookup table name in "environ:table" is ignored.
-    f\bfa\bai\bil\bl (read-write)
+    f\bfa\bai\bil\bl
         A table that reliably fails all requests. The lookup table name is used
         for logging only. This table exists to simplify Postfix error tests.
     h\bha\bas\bsh\bh
@@ -213,7 +213,7 @@ To find out what database types your Postfix system supports, use the "p\bpo\bos\bs
     l\bld\bda\bap\bp (read-only)
         Perform lookups using the LDAP protocol. Configuration details are
         given in the ldap_table(5).
-    m\bme\bem\bmc\bca\bac\bch\bhe\be (read-write)
+    m\bme\bem\bmc\bca\bac\bch\bhe\be
         Perform memcache database lookups or updates. Configuration details are
         given in memcache_table(5).
     m\bmy\bys\bsq\bql\bl (read-only)
@@ -233,7 +233,7 @@ To find out what database types your Postfix system supports, use the "p\bpo\bos\bs
     p\bpg\bgs\bsq\bql\bl (read-only)
         Perform PostgreSQL database lookups. Configuration details are given in
         pgsql_table(5).
-    p\bpr\bro\box\bxy\by (read-only)
+    p\bpr\bro\box\bxy\by
         Access information via the Postfix proxymap(8) service. The lookup
         table name syntax is "proxy:type:table".
     r\bre\beg\bge\bex\bxp\bp (read-only)
index c668b177cacb035621790943767c31b7f58247fb..f89e148d46dffbae47af507ca81a29c6461471f5 100644 (file)
@@ -44,7 +44,7 @@ C\bCr\bre\bed\bdi\bit\bts\bs
 The first memcache client for Postfix was written by Omar Kilani, and was based
 on the libmemcache library.
 
-Wietse wrote the current memcache client from the ground up. This
-implementation does not use libmemcache, and bears no resemblance to earlier
-work.
+Wietse wrote the current memcache client from the ground up for Postfix version
+2.9. This implementation does not use libmemcache, and bears no resemblance to
+earlier work.
 
index eeb69a7f8f65fc80ccf56af60aac765152811a93..e30a34d6ff71d9208f35cdc7f60b320430b1c96e 100644 (file)
@@ -329,6 +329,17 @@ unavailable.
 Major changes - logging
 ----------------------------------------
 
+[Incompat 20120114] Logfile-based alerting systems may need to be
+updated to look for "error" messages in addition to "fatal" messages.
+Specify "daemon_table_open_error_is_fatal = yes" to get the historical
+behavior (immediate termination with "fatal" message).
+
+[Incompat 20111214] Logfile-based analysis tools may need to be
+updated. The submission and smtps examples in the sample master.cf
+file were updated to make their logging easier to distinguish.
+
+See the source file pflogsumm_quickfix.txt for a "quick fix".
+
 [Incompat 20111205] Postfix now logs the result of successful TLS
 negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
 and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
index 9ce2676b5b54cfb1e361563b289e19ee7b4f1646..20cd53acf155a4e385f2cd5436e59075ba3efc0e 100644 (file)
@@ -292,7 +292,7 @@ the ".dir" or ".pag" suffix.  </dd>
 variable name. The lookup table name in "environ:table" is ignored.
 </dd>
 
-<dt> <b>fail</b> (read-write) </dt>
+<dt> <b>fail</b> </dt>
 
 <dd> A table that reliably fails all requests. The lookup table
 name is used for logging only. This table exists to simplify Postfix
@@ -316,7 +316,7 @@ a process terminates. </dd>
 <dd> Perform lookups using the LDAP protocol. Configuration details
 are given in the <a href="ldap_table.5.html">ldap_table(5)</a>. </dd>
 
-<dt> <b>memcache</b> (read-write) </dt>
+<dt> <b>memcache</b> </dt>
 
 <dd> Perform memcache database lookups or updates. Configuration
 details are given in <a href="memcache_table.5.html">memcache_table(5)</a>. </dd>
@@ -351,7 +351,7 @@ file.  </dd>
 <dd> Perform PostgreSQL database lookups.  Configuration details
 are given in <a href="pgsql_table.5.html">pgsql_table(5)</a>. </dd>
 
-<dt> <b>proxy</b> (read-only) </dt>
+<dt> <b>proxy</b> </dt>
 
 <dd> Access information via the Postfix <a href="proxymap.8.html">proxymap(8)</a> service. The
 lookup table name syntax is "<a href="proxymap.8.html">proxy</a>:<a href="DATABASE_README.html">type:table</a>". </dd>
index 78be1733abfc635907874eac115a1a83ef8a72b8..59b62152e0e00b34db75471f7af56ae84b92d407 100644 (file)
@@ -67,9 +67,9 @@ and is therefore built into Postfix by default. </p>
 <p> The first memcache client for Postfix was written by Omar Kilani,
 and was based on the libmemcache library. </p>
 
-<p> Wietse wrote the current memcache client from the ground up.
-This implementation does not use libmemcache, and bears no resemblance
-to earlier work.  </p>
+<p> Wietse wrote the current memcache client from the ground up for
+Postfix version 2.9.  This implementation does not use libmemcache,
+and bears no resemblance to earlier work.  </p>
 
 </body>
 
index c46a4d46c654402b1de63aa8b81ef8adea112088..01da77ed397064e9b80f54ddc1b00878bee76bea 100644 (file)
@@ -222,10 +222,7 @@ MEMCACHE_TABLE(5)                                            MEMCACHE_TABLE(5)
        software.
 
 <b>HISTORY</b>
-       The first memcache client for Postfix was written by  Omar
-       Kilani,  and was based on libmemcache.  The Postfix imple-
-       mentation does not use libmemcache, and  bears  no  resem-
-       blance to earlier work.
+       Memcache support was introduced with Postfix version  2.9.
 
 <b>AUTHOR(S)</b>
        Wietse Venema
index 350cb86a8722a4b6a718ec7729d06ac8d6bf41b0..a07120b6edcf6a99e091984c9ee15870cc12f17e 100644 (file)
@@ -198,7 +198,7 @@ POSTCONF(1)                                                        POSTCONF(1)
                      Perform lookups  using  the  LDAP  protocol.
                      This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
 
-              <b>memcache</b> (read-write)
+              <b>memcache</b>
                      Perform lookups using the memcache protocol.
                      This is described in <a href="memcache_table.5.html"><b>memcache_table</b>(5)</a>.
 
@@ -215,8 +215,7 @@ POSTCONF(1)                                                        POSTCONF(1)
                      Perform  lookups using the PostgreSQL proto-
                      col. This is described in <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>.
 
-              <b>proxy</b> (read-only)
-                     A lookup table that is implemented  via  the
+              <b>proxy</b>  A lookup table that is implemented  via  the
                      Postfix  <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table name
                      syntax is <i>type</i><b>:</b><i>name</i>.
 
index 42e57958147cd1148f352e47d67c29273118bf24..dd673b0e5ffb454e60da0ebca0031ab50d7a3b0a 100644 (file)
@@ -66,8 +66,8 @@ POSTKICK(1)                                                        POSTKICK(1)
 
        <b><a href="postconf.5.html#application_event_drain_time">application_event_drain_time</a> (100s)</b>
               How  long  the  <a href="postkick.1.html"><b>postkick</b>(1)</a>  command  waits  for  a
-              request to enter the server's input  buffer  before
-              giving up.
+              request to enter the Postfix daemon  process  input
+              buffer before giving up.
 
        <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
               The  location of the Postfix top-level queue direc-
index fefde2869742bab7aa30fd233d751d7d4bab8558..9717c9cf26879403bf1a8d2655e79d24c6257be9 100644 (file)
@@ -185,7 +185,7 @@ when a process terminates.
 .IP "\fBldap\fR (read-only)"
 Perform lookups using the LDAP protocol. This is described
 in \fBldap_table\fR(5).
-.IP "\fBmemcache\fR (read-write)"
+.IP "\fBmemcache\fR"
 Perform lookups using the memcache protocol. This is described
 in \fBmemcache_table\fR(5).
 .IP "\fBmysql\fR (read-only)"
@@ -197,7 +197,7 @@ file format is described in \fBpcre_table\fR(5).
 .IP "\fBpgsql\fR (read-only)"
 Perform lookups using the PostgreSQL protocol. This is described
 in \fBpgsql_table\fR(5).
-.IP "\fBproxy\fR (read-only)"
+.IP "\fBproxy\fR"
 A lookup table that is implemented via the Postfix
 \fBproxymap\fR(8) service. The table name syntax is
 \fItype\fB:\fIname\fR.
index c85314fe7b013ceead33566e52fc63e7cdbfdd48..64bdda7a38794989f2588ae02b9a7483988b2d24 100644 (file)
@@ -64,7 +64,7 @@ The default location of the Postfix main.cf and master.cf
 configuration files.
 .IP "\fBapplication_event_drain_time (100s)\fR"
 How long the \fBpostkick\fR(1) command waits for a request to enter the
-server's input buffer before giving up.
+Postfix daemon process input buffer before giving up.
 .IP "\fBqueue_directory (see 'postconf -d' output)\fR"
 The location of the Postfix top-level queue directory.
 .SH "FILES"
index 2de5980e4fccc685b474423c027b3376522def77..1c33b09fe7ee9424b2b6ca21739d6cc52103e1c0 100644 (file)
@@ -235,10 +235,7 @@ The Secure Mailer license must be distributed with this software.
 .nf
 .ad
 .fi
-The first memcache client for Postfix was written by Omar
-Kilani, and was based on libmemcache.
-The Postfix implementation does not use libmemcache, and
-bears no resemblance to earlier work.
+Memcache support was introduced with Postfix version 2.9.
 .SH "AUTHOR(S)"
 .na
 .nf
diff --git a/postfix/pflogsumm_quickfix.txt b/postfix/pflogsumm_quickfix.txt
new file mode 100644 (file)
index 0000000..85a8719
--- /dev/null
@@ -0,0 +1,53 @@
+These diffs for pflogsumm versions 1.1.1 and 1.1.3 work around a
+change in the Postfix 2.9 default master.cf file.
+
+That change made the logging from submission and smtps services easier
+to distinguish, by changing postfix/smtpd into postfix/submission/smtpd
+and postfix/smtps/smtpd, respectively.
+
+Below are diffs for pflogsumm-1.1.1 and pflogsumm-1.1.3 (beta).
+Choose one that fits your pflogsumm version.
+
+====begin diff=====================
+*** ./pflogsumm-1.1.1/pflogsumm.pl-    Fri Apr  6 10:06:37 2007
+--- ./pflogsumm-1.1.1/pflogsumm.pl     Fri Jan 20 17:05:10 2012
+***************
+*** 542,548 ****
+      my $logRmdr;
+      next unless((($msgMonStr, $msgDay, $msgHr, $msgMin, $msgSec, $logRmdr) =
+       /^(...) +(\d+) (..):(..):(..) \S+ (.+)$/o) == 6);
+!     unless((($cmd, $qid) = $logRmdr =~ m#^(?:postfix|$syslogName)/([^\[:]*).*?: ([^:\s]+)#o) == 2 ||
+             (($cmd, $qid) = $logRmdr =~ m#^((?:postfix)(?:-script)?)(?:\[\d+\])?: ([^:\s]+)#o) == 2)
+      {
+       #print UNPROCD "$_";
+--- 542,548 ----
+      my $logRmdr;
+      next unless((($msgMonStr, $msgDay, $msgHr, $msgMin, $msgSec, $logRmdr) =
+       /^(...) +(\d+) (..):(..):(..) \S+ (.+)$/o) == 6);
+!     unless((($cmd, $qid) = $logRmdr =~ m#^(?:postfix|$syslogName)(?:/(?:smtps|submission))?/([^\[:]*).*?: ([^:\s]+)#o) == 2 ||
+             (($cmd, $qid) = $logRmdr =~ m#^((?:postfix)(?:-script)?)(?:\[\d+\])?: ([^:\s]+)#o) == 2)
+      {
+       #print UNPROCD "$_";
+====end diff=====================
+
+====begin diff=====================
+*** ./pflogsumm-1.1.3/pflogsumm.pl-    Sat Mar 20 16:00:42 2010
+--- ./pflogsumm-1.1.3/pflogsumm.pl     Fri Jan 20 17:02:37 2012
+***************
+*** 636,642 ****
+       --$msgMon;
+      }
+  
+!     unless((($cmd, $qid) = $logRmdr =~ m#^(?:postfix|$syslogName)/([^\[:]*).*?: ([^:\s]+)#o) == 2 ||
+             (($cmd, $qid) = $logRmdr =~ m#^((?:postfix)(?:-script)?)(?:\[\d+\])?: ([^:\s]+)#o) == 2)
+      {
+       #print UNPROCD "$_";
+--- 636,642 ----
+       --$msgMon;
+      }
+  
+!     unless((($cmd, $qid) = $logRmdr =~ m#^(?:postfix|$syslogName)(?:/(?:smtps|submission))?/([^\[:]*).*?: ([^:\s]+)#o) == 2 ||
+             (($cmd, $qid) = $logRmdr =~ m#^((?:postfix)(?:-script)?)(?:\[\d+\])?: ([^:\s]+)#o) == 2)
+      {
+       #print UNPROCD "$_";
+====end diff=====================
index 284f0278689404f349b66bef67861cf991e4b26a..8cbaa75625098fc45335863f2d76ad7bd2f2a010 100644 (file)
@@ -292,7 +292,7 @@ the ".dir" or ".pag" suffix.  </dd>
 variable name. The lookup table name in "environ:table" is ignored.
 </dd>
 
-<dt> <b>fail</b> (read-write) </dt>
+<dt> <b>fail</b> </dt>
 
 <dd> A table that reliably fails all requests. The lookup table
 name is used for logging only. This table exists to simplify Postfix
@@ -316,7 +316,7 @@ a process terminates. </dd>
 <dd> Perform lookups using the LDAP protocol. Configuration details
 are given in the ldap_table(5). </dd>
 
-<dt> <b>memcache</b> (read-write) </dt>
+<dt> <b>memcache</b> </dt>
 
 <dd> Perform memcache database lookups or updates. Configuration
 details are given in memcache_table(5). </dd>
@@ -351,7 +351,7 @@ file.  </dd>
 <dd> Perform PostgreSQL database lookups.  Configuration details
 are given in pgsql_table(5). </dd>
 
-<dt> <b>proxy</b> (read-only) </dt>
+<dt> <b>proxy</b> </dt>
 
 <dd> Access information via the Postfix proxymap(8) service. The
 lookup table name syntax is "proxy:type:table". </dd>
index ad445892f89e872a31e6346fbd6a2b4067272378..a48f9a82544b7d8b5167cbd15a7ce65046cb5cab 100644 (file)
@@ -67,9 +67,9 @@ and is therefore built into Postfix by default. </p>
 <p> The first memcache client for Postfix was written by Omar Kilani,
 and was based on the libmemcache library. </p>
 
-<p> Wietse wrote the current memcache client from the ground up.
-This implementation does not use libmemcache, and bears no resemblance
-to earlier work.  </p>
+<p> Wietse wrote the current memcache client from the ground up for
+Postfix version 2.9.  This implementation does not use libmemcache,
+and bears no resemblance to earlier work.  </p>
 
 </body>
 
index f64839fc19c9d1e19a42ad5f597eb157fad8c20b..3dc4678b7e038583453ff41407825ed9ff2505fc 100644 (file)
 # HISTORY
 # .ad
 # .fi
-#      The first memcache client for Postfix was written by Omar
-#      Kilani, and was based on libmemcache.  
-#      The Postfix implementation does not use libmemcache, and
-#      bears no resemblance to earlier work.
+#      Memcache support was introduced with Postfix version 2.9.
 # AUTHOR(S)
 #      Wietse Venema
 #      IBM T.J. Watson Research
index c447f198bca9482bcad447d7cd744c2bf58a1d6a..8afd162096a3a2e449e5b00cc0428c8ae7e05537 100644 (file)
@@ -1098,6 +1098,7 @@ cleanup_region.o: ../../include/tok822.h
 cleanup_region.o: ../../include/vbuf.h
 cleanup_region.o: ../../include/vstream.h
 cleanup_region.o: ../../include/vstring.h
+cleanup_region.o: ../../include/warn_stat.h
 cleanup_region.o: cleanup.h
 cleanup_region.o: cleanup_region.c
 cleanup_rewrite.o: ../../include/argv.h
index 78479d47bb7d83e676d8ba2bf4ae18e2eb7b1c2a..dee28a06534db0496ab5f2d5e3c9a21c1a5b8ca5 100644 (file)
@@ -83,6 +83,7 @@
 
 #include <msg.h>
 #include <mymalloc.h>
+#include <warn_stat.h>
 
 /* Application-specific. */
 
index e633274a3d8dd2777dc6c1dfcb42ce3ec5c0e0d9..d85216492a59889dc22404b96f0eecaac5d2ba71 100644 (file)
@@ -1,24 +1,24 @@
-2604:8d00:189::2 =?= 168.100.189.2
-tested by function: no
-tested by macro:    no
 168.100.189.2 =?= 168.100.189.2
 tested by function: yes
 tested by macro:    yes
-2604:8d00:189::2 =?= 168.100.189.3
+2604:8d00:189::2 =?= 168.100.189.2
 tested by function: no
 tested by macro:    no
 168.100.189.2 =?= 168.100.189.3
 tested by function: no
 tested by macro:    no
-2604:8d00:189::2 =?= 2001:240:587:0:2d0:b7ff:fe88:2ca7
+2604:8d00:189::2 =?= 168.100.189.3
 tested by function: no
 tested by macro:    no
 168.100.189.2 =?= 2001:240:587:0:2d0:b7ff:fe88:2ca7
 tested by function: no
 tested by macro:    no
-2604:8d00:189::2 =?= 2001:240:587:0:2d0:b7ff:febe:ca9f
+2604:8d00:189::2 =?= 2001:240:587:0:2d0:b7ff:fe88:2ca7
 tested by function: no
 tested by macro:    no
 168.100.189.2 =?= 2001:240:587:0:2d0:b7ff:febe:ca9f
 tested by function: no
 tested by macro:    no
+2604:8d00:189::2 =?= 2001:240:587:0:2d0:b7ff:febe:ca9f
+tested by function: no
+tested by macro:    no
index 0b67b74e23388b89459aa4ebbf8c23749267483e..86c022d56a6aecc8832bf4ef2761f113d1e9948a 100644 (file)
@@ -1,2 +1,2 @@
-spike.porcupine.org -> 2604:8d00:189::2
 spike.porcupine.org -> 168.100.189.2
+spike.porcupine.org -> 2604:8d00:189::2
index ea0b6df796f0712581f559c071aca11faa86ebd6..b3533bd507cd3053d3b90684852642e14e2f8410 100644 (file)
@@ -86,4 +86,5 @@ flush.o: ../../include/vbuf.h
 flush.o: ../../include/vstream.h
 flush.o: ../../include/vstring.h
 flush.o: ../../include/vstring_vstream.h
+flush.o: ../../include/warn_stat.h
 flush.o: flush.c
index 22c1a83654c0d114eefe2a054015e6197d496b39..2a9a7d565b52c216fc750063d74380e5833ee017 100644 (file)
 #include <scan_dir.h>
 #include <stringops.h>
 #include <safe_open.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index a1644a32acb11fa572973a83dfa37388fea26206..d8fb3dbd5a3a9aa937484f55a1c90209423f73fb 100644 (file)
@@ -746,6 +746,7 @@ data_redirect.o: ../../include/sys_defs.h
 data_redirect.o: ../../include/vbuf.h
 data_redirect.o: ../../include/vstream.h
 data_redirect.o: ../../include/vstring.h
+data_redirect.o: ../../include/warn_stat.h
 data_redirect.o: data_redirect.c
 data_redirect.o: data_redirect.h
 data_redirect.o: dict_proxy.h
@@ -914,10 +915,44 @@ dict_memcache.o: dict_memcache.c
 dict_memcache.o: dict_memcache.h
 dict_memcache.o: memcache_proto.h
 dict_memcache.o: string_list.h
+dict_mysql.o: ../../include/argv.h
+dict_mysql.o: ../../include/dict.h
+dict_mysql.o: ../../include/events.h
+dict_mysql.o: ../../include/find_inet.h
+dict_mysql.o: ../../include/match_list.h
+dict_mysql.o: ../../include/msg.h
+dict_mysql.o: ../../include/mymalloc.h
+dict_mysql.o: ../../include/myrand.h
+dict_mysql.o: ../../include/split_at.h
+dict_mysql.o: ../../include/stringops.h
 dict_mysql.o: ../../include/sys_defs.h
+dict_mysql.o: ../../include/vbuf.h
+dict_mysql.o: ../../include/vstream.h
+dict_mysql.o: ../../include/vstring.h
+dict_mysql.o: cfg_parser.h
+dict_mysql.o: db_common.h
 dict_mysql.o: dict_mysql.c
+dict_mysql.o: dict_mysql.h
+dict_mysql.o: string_list.h
+dict_pgsql.o: ../../include/argv.h
+dict_pgsql.o: ../../include/dict.h
+dict_pgsql.o: ../../include/events.h
+dict_pgsql.o: ../../include/find_inet.h
+dict_pgsql.o: ../../include/match_list.h
+dict_pgsql.o: ../../include/msg.h
+dict_pgsql.o: ../../include/mymalloc.h
+dict_pgsql.o: ../../include/myrand.h
+dict_pgsql.o: ../../include/split_at.h
+dict_pgsql.o: ../../include/stringops.h
 dict_pgsql.o: ../../include/sys_defs.h
+dict_pgsql.o: ../../include/vbuf.h
+dict_pgsql.o: ../../include/vstream.h
+dict_pgsql.o: ../../include/vstring.h
+dict_pgsql.o: cfg_parser.h
+dict_pgsql.o: db_common.h
 dict_pgsql.o: dict_pgsql.c
+dict_pgsql.o: dict_pgsql.h
+dict_pgsql.o: string_list.h
 dict_proxy.o: ../../include/argv.h
 dict_proxy.o: ../../include/attr.h
 dict_proxy.o: ../../include/dict.h
@@ -960,6 +995,7 @@ dot_lockfile.o: ../../include/stringops.h
 dot_lockfile.o: ../../include/sys_defs.h
 dot_lockfile.o: ../../include/vbuf.h
 dot_lockfile.o: ../../include/vstring.h
+dot_lockfile.o: ../../include/warn_stat.h
 dot_lockfile.o: dot_lockfile.c
 dot_lockfile.o: dot_lockfile.h
 dot_lockfile.o: mail_params.h
@@ -1038,6 +1074,7 @@ file_id.o: ../../include/sys_defs.h
 file_id.o: ../../include/vbuf.h
 file_id.o: ../../include/vstream.h
 file_id.o: ../../include/vstring.h
+file_id.o: ../../include/warn_stat.h
 file_id.o: file_id.c
 file_id.o: file_id.h
 file_id.o: mail_queue.h
@@ -1301,6 +1338,7 @@ mail_copy.o: ../../include/vbuf.h
 mail_copy.o: ../../include/vstream.h
 mail_copy.o: ../../include/vstring.h
 mail_copy.o: ../../include/vstring_vstream.h
+mail_copy.o: ../../include/warn_stat.h
 mail_copy.o: dsn.h
 mail_copy.o: dsn_buf.h
 mail_copy.o: mail_addr.h
@@ -1356,6 +1394,7 @@ mail_open_ok.o: ../../include/sys_defs.h
 mail_open_ok.o: ../../include/vbuf.h
 mail_open_ok.o: ../../include/vstream.h
 mail_open_ok.o: ../../include/vstring.h
+mail_open_ok.o: ../../include/warn_stat.h
 mail_open_ok.o: mail_open_ok.c
 mail_open_ok.o: mail_open_ok.h
 mail_open_ok.o: mail_queue.h
@@ -1439,6 +1478,7 @@ mail_stream.o: ../../include/sys_defs.h
 mail_stream.o: ../../include/vbuf.h
 mail_stream.o: ../../include/vstream.h
 mail_stream.o: ../../include/vstring.h
+mail_stream.o: ../../include/warn_stat.h
 mail_stream.o: cleanup_user.h
 mail_stream.o: mail_params.h
 mail_stream.o: mail_proto.h
@@ -1462,6 +1502,7 @@ mail_trigger.o: ../../include/sys_defs.h
 mail_trigger.o: ../../include/trigger.h
 mail_trigger.o: ../../include/vbuf.h
 mail_trigger.o: ../../include/vstream.h
+mail_trigger.o: ../../include/warn_stat.h
 mail_trigger.o: mail_params.h
 mail_trigger.o: mail_proto.h
 mail_trigger.o: mail_trigger.c
@@ -1536,6 +1577,7 @@ mbox_open.o: ../../include/sys_defs.h
 mbox_open.o: ../../include/vbuf.h
 mbox_open.o: ../../include/vstream.h
 mbox_open.o: ../../include/vstring.h
+mbox_open.o: ../../include/warn_stat.h
 mbox_open.o: deliver_flock.h
 mbox_open.o: dot_lockfile.h
 mbox_open.o: dsn.h
@@ -1585,6 +1627,7 @@ mkmap_db.o: ../../include/sys_defs.h
 mkmap_db.o: ../../include/vbuf.h
 mkmap_db.o: ../../include/vstream.h
 mkmap_db.o: ../../include/vstring.h
+mkmap_db.o: ../../include/warn_stat.h
 mkmap_db.o: mail_params.h
 mkmap_db.o: mkmap.h
 mkmap_db.o: mkmap_db.c
@@ -1852,6 +1895,7 @@ record.o: record.h
 remove.o: ../../include/sys_defs.h
 remove.o: ../../include/vbuf.h
 remove.o: ../../include/vstring.h
+remove.o: ../../include/warn_stat.h
 remove.o: mail_params.h
 remove.o: remove.c
 resolve_clnt.o: ../../include/attr.h
index 77a28e209fe8253cb1728d9fefdc711d6ed1f5c9..096e58c14ca1eb3fa693dd72dc57d88d5e636e4e 100644 (file)
@@ -72,6 +72,7 @@
 #include <dict_db.h>
 #include <dict_dbm.h>
 #include <dict_cdb.h>
+#include <warn_stat.h>
 
 /* Global directory. */
 
index 94681bf00b7d67d9258ed05b5dee88659eb7296e..89a977af92c1b4e3bbc4b5d94a8119be914b2a2a 100644 (file)
@@ -64,6 +64,7 @@
 #include <stringops.h>
 #include <mymalloc.h>
 #include <iostuff.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index c482017ae7266d9da98ee2bb6184ef1ec9a98e91..b373056fe542d47ac3daeb99b6040ebd6633c839 100644 (file)
@@ -60,6 +60,7 @@
 
 #include <msg.h>
 #include <vstring.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index b8157e71b1236f0b80e31257e09aee8aa499c9f2..7b841df84fde5abf083f46042e02e9369ac5efc2 100644 (file)
 #include <vstring_vstream.h>
 #include <stringops.h>
 #include <iostuff.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 31504c58d1d98ac280dd4297379a14ec126d1897..a1bacad8694f8f2c5d83c6b06c0b42e4ce088706 100644 (file)
@@ -65,6 +65,7 @@
 /* Utility library. */
 
 #include <msg.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 88602a30fc1be3573b2bd6f71f0baf350537fab9..401262a5897f7ca2b30c63baf5c4dcd71c65bec9 100644 (file)
 #include <stringops.h>
 #include <argv.h>
 #include <sane_fsops.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 5f9ac580ae58c90f04553e5c95f58ddd881470c0..188f10bc446d746e902023d8633df4881f17bdb4 100644 (file)
@@ -58,6 +58,7 @@
 #include <mymalloc.h>
 #include <iostuff.h>
 #include <trigger.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 9427712c01d4e534376996ebaf4ac96c54dc5b1c..27382f5619e089890ba19e7bd3d33f6c0cb3827d 100644 (file)
@@ -20,8 +20,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20120118"
-#define MAIL_VERSION_NUMBER    "2.9-RC1"
+#define MAIL_RELEASE_DATE      "20120124"
+#define MAIL_VERSION_NUMBER    "2.9-RC2"
 
 #ifdef SNAPSHOT
 # define MAIL_VERSION_DATE     "-" MAIL_RELEASE_DATE
index ea96d8a4b87d810f8b1fb4b0033636e0c41ed618..7ccd08a5ad226f74fc437e516826dc87e709656b 100644 (file)
@@ -91,6 +91,7 @@
 #include <safe_open.h>
 #include <iostuff.h>
 #include <mymalloc.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 704fa342af72d6e1791a43b4dbed325c7d2ea984..3f69eca52cca0ba00dd2d16ca23077f422255db0 100644 (file)
@@ -47,6 +47,7 @@
 #include <dict.h>
 #include <dict_db.h>
 #include <myflock.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index dfe6ed20c15ea10e363d9229f5fbf0994d15d281..4ee6121b6803b418a79576dbd483459989893724 100644 (file)
 ./namadr_list 168.100.189.2 dummy 168.100.189.3
 ./namadr_list '[168.100.189.2]' dummy 168.100.189.2
 ./namadr_list '[168.100.189.2]' dummy 168.100.189.3
-echo foo !bar baz >junk
-./namadr_list !`pwd`/junk dummy 168.100.189.3
-./namadr_list !`pwd`/junk foo 168.100.189.3
-./namadr_list !`pwd`/junk bar 168.100.189.3
-./namadr_list !`pwd`/junk baz 168.100.189.3
-./namadr_list `pwd`/junk dummy 168.100.189.3
-./namadr_list `pwd`/junk foo 168.100.189.3
-./namadr_list `pwd`/junk bar 168.100.189.3
-./namadr_list `pwd`/junk baz 168.100.189.3
+echo foo !bar baz >junk; mv junk /tmp
+./namadr_list !/tmp/junk dummy 168.100.189.3
+./namadr_list !/tmp/junk foo 168.100.189.3
+./namadr_list !/tmp/junk bar 168.100.189.3
+./namadr_list !/tmp/junk baz 168.100.189.3
+./namadr_list /tmp/junk dummy 168.100.189.3
+./namadr_list /tmp/junk foo 168.100.189.3
+./namadr_list /tmp/junk bar 168.100.189.3
+./namadr_list /tmp/junk baz 168.100.189.3
 rm -f junk
 ./namadr_list 'be.be' x.x.x 127.0.0.1
 ./namadr_list 'be/be' x.x.x 127.0.0.1
@@ -39,4 +39,4 @@ env foo=x ./namadr_list !!environ:junk foo 168.100.189.3
 env foo=x ./namadr_list !!environ:junk bar 168.100.189.3
 ./namadr_list fail:1 bar 168.100.189.3
 ./namadr_list !fail:1 bar 168.100.189.3
-./namadr_list `pwd`/nosuchfile bar 168.100.189.3
+./namadr_list /tmp/nosuchfile bar 168.100.189.3
index 1aa895a6c2608008b50204301a531243f1aa4ee6..b21fe54eaa7f1a891cbf68c759fb94468d5a7ae5 100644 (file)
@@ -47,7 +47,7 @@ bar/168.100.189.3: NO
 bar/168.100.189.3: ERROR
 ./namadr_list: warning: fail:1: table lookup problem
 bar/168.100.189.3: ERROR
-./namadr_list: error: open file /home/wietse/postfix-2.9-20120114/src/global/nosuchfile: No such file or directory
-./namadr_list: warning: non-existent:/home/wietse/postfix-2.9-20120114/src/global/nosuchfile is unavailable. open file /home/wietse/postfix-2.9-20120114/src/global/nosuchfile: No such file or directory
-./namadr_list: warning: non-existent:/home/wietse/postfix-2.9-20120114/src/global/nosuchfile: table lookup problem
+./namadr_list: error: open file /tmp/nosuchfile: No such file or directory
+./namadr_list: warning: non-existent:/tmp/nosuchfile is unavailable. open file /tmp/nosuchfile: No such file or directory
+./namadr_list: warning: non-existent:/tmp/nosuchfile: table lookup problem
 bar/168.100.189.3: ERROR
index 620e182c5c0eb1eea41a3c65e07721c84c1b74d0..5f764b29ceb689bd5d21764b8a690544321c4983 100644 (file)
@@ -37,6 +37,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <warn_stat.h>
 
 /* Utility library. */
 
index 42ce2dc501c3d7381265a85ec92f1969206bbc17..92868a373120b0ea5aad02aa6e45006bc2b33eae 100644 (file)
@@ -453,6 +453,7 @@ mailbox.o: ../../include/tok822.h
 mailbox.o: ../../include/vbuf.h
 mailbox.o: ../../include/vstream.h
 mailbox.o: ../../include/vstring.h
+mailbox.o: ../../include/warn_stat.h
 mailbox.o: biff_notify.h
 mailbox.o: local.h
 mailbox.o: mailbox.c
@@ -491,6 +492,7 @@ maildir.o: ../../include/tok822.h
 maildir.o: ../../include/vbuf.h
 maildir.o: ../../include/vstream.h
 maildir.o: ../../include/vstring.h
+maildir.o: ../../include/warn_stat.h
 maildir.o: local.h
 maildir.o: maildir.c
 recipient.o: ../../include/argv.h
index ca107724196861af4d9243e2646c1dbaebc0f7a3..b46018e9ee15c3b1113b46adb71cec10014a1fbb 100644 (file)
@@ -61,6 +61,7 @@
 #include <mymalloc.h>
 #include <stringops.h>
 #include <set_eugid.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index a1ef4932ad3dd31511938d17cb7ccaec0d1bf9cb..46b86413ba64359c91359c714de47459521ba0d3 100644 (file)
@@ -57,6 +57,7 @@
 #include <set_eugid.h>
 #include <get_hostname.h>
 #include <sane_fsops.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 43f9db57e3b43c92c5986c0f354c3eea06591426..f1a59f61506adfa058aca34e50297a6719f7c4df 100644 (file)
@@ -118,6 +118,7 @@ event_server.o: master_proto.h
 mail_flow.o: ../../include/iostuff.h
 mail_flow.o: ../../include/msg.h
 mail_flow.o: ../../include/sys_defs.h
+mail_flow.o: ../../include/warn_stat.h
 mail_flow.o: mail_flow.c
 mail_flow.o: mail_flow.h
 mail_flow.o: master_proto.h
index 15cab0d1a410a75739885f393aa93c20230f3c3f..2958500852c398bddf6518ca7d67bdb199c7e71b 100644 (file)
@@ -53,6 +53,7 @@
 
 #include <msg.h>
 #include <iostuff.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 979c3caee79e18204f11dc80e7a5e0c7e23d20d1..1be25c873c9026f7d027a090e4d0b716aa3ef4d7 100644 (file)
@@ -112,6 +112,7 @@ qmgr_active.o: ../../include/trace.h
 qmgr_active.o: ../../include/vbuf.h
 qmgr_active.o: ../../include/vstream.h
 qmgr_active.o: ../../include/vstring.h
+qmgr_active.o: ../../include/warn_stat.h
 qmgr_active.o: qmgr.h
 qmgr_active.o: qmgr_active.c
 qmgr_bounce.o: ../../include/attr.h
index eea9d71d0c6c3e1604736ef2fcd1a2320d745583..d93a2cd105ba1765be73507ddc83b8930c6ca750 100644 (file)
@@ -93,6 +93,7 @@
 #include <events.h>
 #include <mymalloc.h>
 #include <vstream.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index c6161b8574df878b71c2580afee22230c654c03f..699c3d3fcbf16621fe80703780e826f06b45eeb3 100644 (file)
@@ -110,4 +110,5 @@ postalias.o: ../../include/vbuf.h
 postalias.o: ../../include/vstream.h
 postalias.o: ../../include/vstring.h
 postalias.o: ../../include/vstring_vstream.h
+postalias.o: ../../include/warn_stat.h
 postalias.o: postalias.c
index cc190b4165623fa9fcabaa0fe7bf1957c0b4b039..b11d8fa4b3de51ca1ea18b8d7bd26cd851c16b51 100644 (file)
 #include <split_at.h>
 #include <vstring_vstream.h>
 #include <set_eugid.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 1b08ad60be3b3f5032591b2564f0b0fba2d0ae3c..1760824c609d8b6dc795c15d014a62943041fea0 100644 (file)
@@ -116,4 +116,5 @@ postcat.o: ../../include/vbuf.h
 postcat.o: ../../include/vstream.h
 postcat.o: ../../include/vstring.h
 postcat.o: ../../include/vstring_vstream.h
+postcat.o: ../../include/warn_stat.h
 postcat.o: postcat.c
index 7c687bfe4f9f28daf96b7f1d1fc1d1826c99fc18..3d9b5158b136f8910373ff15694deb1cc2d0df27 100644 (file)
 #include <msg_vstream.h>
 #include <vstring_vstream.h>
 #include <stringops.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index e6a720abc4791fd188ab73e105fbc70aedbd639f..b757205db8da6000e09f4a54cf500230d920a0f9 100644 (file)
@@ -42,7 +42,7 @@ test: $(TESTPROG)
 
 tests: test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test11 \
        test12 test13 test14 test15 test16 test17 test18 test19 test20 test21 \
-       test22 test23 test24 test25 test26 test27 test28 test29
+       test22 test23 test24 test25 test26 test27 test28 test29 test30
 
 root_tests:
 
@@ -398,6 +398,22 @@ test29:    $(PROG) test29.ref
        diff test29.ref test29.tmp
        rm -f main.cf master.cf test29.tmp
 
+test30:        $(PROG) test30.ref
+       rm -f main.cf master.cf
+       touch main.cf master.cf
+       echo p1=xx >> main.cf
+       echo p2=xx >> main.cf
+       echo p3=xx >> main.cf
+       echo p4=xx >> main.cf
+       echo whatevershebrings unix - n n - 0 other >> master.cf
+       echo ' -o body_checks=$$p1' >> master.cf
+       echo ' -o bodyx_checks=$$p2' >> master.cf
+       echo ' -oheader_checks=$$p3' >> master.cf
+       echo ' -oheaderx_checks=$$p4' >> master.cf
+       ./$(PROG) -nc . >test30.tmp 2>&1
+       diff test30.ref test30.tmp
+       rm -f main.cf master.cf test30.tmp
+
 printfck: $(OBJS) $(PROG)
        rm -rf printfck
        mkdir printfck
@@ -442,6 +458,7 @@ postconf.o: ../../include/sys_defs.h
 postconf.o: ../../include/vbuf.h
 postconf.o: ../../include/vstream.h
 postconf.o: ../../include/vstring.h
+postconf.o: ../../include/warn_stat.h
 postconf.o: postconf.c
 postconf.o: postconf.h
 postconf_builtin.o: ../../include/argv.h
index 6672b694d773b49f93344d364f2265c936b44acb..becede83455c0300a1a12f41d9cd422881bf787c 100644 (file)
 /* .IP "\fBldap\fR (read-only)"
 /*     Perform lookups using the LDAP protocol. This is described
 /*     in \fBldap_table\fR(5).
-/* .IP "\fBmemcache\fR (read-write)"
+/* .IP "\fBmemcache\fR"
 /*     Perform lookups using the memcache protocol. This is described
 /*     in \fBmemcache_table\fR(5).
 /* .IP "\fBmysql\fR (read-only)"
 /* .IP "\fBpgsql\fR (read-only)"
 /*     Perform lookups using the PostgreSQL protocol. This is described
 /*     in \fBpgsql_table\fR(5).
-/* .IP "\fBproxy\fR (read-only)"
+/* .IP "\fBproxy\fR"
 /*     A lookup table that is implemented via the Postfix
 /*     \fBproxymap\fR(8) service. The table name syntax is
 /*     \fItype\fB:\fIname\fR.
 #include <vstream.h>
 #include <stringops.h>
 #include <name_mask.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index ab20cc6593e4a4cdadba061f2500f8f262b9a0f5..0aa6c3a9247e98565c45b043b7965a9370d6351c 100644 (file)
 
 #define STR(x) vstring_str(x)
 
+/* normalize_options - bring options into canonical form */
+
+static void normalize_options(ARGV *argv)
+{
+    int     field;
+    char   *arg;
+
+    /*
+     * Normalize options to simplify later processing.
+     */
+    for (field = PC_MASTER_MIN_FIELDS; argv->argv[field] != 0; field++) {
+       arg = argv->argv[field];
+       if (arg[0] != '-' || strcmp(arg, "--") == 0)
+           break;
+       if (strncmp(arg, "-o", 2) == 0) {
+           if (arg[2] != 0) {
+               /* Split "-oname=value" into "-o" "name=value". */
+               argv_insert_one(argv, field + 1, arg + 2);
+               argv_replace_one(argv, field, "-o");
+               /* arg is now a dangling pointer. */
+               field += 1;
+           } else if (argv->argv[field + 1] != 0) {
+               /* Already in "-o" "name=value" form. */
+               field += 1;
+           }
+       }
+    }
+}
+
 /* read_master - read and digest the master.cf file */
 
 void    read_master(int fail_on_open_error)
@@ -126,6 +155,7 @@ void    read_master(int fail_on_open_error)
            if (argv->argc < PC_MASTER_MIN_FIELDS)
                msg_fatal("file %s: line %d: bad field count",
                          path, line_count);
+           normalize_options(argv);
            master_table[entry_count].name_space =
                concatenate(argv->argv[0], ".", argv->argv[1], (char *) 0);
            master_table[entry_count].argv = argv;
@@ -197,7 +227,7 @@ static void print_master_line(int mode, ARGV *argv)
             * Try to show the generic options (-v -D) on the first line, and
             * non-options on a later line.
             */
-           if (arg[0] != '-') {
+           if (arg[0] != '-' || strcmp(arg, "--") == 0) {
                in_daemon_options = 0;
                if ((mode & FOLD_LINE)
                    && line_len > column_goal[PC_MASTER_MIN_FIELDS - 1]) {
index 989b7ef3781e6732a91cce1d0f0cddcba512307a..d3ff7e3184faac97f818673c66d863a44ab1f258 100644 (file)
@@ -296,7 +296,7 @@ void    register_user_parameters(void)
     for (masterp = master_table; (argv = masterp->argv) != 0; masterp++) {
        for (field = PC_MASTER_MIN_FIELDS; argv->argv[field] != 0; field++) {
            arg = argv->argv[field];
-           if (arg[0] != '-')
+           if (arg[0] != '-' || strcmp(arg, "--") == 0)
                break;
            if (strcmp(arg, "-o") == 0 && (arg = argv->argv[field + 1]) != 0) {
                saved_arg = mystrdup(arg);
diff --git a/postfix/src/postconf/test30.ref b/postfix/src/postconf/test30.ref
new file mode 100644 (file)
index 0000000..706a429
--- /dev/null
@@ -0,0 +1,7 @@
+config_directory = .
+p1 = xx
+p2 = xx
+p3 = xx
+p4 = xx
+./postconf: warning: ./master.cf: unused parameter: bodyx_checks=$p2
+./postconf: warning: ./master.cf: unused parameter: headerx_checks=$p4
index 06afb8492529940ab100d95bb8320ab7fbc59354..cfdc692c8c06a284ee50648849164b73882f2da4 100644 (file)
@@ -82,4 +82,5 @@ postdrop.o: ../../include/user_acl.h
 postdrop.o: ../../include/vbuf.h
 postdrop.o: ../../include/vstream.h
 postdrop.o: ../../include/vstring.h
+postdrop.o: ../../include/warn_stat.h
 postdrop.o: postdrop.c
index 84f8e69e0d47a0a8d1e378ee7a7232f4a91d4390..232217d85a9936ac8d5a7a36f6fea8ae754de3e2 100644 (file)
 #include <signal.h>
 #include <syslog.h>
 #include <errno.h>
+#include <warn_stat.h>
 
 /* Utility library. */
 
index ef7c63cacd7a814ef0836a64adfee7563b43bd83..71e1224e1bec2912c9c7d3df3342be864cb5d30d 100644 (file)
@@ -75,4 +75,5 @@ postfix.o: ../../include/sys_defs.h
 postfix.o: ../../include/vbuf.h
 postfix.o: ../../include/vstream.h
 postfix.o: ../../include/vstring.h
+postfix.o: ../../include/warn_stat.h
 postfix.o: postfix.c
index 60343668eb526fafaf84315901ab50d70db931f3..077b91e4eb81b3a03a37f1537c2b55204425827c 100644 (file)
 #include <clean_env.h>
 #include <argv.h>
 #include <safe.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 7271ed1d09c97b2415e6c76d3091b3d65affa524..72fde2102fdff086429745958af8c5136c697324 100644 (file)
@@ -71,4 +71,5 @@ postkick.o: ../../include/safe.h
 postkick.o: ../../include/sys_defs.h
 postkick.o: ../../include/vbuf.h
 postkick.o: ../../include/vstream.h
+postkick.o: ../../include/warn_stat.h
 postkick.o: postkick.c
index 93df8d0e32da172503786568cfb4453bc4f70ace..700467c10249cf3e02f6e8404db2b0e7d472b1da 100644 (file)
@@ -52,7 +52,7 @@
 /*     configuration files.
 /* .IP "\fBapplication_event_drain_time (100s)\fR"
 /*     How long the \fBpostkick\fR(1) command waits for a request to enter the
-/*     server's input buffer before giving up.
+/*     Postfix daemon process input buffer before giving up.
 /* .IP "\fBqueue_directory (see 'postconf -d' output)\fR"
 /*     The location of the Postfix top-level queue directory.
 /* FILES
@@ -91,6 +91,7 @@
 #include <msg_vstream.h>
 #include <safe.h>
 #include <events.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 7024d7139dffa66faa1c7d5215eef125c7a993fd..de6546bd39cef631bace3ede9a9fdf979b9acecb 100644 (file)
@@ -78,4 +78,5 @@ postlock.o: ../../include/sys_exits.h
 postlock.o: ../../include/vbuf.h
 postlock.o: ../../include/vstream.h
 postlock.o: ../../include/vstring.h
+postlock.o: ../../include/warn_stat.h
 postlock.o: postlock.c
index e2814bce3bad4b8fdc43bb314dd02908f64e8896..01f3cad5b197989d7305299edf92997d839368ec 100644 (file)
 #include <vstream.h>
 #include <msg_vstream.h>
 #include <iostuff.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 5882fd33fa4f3cd16725121b06785c895c1f32f1..effad6c4e8520c7e5162378d7e39f11d0656c641 100644 (file)
@@ -74,4 +74,5 @@ postlog.o: ../../include/vbuf.h
 postlog.o: ../../include/vstream.h
 postlog.o: ../../include/vstring.h
 postlog.o: ../../include/vstring_vstream.h
+postlog.o: ../../include/warn_stat.h
 postlog.o: postlog.c
index 67715ae9e71445b4ba79c3a055b09bf3fc8a4ea2..90f0f2b4cbd4818c751c555c91f3378a54712673 100644 (file)
@@ -94,6 +94,7 @@
 #include <msg_output.h>
 #include <msg_vstream.h>
 #include <msg_syslog.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 2684a5d77a2e2b8bcbf2e06662bd13802db1e6a4..9ffc591b6286810541b64650aa8d7022a97d8f48 100644 (file)
@@ -111,4 +111,5 @@ postmap.o: ../../include/vbuf.h
 postmap.o: ../../include/vstream.h
 postmap.o: ../../include/vstring.h
 postmap.o: ../../include/vstring_vstream.h
+postmap.o: ../../include/warn_stat.h
 postmap.o: postmap.c
index 4781d52115efd0ca3dfa81a833fd1b61f099c332..8249d79d57f1d819b327222d636584eccb4a1e3d 100644 (file)
 #include <split_at.h>
 #include <vstring_vstream.h>
 #include <set_eugid.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index b071ec942b8e4643f71a6d41492cb30485dc428b..2c8f4137f095692b283df4c060c04ed74baf286a 100644 (file)
@@ -80,4 +80,5 @@ postmulti.o: ../../include/vbuf.h
 postmulti.o: ../../include/vstream.h
 postmulti.o: ../../include/vstring.h
 postmulti.o: ../../include/vstring_vstream.h
+postmulti.o: ../../include/warn_stat.h
 postmulti.o: postmulti.c
index c0ff9df36fa4575dc5c0a50e4fb278ac2b5589e9..fcf66008cba1329424683b5d6c288a5acb5f0b34 100644 (file)
 #include <htable.h>
 #include <name_code.h>
 #include <ring.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 4e80a3c811f70a8f82032cb48cefce178e64ef02..c7ebd3c74a85ee1b97ea3d8237b17304f754127a 100644 (file)
@@ -85,4 +85,5 @@ postqueue.o: ../../include/valid_mailhost_addr.h
 postqueue.o: ../../include/vbuf.h
 postqueue.o: ../../include/vstream.h
 postqueue.o: ../../include/vstring.h
+postqueue.o: ../../include/warn_stat.h
 postqueue.o: postqueue.c
index d6ed5ccc416fb1b32d8f05c3b9964aacce63014d..6ea91f90be262e5e83ea598bc38169f1f92e8220 100644 (file)
 #include <safe.h>
 #include <connect.h>
 #include <valid_hostname.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 36a665bf17917ad0f1eb1195c490513b7fb791b4..b529ed392784e2bc3448a46f2450533161ea66ab 100644 (file)
@@ -796,7 +796,8 @@ static void psc_service(VSTREAM *smtp_client_stream,
     }
 
     /*
-     * Don't whitelist clients that connect to backup MX addresses.
+     * Don't whitelist clients that connect to backup MX addresses. Fail
+     * "closed" on error.
      */
     if (addr_match_list_match(psc_wlist_if, smtp_server_addr.buf) == 0) {
        state->flags |= (PSC_STATE_FLAG_WLIST_FAIL | PSC_STATE_FLAG_NOFORWARD);
@@ -862,8 +863,9 @@ static void pre_jail_init(char *unused_name, char **unused_argv)
     psc_acl_pre_jail_init(var_mynetworks, VAR_PSC_ACL);
     if (*var_psc_acl)
        psc_acl = psc_acl_parse(var_psc_acl, VAR_PSC_ACL);
+    /* Ignore smtpd_forbid_cmds lookup errors. Non-critical feature. */
     if (*var_psc_forbid_cmds)
-       psc_forbid_cmds = string_list_init(MATCH_FLAG_NONE,
+       psc_forbid_cmds = string_list_init(MATCH_FLAG_RETURN,
                                           var_psc_forbid_cmds);
     if (*var_psc_dnsbl_reply)
        psc_dnsbl_reply = dict_open(var_psc_dnsbl_reply, O_RDONLY,
@@ -1008,7 +1010,8 @@ static void post_jail_init(char *unused_name, char **unused_argv)
                                      var_psc_barlf_action)) < 0)
        msg_fatal("bad %s value: %s", VAR_PSC_BARLF_ACTION,
                  var_psc_barlf_action);
-    psc_wlist_if = addr_match_list_init(MATCH_FLAG_NONE, var_psc_wlist_if);
+    /* Fail "closed" on error. */
+    psc_wlist_if = addr_match_list_init(MATCH_FLAG_RETURN, var_psc_wlist_if);
 
     /*
      * Start the cache maintenance pseudo thread last. Early cleanup makes
index 406438b5569084f509bd207e4143f9bad631c1aa..7e319f7131ba86fa528cb0ccf2c045eb56e03d5e 100644 (file)
@@ -928,6 +928,7 @@ static void psc_smtpd_read_event(int event, char *context)
        if ((state->flags & PSC_STATE_MASK_NSMTP_TODO_SKIP)
            == PSC_STATE_FLAG_NSMTP_TODO && cmdp->name == 0
            && (is_header(command)
+       /* Ignore forbid_cmds lookup errors. Non-critical feature. */
                || (*var_psc_forbid_cmds
                    && string_list_match(psc_forbid_cmds, command)))) {
            printable(command, '?');
index 7367d601f1b4a716030a92a20aa784d9f773c43e..fe86fda947f027e804234b267c2c482a250be49c 100644 (file)
@@ -80,4 +80,5 @@ postsuper.o: ../../include/vbuf.h
 postsuper.o: ../../include/vstream.h
 postsuper.o: ../../include/vstring.h
 postsuper.o: ../../include/vstring_vstream.h
+postsuper.o: ../../include/warn_stat.h
 postsuper.o: postsuper.c
index 7e3b2b98c97c68a9837438fd3d0cf7a24181aa18..9dabb5dc4c92b36308bbd76a24bd7e73a7730da0 100644 (file)
 #include <vstring_vstream.h>
 #include <sane_fsops.h>
 #include <myrand.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index c1a7f20519e5f39f48c90e4174d032ef692cff82..e9e2a3ba607ba3bb29d10a54e878acf5b8c0c1fa 100644 (file)
@@ -114,6 +114,7 @@ qmgr_active.o: ../../include/trace.h
 qmgr_active.o: ../../include/vbuf.h
 qmgr_active.o: ../../include/vstream.h
 qmgr_active.o: ../../include/vstring.h
+qmgr_active.o: ../../include/warn_stat.h
 qmgr_active.o: qmgr.h
 qmgr_active.o: qmgr_active.c
 qmgr_bounce.o: ../../include/attr.h
index eea9d71d0c6c3e1604736ef2fcd1a2320d745583..d93a2cd105ba1765be73507ddc83b8930c6ca750 100644 (file)
@@ -93,6 +93,7 @@
 #include <events.h>
 #include <mymalloc.h>
 #include <vstream.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 805a3f4c8696972c7d3338101446485bfcf075c8..02111628fad1899dd951da5209a87a7b7b8f0042 100644 (file)
@@ -102,4 +102,5 @@ sendmail.o: ../../include/verp_sender.h
 sendmail.o: ../../include/vstream.h
 sendmail.o: ../../include/vstring.h
 sendmail.o: ../../include/vstring_vstream.h
+sendmail.o: ../../include/warn_stat.h
 sendmail.o: sendmail.c
index 9560f4840ff599965dd277623e8fd1703e8484eb..5e205a57c240a84095666a3b5c06a7c17c57041f 100644 (file)
 #include <connect.h>
 #include <split_at.h>
 #include <name_code.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index 3d2f27447c4d5a12a3f9d04bff316a8a54416689..5ad0645b58f4c106a6a36840653ec8e0c341a012 100644 (file)
@@ -87,4 +87,5 @@ tlsmgr.o: ../../include/vbuf.h
 tlsmgr.o: ../../include/vstream.h
 tlsmgr.o: ../../include/vstring.h
 tlsmgr.o: ../../include/vstring_vstream.h
+tlsmgr.o: ../../include/warn_stat.h
 tlsmgr.o: tlsmgr.c
index efddb5c3706c3ea9e393cff0bdbe965c12b283e9..cab6caff200504bed54654d74d04d96c50409f16 100644 (file)
 #include <attr.h>
 #include <set_eugid.h>
 #include <htable.h>
+#include <warn_stat.h>
 
 /* Global library. */
 
index c73642c98b8403416dd40c1805111b140e6fd7ce..dc7a4bb437425c66e531a5acd76569f7503f3aec 100644 (file)
@@ -34,7 +34,7 @@ SRCS  = alldig.c allprint.c argv.c argv_split.c attr_clnt.c attr_print0.c \
        unix_pass_listen.c unix_pass_trigger.c edit_file.c inet_windowsize.c \
        unix_pass_fd_fix.c dict_cache.c valid_utf_8.c dict_thash.c \
        ip_match.c nbbio.c stream_pass_connect.c base32_code.c dict_test.c \
-       dict_fail.c msg_rate_delay.c dict_surrogate.c
+       dict_fail.c msg_rate_delay.c dict_surrogate.c warn_stat.c
 OBJS   = alldig.o allprint.o argv.o argv_split.o attr_clnt.o attr_print0.o \
        attr_print64.o attr_print_plain.o attr_scan0.o attr_scan64.o \
        attr_scan_plain.o auto_clnt.o base64_code.o basename.o binhash.o \
@@ -70,7 +70,7 @@ OBJS  = alldig.o allprint.o argv.o argv_split.o attr_clnt.o attr_print0.o \
        unix_pass_listen.o unix_pass_trigger.o edit_file.o inet_windowsize.o \
        unix_pass_fd_fix.o dict_cache.o valid_utf_8.o dict_thash.o \
        ip_match.o nbbio.o stream_pass_connect.o base32_code.o dict_test.o \
-       dict_fail.o msg_rate_delay.o dict_surrogate.o
+       dict_fail.o msg_rate_delay.o dict_surrogate.o warn_stat.o
 HDRS   = argv.h attr.h attr_clnt.h auto_clnt.h base64_code.h binhash.h \
        chroot_uid.h cidr_match.h clean_env.h connect.h ctable.h dict.h \
        dict_cdb.h dict_cidr.h dict_db.h dict_dbm.h dict_env.h dict_ht.h \
@@ -91,7 +91,7 @@ HDRS  = argv.h attr.h attr_clnt.h auto_clnt.h base64_code.h binhash.h \
        username.h valid_hostname.h vbuf.h vbuf_print.h vstream.h vstring.h \
        vstring_vstream.h watchdog.h format_tv.h load_file.h killme_after.h \
        edit_file.h dict_cache.h dict_thash.h ip_match.h nbbio.h base32_code.h \
-       dict_fail.h
+       dict_fail.h warn_stat.h
 TESTSRC        = fifo_open.c fifo_rdwr_bug.c fifo_rdonly_bug.c select_bug.c \
        stream_test.c dup2_pass_on_exec.c
 DEFS   = -I. -D$(SYSTYPE)
@@ -853,6 +853,7 @@ dict.o: sys_defs.h
 dict.o: vbuf.h
 dict.o: vstream.h
 dict.o: vstring.h
+dict.o: warn_stat.h
 dict_alloc.o: argv.h
 dict_alloc.o: dict.h
 dict_alloc.o: dict_alloc.c
@@ -886,6 +887,7 @@ dict_cdb.o: sys_defs.h
 dict_cdb.o: vbuf.h
 dict_cdb.o: vstream.h
 dict_cdb.o: vstring.h
+dict_cdb.o: warn_stat.h
 dict_cidr.o: argv.h
 dict_cidr.o: cidr_match.h
 dict_cidr.o: dict.h
@@ -900,6 +902,7 @@ dict_cidr.o: sys_defs.h
 dict_cidr.o: vbuf.h
 dict_cidr.o: vstream.h
 dict_cidr.o: vstring.h
+dict_cidr.o: warn_stat.h
 dict_db.o: argv.h
 dict_db.o: dict.h
 dict_db.o: dict_db.c
@@ -913,6 +916,7 @@ dict_db.o: sys_defs.h
 dict_db.o: vbuf.h
 dict_db.o: vstream.h
 dict_db.o: vstring.h
+dict_db.o: warn_stat.h
 dict_dbm.o: dict_dbm.c
 dict_dbm.o: sys_defs.h
 dict_debug.o: argv.h
@@ -1025,6 +1029,7 @@ dict_pcre.o: sys_defs.h
 dict_pcre.o: vbuf.h
 dict_pcre.o: vstream.h
 dict_pcre.o: vstring.h
+dict_pcre.o: warn_stat.h
 dict_regexp.o: argv.h
 dict_regexp.o: dict.h
 dict_regexp.o: dict_regexp.c
@@ -1039,6 +1044,7 @@ dict_regexp.o: sys_defs.h
 dict_regexp.o: vbuf.h
 dict_regexp.o: vstream.h
 dict_regexp.o: vstring.h
+dict_regexp.o: warn_stat.h
 dict_sdbm.o: argv.h
 dict_sdbm.o: dict.h
 dict_sdbm.o: dict_sdbm.c
@@ -1053,6 +1059,7 @@ dict_sdbm.o: sys_defs.h
 dict_sdbm.o: vbuf.h
 dict_sdbm.o: vstream.h
 dict_sdbm.o: vstring.h
+dict_sdbm.o: warn_stat.h
 dict_static.o: argv.h
 dict_static.o: dict.h
 dict_static.o: dict_static.c
@@ -1112,6 +1119,7 @@ dict_thash.o: sys_defs.h
 dict_thash.o: vbuf.h
 dict_thash.o: vstream.h
 dict_thash.o: vstring.h
+dict_thash.o: warn_stat.h
 dict_unix.o: argv.h
 dict_unix.o: dict.h
 dict_unix.o: dict_unix.c
@@ -1156,6 +1164,7 @@ edit_file.o: sys_defs.h
 edit_file.o: vbuf.h
 edit_file.o: vstream.h
 edit_file.o: vstring.h
+edit_file.o: warn_stat.h
 environ.o: environ.c
 environ.o: sys_defs.h
 events.o: events.c
@@ -1175,6 +1184,7 @@ fifo_listen.o: iostuff.h
 fifo_listen.o: listen.h
 fifo_listen.o: msg.h
 fifo_listen.o: sys_defs.h
+fifo_listen.o: warn_stat.h
 fifo_open.o: fifo_open.c
 fifo_rdonly_bug.o: fifo_rdonly_bug.c
 fifo_rdonly_bug.o: sys_defs.h
@@ -1347,6 +1357,7 @@ load_file.o: msg.h
 load_file.o: sys_defs.h
 load_file.o: vbuf.h
 load_file.o: vstream.h
+load_file.o: warn_stat.h
 lowercase.o: lowercase.c
 lowercase.o: stringops.h
 lowercase.o: sys_defs.h
@@ -1357,6 +1368,7 @@ lstat_as.o: lstat_as.h
 lstat_as.o: msg.h
 lstat_as.o: set_eugid.h
 lstat_as.o: sys_defs.h
+lstat_as.o: warn_stat.h
 mac_expand.o: mac_expand.c
 mac_expand.o: mac_expand.h
 mac_expand.o: mac_parse.h
@@ -1379,6 +1391,7 @@ make_dirs.o: stringops.h
 make_dirs.o: sys_defs.h
 make_dirs.o: vbuf.h
 make_dirs.o: vstring.h
+make_dirs.o: warn_stat.h
 mask_addr.o: mask_addr.c
 mask_addr.o: mask_addr.h
 mask_addr.o: msg.h
@@ -1580,6 +1593,7 @@ safe_open.o: sys_defs.h
 safe_open.o: vbuf.h
 safe_open.o: vstream.h
 safe_open.o: vstring.h
+safe_open.o: warn_stat.h
 sane_accept.o: msg.h
 sane_accept.o: sane_accept.c
 sane_accept.o: sane_accept.h
@@ -1597,10 +1611,12 @@ sane_link.o: msg.h
 sane_link.o: sane_fsops.h
 sane_link.o: sane_link.c
 sane_link.o: sys_defs.h
+sane_link.o: warn_stat.h
 sane_rename.o: msg.h
 sane_rename.o: sane_fsops.h
 sane_rename.o: sane_rename.c
 sane_rename.o: sys_defs.h
+sane_rename.o: warn_stat.h
 sane_socketpair.o: msg.h
 sane_socketpair.o: sane_socketpair.c
 sane_socketpair.o: sane_socketpair.h
@@ -1668,6 +1684,7 @@ stat_as.o: set_eugid.h
 stat_as.o: stat_as.c
 stat_as.o: stat_as.h
 stat_as.o: sys_defs.h
+stat_as.o: warn_stat.h
 strcasecmp.o: strcasecmp.c
 strcasecmp.o: sys_defs.h
 stream_connect.o: connect.h
@@ -1866,6 +1883,10 @@ vstring_vstream.o: vstream.h
 vstring_vstream.o: vstring.h
 vstring_vstream.o: vstring_vstream.c
 vstring_vstream.o: vstring_vstream.h
+warn_stat.o: msg.h
+warn_stat.o: sys_defs.h
+warn_stat.o: warn_stat.c
+warn_stat.o: warn_stat.h
 watchdog.o: events.h
 watchdog.o: iostuff.h
 watchdog.o: killme_after.h
index 4613bc2df7a1cdfa1060b002f96876e755277424..de2d4b3291a4b400bb2968e7e5848e1198d3346f 100644 (file)
 /*     ARGV    *argvp;
 /*     ssize_t len;
 /*
+/*     void    argv_insert_one(argvp, pos, arg)
+/*     ARGV    *argvp;
+/*     ssize_t pos;
+/*     const char *arg;
+/*
+/*     void    argv_replace_one(argvp, pos, arg)
+/*     ARGV    *argvp;
+/*     ssize_t pos;
+/*     const char *arg;
+/*
 /*     void    ARGV_FAKE_BEGIN(argv, arg)
 /*     const char *arg;
 /*
 /*     number of entries, but does not reallocate memory. The
 /*     result is null-terminated.
 /*
+/*     argv_insert_one() inserts one string at the specified array
+/*     position.
+/*
+/*     argv_replace_one() replaces one string at the specified
+/*     position.
+/*
 /*     ARGV_FAKE_BEGIN/END are an optimization for the case where
 /*     a single string needs to be passed into an ARGV-based
 /*     interface.  ARGV_FAKE_BEGIN() opens a statement block and
@@ -219,3 +235,38 @@ void    argv_truncate(ARGV *argvp, ssize_t len)
        argvp->argv[argvp->argc] = 0;
     }
 }
+
+/* argv_insert_one - insert one string into array */
+
+void    argv_insert_one(ARGV *argvp, ssize_t where, const char *arg)
+{
+    ssize_t pos;
+
+    /*
+     * Sanity check.
+     */
+    if (where < 0 || where > argvp->argc)
+       msg_panic("argv_insert_one bad position: %ld", (long) where);
+
+    if (ARGV_SPACE_LEFT(argvp) <= 0)
+       argv_extend(argvp);
+    for (pos = argvp->argc; pos >= where; pos--)
+       argvp->argv[pos + 1] = argvp->argv[pos];
+    argvp->argv[where] = mystrdup(arg);
+    argvp->argc += 1;
+}
+
+/* argv_replace_one - insert one string into array */
+
+void    argv_replace_one(ARGV *argvp, ssize_t where, const char *arg)
+{
+
+    /*
+     * Sanity check.
+     */
+    if (where < 0 || where >= argvp->argc)
+       msg_panic("argv_replace_one bad position: %ld", (long) where);
+
+    myfree(argvp->argv[where]);
+    argvp->argv[where] = mystrdup(arg);
+}
index 17f006a39427700967ff1f510673cd8ff484a84c..7c56f581a04e6e787b37d2274e6231fe91ba40bb 100644 (file)
@@ -25,6 +25,8 @@ extern void argv_add(ARGV *,...);
 extern void argv_addn(ARGV *,...);
 extern void argv_terminate(ARGV *);
 extern void argv_truncate(ARGV *, ssize_t);
+extern void argv_insert_one(ARGV *, ssize_t, const char *);
+extern void argv_replace_one(ARGV *, ssize_t, const char *);
 extern ARGV *argv_free(ARGV *);
 
 extern ARGV *argv_split(const char *, const char *);
index 875c5c513ec902bd77628594684204647517b8df..3ef835b8987366281ce32008e0599c5152246c7d 100644 (file)
 #include "name_mask.h"
 #include "dict.h"
 #include "dict_ht.h"
+#include "warn_stat.h"
 
 static HTABLE *dict_table;
 
index 9de10fdf0fdeea7ebd7c34aaba83560ea005349e..f79c1353df8f9a0ce0a63f799275287746c5c1e2 100644 (file)
@@ -60,6 +60,7 @@
 #include "stringops.h"
 #include "dict.h"
 #include "dict_cdb.h"
+#include "warn_stat.h"
 
 #ifdef HAS_CDB
 
index 2ea7ab1fdb528fc6ec76e70c585442a128a8017f..7aecb2f250fdab7870965e9159a74a3fb0396961 100644 (file)
@@ -53,6 +53,7 @@
 #include <myaddrinfo.h>
 #include <cidr_match.h>
 #include <dict_cidr.h>
+#include <warn_stat.h>
 
 /* Application-specific. */
 
index 5a4287c86fff6d7e02baf2f1b0cf85f56ef0c402..93ee48098fa4025db936a167abee13eb35d5a306 100644 (file)
 #include "myflock.h"
 #include "dict.h"
 #include "dict_db.h"
+#include "warn_stat.h"
 
 /* Application-specific. */
 
index c0627d87b3d968b4dc5f1d064344b200a3d82bdc..37e14639f49ed963cfd0d4143469050c5baf7f6e 100644 (file)
@@ -60,6 +60,7 @@
 #include "stringops.h"
 #include "dict.h"
 #include "dict_dbm.h"
+#include "warn_stat.h"
 
 /* Application-specific. */
 
index d53d4b6c830737f427759c8837570bf0d4cc89c2..060019ec5c937f0d24b9553abee5df30ca41f7ce 100644 (file)
@@ -59,6 +59,7 @@
 #include "dict_pcre.h"
 #include "mac_parse.h"
 #include "pcre.h"
+#include "warn_stat.h"
 
  /*
   * Support for IF/ENDIF based on an idea by Bert Driehuis.
index 2cab3b4e0264f9501f1b0f324f6792274d05540b..14275089b792bc90b3018e71050c71f820c7ef69 100644 (file)
@@ -61,6 +61,7 @@
 #include "dict.h"
 #include "dict_regexp.h"
 #include "mac_parse.h"
+#include "warn_stat.h"
 
  /*
   * Support for IF/ENDIF based on an idea by Bert Driehuis.
index 3a30d9c65fbbd01ac8a5f4c6b1a62b6e8464a513..23371dc7c72efd46df8d0da70d6eafa981af7e9b 100644 (file)
@@ -52,6 +52,7 @@
 #include <stringops.h>
 #include <dict.h>
 #include <dict_sdbm.h>
+#include <warn_stat.h>
 
 #ifdef HAS_SDBM
 
index 0f09d4b933cde4659778bfecf191057947924854..6eac13ff66d6c411451b34a93b3eb0da2d70800d 100644 (file)
@@ -49,6 +49,7 @@
 #include <readlline.h>
 #include <dict.h>
 #include <dict_thash.h>
+#include <warn_stat.h>
 
 /* Application-specific. */
 
index 9b5388ab0f84fec72b0266a7ff1b29b663b935ed..868128806c90625d2ec996344d9e26c9d23df0d2 100644 (file)
 #include <stringops.h>
 #include <myflock.h>
 #include <edit_file.h>
+#include <warn_stat.h>
 
  /*
   * Do we reuse and truncate an output file that persists after a crash, or
index 62915c14c6cd51de1c19263b472c257c7201bfa5..9ad3440de08fc38eaf3c23f9c6461dab3c4dfd0f 100644 (file)
@@ -43,6 +43,7 @@
 #include "msg.h"
 #include "iostuff.h"
 #include "listen.h"
+#include "warn_stat.h"
 
 #define BUF_LEN        100
 
index 59af3453c110083f14d1ac9e1796550aaaa86a0a..4e575d1392a218e8d3f1e38f6d8b6468800f2e85 100644 (file)
@@ -46,6 +46,7 @@
 #include <vstream.h>
 #include <iostuff.h>
 #include <load_file.h>
+#include <warn_stat.h>
 
 /* load_file - load file with some prejudice */
 
index ffb796e8ce91acfe39ca2b889ea4aeecf771dd8a..18e0f9fbfa16b4e9733d7c9513575a5e2711648c 100644 (file)
@@ -44,6 +44,7 @@
 #include "msg.h"
 #include "set_eugid.h"
 #include "lstat_as.h"
+#include "warn_stat.h"
 
 /* lstat_as - lstat file as user */
 
index fef1c6fcc7d6f9c0ad41b995fd41d5a13044ea39..2e37f8fe6267a2d96d1711782d829243f23c04d2 100644 (file)
@@ -45,6 +45,7 @@
 #include "mymalloc.h"
 #include "stringops.h"
 #include "make_dirs.h"
+#include "warn_stat.h"
 
 /* make_dirs - create directory hierarchy */
 
index f0da580cbddc601145e20493a2fffff225bbed96..360228a10b637e7d732e33f55bff70e39575b105 100644 (file)
@@ -1,8 +1,8 @@
 ./myaddrinfo: === hostname belly.porcupine.org ===
-./myaddrinfo: belly.porcupine.org -> family=28 sock=1 proto=6 2604:8d00:189::6
-./myaddrinfo: 2604:8d00:189::6 -> belly.porcupine.org
 ./myaddrinfo: belly.porcupine.org -> family=2 sock=1 proto=6 168.100.189.6
 ./myaddrinfo: 168.100.189.6 -> belly.porcupine.org
+./myaddrinfo: belly.porcupine.org -> family=28 sock=1 proto=6 2604:8d00:189::6
+./myaddrinfo: 2604:8d00:189::6 -> belly.porcupine.org
 ./myaddrinfo: === host address 168.100.189.2 ===
 ./myaddrinfo: 168.100.189.2 -> family=2 sock=1 proto=6 168.100.189.2
 ./myaddrinfo: 168.100.189.2 -> spike.porcupine.org
index 9cf5d0263033e17f28a30f36965d9186b49d0461..c7a80cfa8f572693728054d756d76862dae18056 100644 (file)
@@ -85,6 +85,7 @@
 #include <vstring.h>
 #include <stringops.h>
 #include <safe_open.h>
+#include <warn_stat.h>
 
 /* safe_open_exist - open existing file */
 
index a094377ee32296f216fef38d25ae3e0f08552ba4..de83564cde4d72e32dc3026b2319aa36d6565eee 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "msg.h"
 #include "sane_fsops.h"
+#include "warn_stat.h"
 
 /* sane_link - sanitize link() error returns */
 
index 7a458c3f263ef6023c4cfa52f11fc238dc2f5803..4c551605ab0ff4e4984f1731431f0da2d4c58e03 100644 (file)
@@ -34,6 +34,7 @@
 
 #include "msg.h"
 #include "sane_fsops.h"
+#include "warn_stat.h"
 
 /* sane_rename - sanitize rename() error returns */
 
index 0f578a541c3a29f5d3c85a924255216d29ecbefb..3e05ff749ba4889ca379e824724e243707fa3a5a 100644 (file)
@@ -44,6 +44,7 @@
 #include "msg.h"
 #include "set_eugid.h"
 #include "stat_as.h"
+#include "warn_stat.h"
 
 /* stat_as - stat file as user */
 
diff --git a/postfix/src/util/warn_stat.c b/postfix/src/util/warn_stat.c
new file mode 100644 (file)
index 0000000..fd885d9
--- /dev/null
@@ -0,0 +1,101 @@
+/*++
+/* NAME
+/*     warn_stat 3
+/* SUMMARY
+/*     baby-sit stat() error returns
+/* SYNOPSIS
+/*     #include <warn_stat.h>
+/*
+/*     int     warn_stat(path, st)
+/*     const char *path;
+/*     struct stat *st;
+/*
+/*     int     warn_lstat(path, st)
+/*     const char *path;
+/*     struct stat *st;
+/*
+/*     int     warn_fstat(fd, st)
+/*     int     fd;
+/*     struct stat *st;
+/* DESCRIPTION
+/*     warn_stat(), warn_fstat() and warn_lstat() wrap the stat(),
+/*     fstat() and lstat() system calls with code that logs a
+/*     diagnosis for common error cases.
+/* LICENSE
+/* .ad
+/* .fi
+/*     The Secure Mailer license must be distributed with this software.
+/* AUTHOR(S)
+/*     Wietse Venema
+/*     IBM T.J. Watson Research
+/*     P.O. Box 704
+/*     Yorktown Heights, NY 10598, USA
+/*--*/
+
+/* System library. */
+
+#include <sys_defs.h>
+#include <sys/stat.h>
+#include <errno.h>
+
+/* Utility library. */
+
+#include <msg.h>
+#define WARN_STAT_INTERNAL
+#include <warn_stat.h>
+
+/* diagnose_stat - log stat warning */
+
+static void diagnose_stat(void)
+{
+    struct stat st;
+
+    /*
+     * When *stat() fails with EOVERFLOW, and the interface uses 32-bit data
+     * types, suggest that the program be recompiled with larger data types.
+     */
+#ifdef EOVERFLOW
+    if (errno == EOVERFLOW && sizeof(st.st_size) == 4) {
+       msg_warn("this program was built for 32-bit file handles, "
+                "but some number does not fit in 32 bits");
+       msg_warn("possible solution: recompile in 64-bit mode, or "
+                "recompile in 32-bit mode with 'large file' support");
+    }
+#endif
+}
+
+/* warn_stat - stat with warning */
+
+int     warn_stat(const char *path, struct stat * st)
+{
+    int     ret;
+
+    ret = stat(path, st);
+    if (ret < 0)
+       diagnose_stat();
+    return (ret);
+}
+
+/* warn_lstat - lstat with warning */
+
+int     warn_lstat(const char *path, struct stat * st)
+{
+    int     ret;
+
+    ret = lstat(path, st);
+    if (ret < 0)
+       diagnose_stat();
+    return (ret);
+}
+
+/* warn_fstat - fstat with warning */
+
+int     warn_fstat(int fd, struct stat * st)
+{
+    int     ret;
+
+    ret = fstat(fd, st);
+    if (ret < 0)
+       diagnose_stat();
+    return (ret);
+}
diff --git a/postfix/src/util/warn_stat.h b/postfix/src/util/warn_stat.h
new file mode 100644 (file)
index 0000000..92ddce0
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _WARN_STAT_H_
+#define _WARN_STAT_H_
+
+/*++
+/* NAME
+/*     warn_stat 3h
+/* SUMMARY
+/*     baby-sit stat() error returns
+/* SYNOPSIS
+/*     #include <warn_stat.h>
+/* DESCRIPTION
+/* .nf
+
+ /*
+  * External interface.
+  */
+#ifndef WARN_STAT_INTERNAL
+#define stat(p, s) warn_stat((p), (s))
+#define lstat(p, s) warn_lstat((p), (s))
+#define fstat(f, s) warn_fstat((f), (s))
+#endif
+
+extern int warn_stat(const char *path, struct stat *);
+extern int warn_lstat(const char *path, struct stat *);
+extern int warn_fstat(int, struct stat *);
+
+/* LICENSE
+/* .ad
+/* .fi
+/*     The Secure Mailer license must be distributed with this software.
+/* AUTHOR(S)
+/*     Wietse Venema
+/*     IBM T.J. Watson Research
+/*     P.O. Box 704
+/*     Yorktown Heights, NY 10598, USA
+/*--*/
+
+#endif
index 9aed39f412a8061188c3edc1cc4b0cdea2dcdebd..954c544a4451d8139039d698a57e1c0fa1a014c2 100644 (file)
@@ -133,6 +133,7 @@ maildir.o: ../../include/sys_defs.h
 maildir.o: ../../include/vbuf.h
 maildir.o: ../../include/vstream.h
 maildir.o: ../../include/vstring.h
+maildir.o: ../../include/warn_stat.h
 maildir.o: maildir.c
 maildir.o: virtual.h
 recipient.o: ../../include/argv.h
index a44d09953826816f46272ca79a284eb35ebdcdc2..a6770610e59906ea349d7c56a2d7c1a03a665e75 100644 (file)
@@ -52,6 +52,7 @@
 #include <set_eugid.h>
 #include <get_hostname.h>
 #include <sane_fsops.h>
+#include <warn_stat.h>
 
 /* Global library. */