mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-22 09:57:34 +00:00
postfix-3.10-20240309
This commit is contained in:
parent
7c53eb5ae9
commit
65ea4abd73
@ -27973,3 +27973,8 @@ Apologies for any names omitted.
|
|||||||
Documentation: in the master.cf documentation, added text
|
Documentation: in the master.cf documentation, added text
|
||||||
for "quoting" a command-line argument that starts with "{".
|
for "quoting" a command-line argument that starts with "{".
|
||||||
File: proto/master.
|
File: proto/master.
|
||||||
|
|
||||||
|
20240309
|
||||||
|
|
||||||
|
Cleanup: removed unused Makefile targets (lint, shar,
|
||||||
|
printfck). Files Makefile.* src/*/Makefile.in.
|
||||||
|
@ -44,7 +44,7 @@ makefiles Makefiles conf/makedefs.out:
|
|||||||
*) cat Makefile.in;; \
|
*) cat Makefile.in;; \
|
||||||
esac) >Makefile
|
esac) >Makefile
|
||||||
|
|
||||||
update printfck tests root_tests:
|
update tests root_tests:
|
||||||
set -e; for i in $(DIRS); do \
|
set -e; for i in $(DIRS); do \
|
||||||
(set -e; echo "[$$i]"; cd $$i; $(MAKE) $(OPTS) $@ MAKELEVEL=) || exit 1; \
|
(set -e; echo "[$$i]"; cd $$i; $(MAKE) $(OPTS) $@ MAKELEVEL=) || exit 1; \
|
||||||
done
|
done
|
||||||
|
@ -12,7 +12,7 @@ SHELL = /bin/sh
|
|||||||
|
|
||||||
default: update
|
default: update
|
||||||
|
|
||||||
update depend printfck clean tidy depend_update: Makefiles
|
update depend clean tidy depend_update: Makefiles
|
||||||
$(MAKE) MAKELEVEL= $@
|
$(MAKE) MAKELEVEL= $@
|
||||||
|
|
||||||
install upgrade:
|
install upgrade:
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
This is the Postfix 3.9 experimental release.
|
This is the Postfix 3.10 experimental release.
|
||||||
|
|
||||||
The stable Postfix release is called postfix-3.8.x where 3=major
|
The stable Postfix release is called postfix-3.9.x where 3=major
|
||||||
release number, 8=minor release number, x=patchlevel. The stable
|
release number, 9=minor release number, x=patchlevel. The stable
|
||||||
release never changes except for patches that address bugs or
|
release never changes except for patches that address bugs or
|
||||||
emergencies. Patches change the patchlevel and the release date.
|
emergencies. Patches change the patchlevel and the release date.
|
||||||
|
|
||||||
New features are developed in snapshot releases. These are called
|
New features are developed in snapshot releases. These are called
|
||||||
postfix-3.9-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
postfix-3.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
||||||
mm=month, dd=day). Patches are never issued for snapshot releases;
|
mm=month, dd=day). Patches are never issued for snapshot releases;
|
||||||
instead, a new snapshot is released.
|
instead, a new snapshot is released.
|
||||||
|
|
||||||
The mail_release_date configuration parameter (format: yyyymmdd)
|
The mail_release_date configuration parameter (format: yyyymmdd)
|
||||||
specifies the release date of a stable release or snapshot release.
|
specifies the release date of a stable release or snapshot release.
|
||||||
|
|
||||||
If you upgrade from Postfix 3.7 or earlier, please read RELEASE_NOTES-3.8
|
If you upgrade from Postfix 3.8 or earlier, please read RELEASE_NOTES-3.9
|
||||||
before proceeding.
|
before proceeding.
|
||||||
|
|
||||||
Dual license
|
Dual license
|
||||||
@ -25,211 +25,3 @@ now also distributed with the more recent Eclipse Public License
|
|||||||
(EPL) 2.0. Recipients can choose to take the software under the
|
(EPL) 2.0. Recipients can choose to take the software under the
|
||||||
license of their choice. Those who are more comfortable with the
|
license of their choice. Those who are more comfortable with the
|
||||||
IPL can continue with that license.
|
IPL can continue with that license.
|
||||||
|
|
||||||
Incompatibility with snapshot 20240110
|
|
||||||
=======================================
|
|
||||||
|
|
||||||
- With "cleanup_replace_stray_cr_lf = yes" (the default), the cleanup
|
|
||||||
daemon replaces each stray <CR> or <LF> character in message
|
|
||||||
content with a space character. The replacement happens before
|
|
||||||
any other content management (header/body_checks, Milters, etc).
|
|
||||||
|
|
||||||
This prevents outbound SMTP smuggling, where an attacker uses
|
|
||||||
Postfix to send email containing a non-standard End-of-DATA
|
|
||||||
sequence, to exploit inbound SMTP smuggling at a vulnerable remote
|
|
||||||
SMTP server.
|
|
||||||
|
|
||||||
This also improves the remote evaluation of Postfix-added DKIM
|
|
||||||
and other signatures, as the evaluation result will not depend
|
|
||||||
on how a remote email server handles stray <CR> or <LF> characters.
|
|
||||||
|
|
||||||
This feature applies to all email that Postfix locally or remotely
|
|
||||||
sends out. It is not allowlisted based on client identity.
|
|
||||||
|
|
||||||
Major changes with snapshot 20240118
|
|
||||||
====================================
|
|
||||||
|
|
||||||
This updates Postfix fixes for inbound SMTP smuggling attacks. For
|
|
||||||
background, see https://www.postfix.org/smtp-smuggling.html
|
|
||||||
|
|
||||||
This will be back ported to Postfix 3.8.5, 3.7.10, 3.6.14, and 3.5.24.
|
|
||||||
|
|
||||||
- Better compatibility: the recommended setting "smtpd_forbid_bare_newline
|
|
||||||
= normalize" requires the standard End-of-DATA sequence
|
|
||||||
<CR><LF>.<CR><LF>, but allows bare newlines from SMTP clients,
|
|
||||||
maintaining more compatibility with existing infrastructure.
|
|
||||||
|
|
||||||
- Improved logging for rejected input (it now includes queue ID,
|
|
||||||
helo, mail, and rcpt, if available).
|
|
||||||
|
|
||||||
- The setting "smtpd_forbid_bare_newline = reject" requires
|
|
||||||
that input lines end in <CR><LF>, requires the standard End-of-DATA
|
|
||||||
sequence <CR><LF>.<CR><LF>, and rejects a command or message that
|
|
||||||
contains a bare newline. To disconnect the client, specify
|
|
||||||
"smtpd_forbid_bare_newline_reject_code = 521".
|
|
||||||
|
|
||||||
- The Postfix SMTP server no longer strips extra <CR> as in
|
|
||||||
<CR><LF>.<CR><CR><LF>, to silence false alarms from test tools
|
|
||||||
that send attack sequences that real mail servers cannot send.
|
|
||||||
Details at https://www.postfix.org/false-smuggling-claims.html
|
|
||||||
|
|
||||||
- The old setting "yes" has become an alias for "normalize".
|
|
||||||
|
|
||||||
- The old setting "no" has not changed, and allows SMTP smuggling.
|
|
||||||
|
|
||||||
The recommended settings are now:
|
|
||||||
|
|
||||||
# Require the standard End-of-DATA sequence <CR><LF>.<CR><LF>.
|
|
||||||
# Otherwise, allow bare <LF> and process it as if the client sent
|
|
||||||
# <CR><LF>.
|
|
||||||
#
|
|
||||||
# This maintains compatibility with many legitimate SMTP client
|
|
||||||
# applications that send a mix of standard and non-standard line
|
|
||||||
# endings, but will fail to receive email from client implementations
|
|
||||||
# that do not terminate DATA content with the standard End-of-DATA
|
|
||||||
# sequence <CR><LF>.<CR><LF>.
|
|
||||||
#
|
|
||||||
# Such clients can be allowlisted with smtpd_forbid_bare_newline_exclusions.
|
|
||||||
# The example below allowlists SMTP clients in trusted networks.
|
|
||||||
#
|
|
||||||
smtpd_forbid_bare_newline = normalize
|
|
||||||
smtpd_forbid_bare_newline_exclusions = $mynetworks
|
|
||||||
|
|
||||||
Alternative settings:
|
|
||||||
|
|
||||||
# Reject input lines that contain <LF> and log a "bare <LF> received"
|
|
||||||
# error. Require that input lines end in <CR><LF>, and require the
|
|
||||||
# standard End-of-DATA sequence <CR><LF>.<CR><LF>.
|
|
||||||
#
|
|
||||||
# This will reject email from SMTP clients that send any non-standard
|
|
||||||
# line endings such as web applications, netcat, or load balancer
|
|
||||||
# health checks.
|
|
||||||
#
|
|
||||||
# This will also reject email from services that use BDAT to send
|
|
||||||
# MIME text containing a bare newline (RFC 3030 Section 3 requires
|
|
||||||
# canonical MIME format for text message types, defined in RFC 2045
|
|
||||||
# Sections 2.7 and 2.8).
|
|
||||||
#
|
|
||||||
# Such clients can be allowlisted with smtpd_forbid_bare_newline_exclusions.
|
|
||||||
# The example below allowlists SMTP clients in trusted networks.
|
|
||||||
#
|
|
||||||
smtpd_forbid_bare_newline = reject
|
|
||||||
smtpd_forbid_bare_newline_exclusions = $mynetworks
|
|
||||||
#
|
|
||||||
# Alternatively, in the case of BDAT violations, BDAT can be selectively
|
|
||||||
# disabled with smtpd_discard_ehlo_keyword_address_maps, or globally
|
|
||||||
# disabled with smtpd_discard_ehlo_keywords.
|
|
||||||
#
|
|
||||||
# smtpd_discard_ehlo_keyword_address_maps = cidr:/path/to/file
|
|
||||||
# /path/to/file:
|
|
||||||
# 10.0.0.0/24 chunking, silent-discard
|
|
||||||
# smtpd_discard_ehlo_keywords = chunking, silent-discard
|
|
||||||
|
|
||||||
Incompatible changes with snapshot 20230903
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
The MySQL client no longer supports MySQL versions < 4.0. MySQL
|
|
||||||
version 4.0 was released in 2003.
|
|
||||||
|
|
||||||
Major changes with snapshot 20230901
|
|
||||||
====================================
|
|
||||||
|
|
||||||
New parameter force_mime_input_conversion (default: no) to convert
|
|
||||||
body content that claims to be 8-bit into quoted-printable, before
|
|
||||||
header_checks, body_checks, Milters, and before after-queue content
|
|
||||||
filters. This feature does not affect messages that are sent into
|
|
||||||
smtpd_proxy_filter.
|
|
||||||
|
|
||||||
The typical use case is an MTA that applies this conversion before
|
|
||||||
signing outbound messages, so that the signatures will remain valid
|
|
||||||
when a message is later handled by an MTA that does not announce
|
|
||||||
8BITMIME support, or when a message line exceeds the SMTP length
|
|
||||||
limit.
|
|
||||||
|
|
||||||
Major changes with snapshot 20230807
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Optional Postfix TLS support to request an RFC7250 raw public key
|
|
||||||
instead of an X.509 public-key certificate. The configuration
|
|
||||||
settings for raw key public support will be ignored when there is
|
|
||||||
no raw public key support in the local TLS implementation (i.e.
|
|
||||||
Postfix with OpenSSL versions before 3.2).
|
|
||||||
|
|
||||||
- With "smtpd_tls_enable_rpk = yes", the Postfix SMTP server will
|
|
||||||
request that a remote SMTP client sends an RFC7250 raw public key
|
|
||||||
instead of an X.509 certificate when asking for or requiring TLS
|
|
||||||
client authentication. The Postfix SMTP server will still accept
|
|
||||||
a client public-key certificate instead of a public key.
|
|
||||||
|
|
||||||
- With "smtp_tls_enable_rpk = yes" (or "enable_rpk = yes" in an
|
|
||||||
smtp policy table) at the security levels "may", "encrypt" or
|
|
||||||
"fingerprint", the Postfix SMTP client will request that a remote
|
|
||||||
SMTP server sends an RFC7250 raw public key instead of an X.509
|
|
||||||
certificate. The Postfix SMTP client will still accept a server
|
|
||||||
public key certificate instead of a public key.
|
|
||||||
|
|
||||||
- At the "secure" and "verify" security level, the Postfix SMTP
|
|
||||||
client will ignore smtp_tls_enable_rpk or enable_rpk settings,
|
|
||||||
because these levels require a server certificate.
|
|
||||||
|
|
||||||
- At the "dane" and "dane-only" security levels, the Postfix SMTP
|
|
||||||
client will ignore smtp_tls_enable_rpk or enable_rpk settings,
|
|
||||||
and will request that a remote SMTP server sends an RFC7250 raw
|
|
||||||
public key instead of an X.509 certificate when all valid TLSA
|
|
||||||
records specify only server public keys (no certificates). The
|
|
||||||
Postfix SMTP client will still accept a server public key
|
|
||||||
certificate.
|
|
||||||
|
|
||||||
- The Postfix SMTP client and server always send a raw public key
|
|
||||||
instead of a certificate, if solicited by the remote SMTP peer
|
|
||||||
and the local TLS implementation supports raw public keys.
|
|
||||||
|
|
||||||
- If a remote SMTP client sends a server name indication with an
|
|
||||||
SNI TLS extension, and tls_server_sni_maps is configured, the
|
|
||||||
Postfix SMTP server will extract a raw public key from the indicated
|
|
||||||
certificate.
|
|
||||||
|
|
||||||
Caution: enabling Postfix raw key support will break authentication
|
|
||||||
based on certificate fingerprints in check_ccert_access or
|
|
||||||
smtp_tls_policy_maps, when a remote peer's TLS implementation starts
|
|
||||||
to send a raw public key instead of a certificate. The solution is
|
|
||||||
to always use public key fingerprint patterns; these will match not
|
|
||||||
only a "raw" public key, but also the public key in a certificate.
|
|
||||||
|
|
||||||
To detect such problems before they happen, the Postfix SMTP server
|
|
||||||
will log a warning when it requests an RFC7250 raw public key instead
|
|
||||||
of an X.509 certificate, the remote peer sends a certificate instead
|
|
||||||
of a public key, and check_ccert_access has a matching fingerprint
|
|
||||||
for the certificate but not for the public key in that certificate.
|
|
||||||
There is no corresponding warning from the Postfix SMTP client.
|
|
||||||
|
|
||||||
For instructions to generate public-key fingerprints, see the
|
|
||||||
postconf(5) man pages for smtp_tls_enable_rpk and smtpd_tls_enable_rpk.
|
|
||||||
|
|
||||||
Incompatible changes with snapshot 20230603
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
Security: the Postfix SMTP server by default disconnects remote
|
|
||||||
SMTP clients that violate RFC 2920 (or 5321) command pipelining
|
|
||||||
constraints. The server replies with "554 5.5.0 Error: SMTP protocol
|
|
||||||
synchronization" and logs the unexpected remote SMTP client input.
|
|
||||||
Specify "smtpd_reject_unauth_pipelining = no" to disable.
|
|
||||||
|
|
||||||
Major changes with snapshot 20230522
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Preliminary support for OpenSSL configuration files, primarily
|
|
||||||
OpenSSL 1.1.1b and later. This introduces two new parameters
|
|
||||||
"tls_config_file" and "tls_config_name", which can be used to limit
|
|
||||||
collateral damage from OS distributions that crank up security to
|
|
||||||
11, increasing the number of plaintext email deliveries. Details
|
|
||||||
are in the postconf(5) manpage under "tls_config_file" and
|
|
||||||
"tls_config_name".
|
|
||||||
|
|
||||||
Incompatible changes with snapshot 20230419
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
The MySQL client default characterset is now configurable with the
|
|
||||||
"charset" configuration file attribute. The default is "utf8mb4",
|
|
||||||
consistent with the MySQL 8.0 built-in default, but different from
|
|
||||||
earlier MySQL versions where the built-in default was "latin1".
|
|
||||||
|
309
postfix/RELEASE_NOTES-3.9
Normal file
309
postfix/RELEASE_NOTES-3.9
Normal file
@ -0,0 +1,309 @@
|
|||||||
|
This is the Postfix 3.9 stable release.
|
||||||
|
|
||||||
|
The stable Postfix release is called postfix-3.9.x where 3=major
|
||||||
|
release number, 9=minor release number, x=patchlevel. The stable
|
||||||
|
release never changes except for patches that address bugs or
|
||||||
|
emergencies. Patches change the patchlevel and the release date.
|
||||||
|
|
||||||
|
New features are developed in snapshot releases. These are called
|
||||||
|
postfix-3.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
||||||
|
mm=month, dd=day). Patches are never issued for snapshot releases;
|
||||||
|
instead, a new snapshot is released.
|
||||||
|
|
||||||
|
The mail_release_date configuration parameter (format: yyyymmdd)
|
||||||
|
specifies the release date of a stable release or snapshot release.
|
||||||
|
|
||||||
|
If you upgrade from Postfix 3.7 or earlier, please read RELEASE_NOTES-3.8
|
||||||
|
before proceeding.
|
||||||
|
|
||||||
|
Dual license
|
||||||
|
------------
|
||||||
|
|
||||||
|
As of Postfix 3.2.5 this software is distributed with a dual license:
|
||||||
|
in addition to the historical IBM Public License (IPL) 1.0, it is
|
||||||
|
now also distributed with the more recent Eclipse Public License
|
||||||
|
(EPL) 2.0. Recipients can choose to take the software under the
|
||||||
|
license of their choice. Those who are more comfortable with the
|
||||||
|
IPL can continue with that license.
|
||||||
|
|
||||||
|
Topics in this document
|
||||||
|
-----------------------
|
||||||
|
- changes that are less visible
|
||||||
|
- database support
|
||||||
|
- envid support
|
||||||
|
- feature deprecation
|
||||||
|
- mime conversion
|
||||||
|
- protocol compliance
|
||||||
|
- security
|
||||||
|
- tls support
|
||||||
|
|
||||||
|
Changes that are less visible
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The documentation has been updated to address many questions
|
||||||
|
that were asked on the postfix-users mailing list.
|
||||||
|
|
||||||
|
More unit tests to make Postfix future-proof. Wietse is now looking
|
||||||
|
into migrating unit tests to Google test, because other people are
|
||||||
|
familiar with that framework, than with a Postfix-specific one.
|
||||||
|
|
||||||
|
Major changes - database support
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
[Feature 20240208] MongoDB client support, contributed by Hamid
|
||||||
|
Maadani, based on earlier code by Stephan Ferraro. For build and
|
||||||
|
usage instructions see MONGODB_README and mongodb_table(5).
|
||||||
|
|
||||||
|
[Feature 20240129] In the mysql: and pgsql: clients, the hard-coded
|
||||||
|
idle and retry timer settings are now configurable. Details are in
|
||||||
|
the updated mysql_table(5) and pgsql_table(5) manpages.
|
||||||
|
|
||||||
|
[Incompat 20230903] The MySQL client no longer supports MySQL
|
||||||
|
versions < 4.0. MySQL version 4.0 was released in 2003.
|
||||||
|
|
||||||
|
[Incompat 20230419] The MySQL client default characterset is now
|
||||||
|
configurable with the "charset" configuration file attribute. The
|
||||||
|
default is "utf8mb4", consistent with the MySQL 8.0 built-in default,
|
||||||
|
but different from earlier MySQL versions where the built-in default
|
||||||
|
was "latin1".
|
||||||
|
|
||||||
|
Major changes - envid support
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
[Feature 20230901] The local(8) delivery agent exports an ENVID
|
||||||
|
environment variable with the RFC 3461 envelope ID if available.
|
||||||
|
|
||||||
|
The pipe(8) delivery agent supports an ${envid} command-line attribute
|
||||||
|
that expands to the RFC 3461 envelope ID if available.
|
||||||
|
|
||||||
|
Major changes - feature deprecation
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
[Incompat 20240218] The new document DEPRECATION_README covers
|
||||||
|
features that have been removed and that will be removed in the
|
||||||
|
future, with suggestions how to migrate.
|
||||||
|
|
||||||
|
The Postfix SMTP server logs a warning when "permit_mx_backup" is
|
||||||
|
used (support for restriction "permit_mx_backup" will be removed
|
||||||
|
from Postfix; instead, use "relay_domains"). File: smtpd/smtpd_check.c.
|
||||||
|
|
||||||
|
The postconf command logs a warning when the following parameters
|
||||||
|
are specified in main.cf or master.cf: xxx_use_tls, xxx_enforce_tls
|
||||||
|
(use the corresponding xxx_security_level setting instead);
|
||||||
|
xxx_per_site (use the corresponding xxx_policy_maps setting instead);
|
||||||
|
disable_dns_lookups (use smtp_dns_support_level instead);
|
||||||
|
smtpd_tls_dh1024_param_file, smtpd_tls_eecdh_grade (do not specify,
|
||||||
|
leave at default). These warning are silenced with the "postconf
|
||||||
|
-q".
|
||||||
|
|
||||||
|
[Incompat 20240218] The Postfix SMTP server now logs that
|
||||||
|
permit_naked_ip_address, reject_maps_rbl, and check_relay_domains
|
||||||
|
have been removed and suggests a replacement. These features have
|
||||||
|
been logging deprecation warnings since 2005 or earlier, and were
|
||||||
|
removed from Postfix documentation in 2004.
|
||||||
|
|
||||||
|
Major changes - mime conversion
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
[Feature 20230901] New parameter force_mime_input_conversion (default:
|
||||||
|
no) to convert body content that claims to be 8-bit into quoted-printable,
|
||||||
|
before header_checks, body_checks, Milters, and before after-queue
|
||||||
|
content filters. This feature does not affect messages that are
|
||||||
|
sent into smtpd_proxy_filter.
|
||||||
|
|
||||||
|
The typical use case is an MTA that applies this conversion before
|
||||||
|
signing outbound messages, so that the signatures will remain valid
|
||||||
|
when a message is later handled by an MTA that does not announce
|
||||||
|
8BITMIME support, or when a message line exceeds the SMTP length
|
||||||
|
limit.
|
||||||
|
|
||||||
|
Major changes - protocol compliance
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
[Incompat 20240206] In message headers, Postfix now formats numerical
|
||||||
|
days as two-digit days, i.e. days 1-9 have a leading zero instead
|
||||||
|
of a leading space. This change was made because the RFC 5322 date
|
||||||
|
and time specification recommends (i.e. SHOULD) that a single space
|
||||||
|
be used in each place that FWS appears. This change avoids a breaking
|
||||||
|
change in the date string length.
|
||||||
|
|
||||||
|
Major changes - security
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
[Incompat 20240226] The Postfix DNS client now limits the total
|
||||||
|
size of DNS lookup results to 100 records; it drops the excess
|
||||||
|
records, and logs a warning. This limit is 20x larger than the
|
||||||
|
number of server addresses that the Postfix SMTP client is willing
|
||||||
|
to consider when delivering mail, and is far below the number of
|
||||||
|
records that could cause a tail recursion crash in dns_rr_append()
|
||||||
|
as reported by Toshifumi Sakaguchi.
|
||||||
|
|
||||||
|
This change introduces a similar limit on the number of DNS requests
|
||||||
|
that a check_*_*_access restriction can make.
|
||||||
|
|
||||||
|
[Incompat 20240110] With "cleanup_replace_stray_cr_lf = yes" (the
|
||||||
|
default), the cleanup daemon replaces each stray <CR> or <LF>
|
||||||
|
character in message content with a space character. The replacement
|
||||||
|
happens before any other content management (header/body_checks,
|
||||||
|
Milters, etc).
|
||||||
|
|
||||||
|
This prevents outbound SMTP smuggling, where an attacker uses Postfix
|
||||||
|
to send email containing a non-standard End-of-DATA sequence, to
|
||||||
|
exploit inbound SMTP smuggling at a vulnerable remote SMTP server.
|
||||||
|
|
||||||
|
This also improves the remote evaluation of Postfix-added DKIM and
|
||||||
|
other signatures, as the evaluation result will not depend on how
|
||||||
|
a remote email server handles stray <CR> or <LF> characters.
|
||||||
|
|
||||||
|
This feature applies to all email that Postfix locally or remotely
|
||||||
|
sends out. It is not allowlisted based on client identity.
|
||||||
|
|
||||||
|
[Feature 20240118] This updates Postfix fixes for inbound SMTP smuggling
|
||||||
|
attacks. For background, see https://www.postfix.org/smtp-smuggling.html
|
||||||
|
|
||||||
|
This will be back ported to Postfix 3.8.5, 3.7.10, 3.6.14, and 3.5.24.
|
||||||
|
|
||||||
|
- Better compatibility: the recommended setting "smtpd_forbid_bare_newline
|
||||||
|
= normalize" requires the standard End-of-DATA sequence
|
||||||
|
<CR><LF>.<CR><LF>, but allows bare newlines from SMTP clients,
|
||||||
|
maintaining more compatibility with existing infrastructure.
|
||||||
|
|
||||||
|
- Improved logging for rejected input (it now includes queue ID,
|
||||||
|
helo, mail, and rcpt, if available).
|
||||||
|
|
||||||
|
- The setting "smtpd_forbid_bare_newline = reject" requires
|
||||||
|
that input lines end in <CR><LF>, requires the standard End-of-DATA
|
||||||
|
sequence <CR><LF>.<CR><LF>, and rejects a command or message that
|
||||||
|
contains a bare newline. To disconnect the client, specify
|
||||||
|
"smtpd_forbid_bare_newline_reject_code = 521".
|
||||||
|
|
||||||
|
- The Postfix SMTP server no longer strips extra <CR> as in
|
||||||
|
<CR><LF>.<CR><CR><LF>, to silence false alarms from test tools
|
||||||
|
that send attack sequences that real mail servers cannot send.
|
||||||
|
Details at https://www.postfix.org/false-smuggling-claims.html
|
||||||
|
|
||||||
|
- The old setting "yes" has become an alias for "normalize".
|
||||||
|
|
||||||
|
- The old setting "no" has not changed, and allows SMTP smuggling.
|
||||||
|
|
||||||
|
The recommended settings are now:
|
||||||
|
|
||||||
|
# Require the standard End-of-DATA sequence <CR><LF>.<CR><LF>.
|
||||||
|
# Otherwise, allow bare <LF> and process it as if the client sent
|
||||||
|
# <CR><LF>.
|
||||||
|
#
|
||||||
|
# This maintains compatibility with many legitimate SMTP client
|
||||||
|
# applications that send a mix of standard and non-standard line
|
||||||
|
# endings, but will fail to receive email from client implementations
|
||||||
|
# that do not terminate DATA content with the standard End-of-DATA
|
||||||
|
# sequence <CR><LF>.<CR><LF>.
|
||||||
|
#
|
||||||
|
# Such clients can be allowlisted with smtpd_forbid_bare_newline_exclusions.
|
||||||
|
# The example below allowlists SMTP clients in trusted networks.
|
||||||
|
#
|
||||||
|
smtpd_forbid_bare_newline = normalize
|
||||||
|
smtpd_forbid_bare_newline_exclusions = $mynetworks
|
||||||
|
|
||||||
|
Alternative settings:
|
||||||
|
|
||||||
|
# Reject input lines that contain <LF> and log a "bare <LF> received"
|
||||||
|
# error. Require that input lines end in <CR><LF>, and require the
|
||||||
|
# standard End-of-DATA sequence <CR><LF>.<CR><LF>.
|
||||||
|
#
|
||||||
|
# This will reject email from SMTP clients that send any non-standard
|
||||||
|
# line endings such as web applications, netcat, or load balancer
|
||||||
|
# health checks.
|
||||||
|
#
|
||||||
|
# This will also reject email from services that use BDAT to send
|
||||||
|
# MIME text containing a bare newline (RFC 3030 Section 3 requires
|
||||||
|
# canonical MIME format for text message types, defined in RFC 2045
|
||||||
|
# Sections 2.7 and 2.8).
|
||||||
|
#
|
||||||
|
# Such clients can be allowlisted with smtpd_forbid_bare_newline_exclusions.
|
||||||
|
# The example below allowlists SMTP clients in trusted networks.
|
||||||
|
#
|
||||||
|
smtpd_forbid_bare_newline = reject
|
||||||
|
smtpd_forbid_bare_newline_exclusions = $mynetworks
|
||||||
|
#
|
||||||
|
# Alternatively, in the case of BDAT violations, BDAT can be selectively
|
||||||
|
# disabled with smtpd_discard_ehlo_keyword_address_maps, or globally
|
||||||
|
# disabled with smtpd_discard_ehlo_keywords.
|
||||||
|
#
|
||||||
|
# smtpd_discard_ehlo_keyword_address_maps = cidr:/path/to/file
|
||||||
|
# /path/to/file:
|
||||||
|
# 10.0.0.0/24 chunking, silent-discard
|
||||||
|
# smtpd_discard_ehlo_keywords = chunking, silent-discard
|
||||||
|
|
||||||
|
[Incompat 20230603] the Postfix SMTP server by default disconnects
|
||||||
|
remote SMTP clients that violate RFC 2920 (or 5321) command pipelining
|
||||||
|
constraints. The server replies with "554 5.5.0 Error: SMTP protocol
|
||||||
|
synchronization" and logs the unexpected remote SMTP client input.
|
||||||
|
Specify "smtpd_reject_unauth_pipelining = no" to disable.
|
||||||
|
|
||||||
|
Major changes - tls support
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
[Feature 20230807] Optional Postfix TLS support to request an RFC7250
|
||||||
|
raw public key instead of an X.509 public-key certificate. The
|
||||||
|
configuration settings for raw key public support will be ignored
|
||||||
|
when there is no raw public key support in the local TLS implementation
|
||||||
|
(i.e. Postfix with OpenSSL versions before 3.2).
|
||||||
|
|
||||||
|
- With "smtpd_tls_enable_rpk = yes", the Postfix SMTP server will
|
||||||
|
request that a remote SMTP client sends an RFC7250 raw public key
|
||||||
|
instead of an X.509 certificate when asking for or requiring TLS
|
||||||
|
client authentication. The Postfix SMTP server will still accept
|
||||||
|
a client public-key certificate instead of a public key.
|
||||||
|
|
||||||
|
- With "smtp_tls_enable_rpk = yes" (or "enable_rpk = yes" in an
|
||||||
|
smtp policy table) at the security levels "may", "encrypt" or
|
||||||
|
"fingerprint", the Postfix SMTP client will request that a remote
|
||||||
|
SMTP server sends an RFC7250 raw public key instead of an X.509
|
||||||
|
certificate. The Postfix SMTP client will still accept a server
|
||||||
|
public key certificate instead of a public key.
|
||||||
|
|
||||||
|
- At the "secure" and "verify" security level, the Postfix SMTP
|
||||||
|
client will ignore smtp_tls_enable_rpk or enable_rpk settings,
|
||||||
|
because these levels require a server certificate.
|
||||||
|
|
||||||
|
- At the "dane" and "dane-only" security levels, the Postfix SMTP
|
||||||
|
client will ignore smtp_tls_enable_rpk or enable_rpk settings,
|
||||||
|
and will request that a remote SMTP server sends an RFC7250 raw
|
||||||
|
public key instead of an X.509 certificate when all valid TLSA
|
||||||
|
records specify only server public keys (no certificates). The
|
||||||
|
Postfix SMTP client will still accept a server public key
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
- The Postfix SMTP client and server always send a raw public key
|
||||||
|
instead of a certificate, if solicited by the remote SMTP peer
|
||||||
|
and the local TLS implementation supports raw public keys.
|
||||||
|
|
||||||
|
- If a remote SMTP client sends a server name indication with an
|
||||||
|
SNI TLS extension, and tls_server_sni_maps is configured, the
|
||||||
|
Postfix SMTP server will extract a raw public key from the indicated
|
||||||
|
certificate.
|
||||||
|
|
||||||
|
Caution: enabling Postfix raw key support will break authentication
|
||||||
|
based on certificate fingerprints in check_ccert_access or
|
||||||
|
smtp_tls_policy_maps, when a remote peer's TLS implementation starts
|
||||||
|
to send a raw public key instead of a certificate. The solution is
|
||||||
|
to always use public key fingerprint patterns; these will match not
|
||||||
|
only a "raw" public key, but also the public key in a certificate.
|
||||||
|
|
||||||
|
To detect such problems before they happen, the Postfix SMTP server
|
||||||
|
will log a warning when it requests an RFC7250 raw public key instead
|
||||||
|
of an X.509 certificate, the remote peer sends a certificate instead
|
||||||
|
of a public key, and check_ccert_access has a matching fingerprint
|
||||||
|
for the certificate but not for the public key in that certificate.
|
||||||
|
There is no corresponding warning from the Postfix SMTP client.
|
||||||
|
|
||||||
|
For instructions to generate public-key fingerprints, see the
|
||||||
|
postconf(5) man pages for smtp_tls_enable_rpk and smtpd_tls_enable_rpk.
|
||||||
|
|
||||||
|
[Feature 20230522] Preliminary support for OpenSSL configuration
|
||||||
|
files, primarily OpenSSL 1.1.1b and later. This introduces two new
|
||||||
|
parameters "tls_config_file" and "tls_config_name", which can be
|
||||||
|
used to limit collateral damage from OS distributions that crank
|
||||||
|
up security to 11, increasing the number of plaintext email deliveries.
|
||||||
|
Details are in the postconf(5) manpage under "tls_config_file" and
|
||||||
|
"tls_config_name".
|
@ -31,7 +31,7 @@
|
|||||||
#
|
#
|
||||||
# The level below is what should be used with new (not upgrade) installs.
|
# The level below is what should be used with new (not upgrade) installs.
|
||||||
#
|
#
|
||||||
compatibility_level = 3.9
|
compatibility_level = 3.10
|
||||||
|
|
||||||
# SOFT BOUNCE
|
# SOFT BOUNCE
|
||||||
#
|
#
|
||||||
|
@ -226,12 +226,17 @@ MASTER(5) MASTER(5)
|
|||||||
options to make a Postfix daemon process increasingly
|
options to make a Postfix daemon process increasingly
|
||||||
verbose.
|
verbose.
|
||||||
|
|
||||||
Other command-line arguments
|
<b>Command-line arguments that start with {</b>
|
||||||
Specify "{" and "}" around command arguments that must
|
With Postfix 3.0 and later specify "{" and "}" around
|
||||||
start with "{" or that must contain whitespace (Postfix
|
command arguments that start with "{". The outer "{" and
|
||||||
3.0 and later). The outer "{" and "}" are removed from
|
"}" are removed from the input, together with any leading
|
||||||
the input, together with any leading or trailing white-
|
or trailing whitespace.
|
||||||
space.
|
|
||||||
|
<b>Other command-line arguments</b>
|
||||||
|
Specify "{" and "}" around command arguments that contain
|
||||||
|
whitespace (Postfix 3.0 and later). The outer "{" and "}"
|
||||||
|
are removed from the input, together with any leading or
|
||||||
|
trailing whitespace.
|
||||||
|
|
||||||
<b>SEE ALSO</b>
|
<b>SEE ALSO</b>
|
||||||
<a href="master.8.html">master(8)</a>, process manager
|
<a href="master.8.html">master(8)</a>, process manager
|
||||||
|
@ -225,11 +225,16 @@ personalities via master.cf.
|
|||||||
.IP \fB\-v\fR
|
.IP \fB\-v\fR
|
||||||
Increase the verbose logging level. Specify multiple \fB\-v\fR
|
Increase the verbose logging level. Specify multiple \fB\-v\fR
|
||||||
options to make a Postfix daemon process increasingly verbose.
|
options to make a Postfix daemon process increasingly verbose.
|
||||||
.IP "Other command\-line arguments"
|
.IP "\fBCommand\-line arguments that start with {\fR"
|
||||||
Specify "{" and "}" around command arguments that must start
|
With Postfix 3.0 and later specify "{" and "}" around command
|
||||||
with "{" or that must contain whitespace (Postfix 3.0 and
|
arguments that start with "{". The outer "{" and "}" are
|
||||||
later). The outer "{" and "}" are removed from the input,
|
removed from the input, together with any leading or trailing
|
||||||
together with any leading or trailing whitespace.
|
whitespace.
|
||||||
|
.IP "\fBOther command\-line arguments\fR"
|
||||||
|
Specify "{" and "}" around command arguments that contain
|
||||||
|
whitespace (Postfix 3.0 and later). The outer "{" and "}"
|
||||||
|
are removed from the input, together with any leading or
|
||||||
|
trailing whitespace.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
|
@ -219,11 +219,16 @@
|
|||||||
# .IP \fB-v\fR
|
# .IP \fB-v\fR
|
||||||
# Increase the verbose logging level. Specify multiple \fB-v\fR
|
# Increase the verbose logging level. Specify multiple \fB-v\fR
|
||||||
# options to make a Postfix daemon process increasingly verbose.
|
# options to make a Postfix daemon process increasingly verbose.
|
||||||
# .IP "Other command-line arguments"
|
# .IP "\fBCommand-line arguments that start with {\fR"
|
||||||
# Specify "{" and "}" around command arguments that must start
|
# With Postfix 3.0 and later specify "{" and "}" around command
|
||||||
# with "{" or that must contain whitespace (Postfix 3.0 and
|
# arguments that start with "{". The outer "{" and "}" are
|
||||||
# later). The outer "{" and "}" are removed from the input,
|
# removed from the input, together with any leading or trailing
|
||||||
# together with any leading or trailing whitespace.
|
# whitespace.
|
||||||
|
# .IP "\fBOther command-line arguments\fR"
|
||||||
|
# Specify "{" and "}" around command arguments that contain
|
||||||
|
# whitespace (Postfix 3.0 and later). The outer "{" and "}"
|
||||||
|
# are removed from the input, together with any leading or
|
||||||
|
# trailing whitespace.
|
||||||
# SEE ALSO
|
# SEE ALSO
|
||||||
# master(8), process manager
|
# master(8), process manager
|
||||||
# postconf(5), configuration parameters
|
# postconf(5), configuration parameters
|
||||||
|
@ -76,3 +76,4 @@ Vijay
|
|||||||
Sakaguchi
|
Sakaguchi
|
||||||
Toshifumi
|
Toshifumi
|
||||||
mxonly
|
mxonly
|
||||||
|
shar
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -53,20 +53,8 @@ update: ../../libexec/$(PROG) $(SAMPLES)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile > printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk main.cf
|
rm -f *.o *core $(PROG) $(TESTPROG) junk main.cf
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -40,20 +40,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile > printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -247,20 +247,8 @@ dns_rr_tests: dns_rr_test
|
|||||||
dns_rr_test: dns_rr_test.o $(LIB) $(LIBS)
|
dns_rr_test: dns_rr_test.o $(LIB) $(LIBS)
|
||||||
$(CC) $(CFLAGS) -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
$(CC) $(CFLAGS) -o $@ $@.c $(LIB) $(LIBS) $(SYSLIBS)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(LIB) *core $(TESTPROG) junk
|
rm -f *.o $(LIB) *core $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -34,19 +34,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -34,18 +34,8 @@ update: ../../libexec/fsstone
|
|||||||
../../libexec/fsstone: fsstone
|
../../libexec/fsstone: fsstone
|
||||||
cp $? $@
|
cp $? $@
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -776,20 +776,8 @@ hfrom_format_test: update hfrom_format \
|
|||||||
diff hfrom_format.ref hfrom_format.tmp
|
diff hfrom_format.ref hfrom_format.tmp
|
||||||
rm -f hfrom_format.tmp
|
rm -f hfrom_format.tmp
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(LIB) *core $(TESTPROG) junk $(MAPS)
|
rm -f *.o $(LIB) *core $(TESTPROG) junk $(MAPS)
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20240305"
|
#define MAIL_RELEASE_DATE "20240309"
|
||||||
#define MAIL_VERSION_NUMBER "3.9"
|
#define MAIL_VERSION_NUMBER "3.10"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
#define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
#define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
||||||
|
@ -39,20 +39,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -60,20 +60,8 @@ update: $(LIB_DIR)/$(LIB) $(BIN_DIR)/$(PROG) $(HDRS)
|
|||||||
done
|
done
|
||||||
cd $(INC_DIR); chmod 644 $(HDRS)
|
cd $(INC_DIR); chmod 644 $(HDRS)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) junk $(LIB)
|
rm -f *.o *core $(PROG) junk $(LIB)
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -45,20 +45,8 @@ update: $(LIB_DIR)/$(LIB) $(HDRS)
|
|||||||
done
|
done
|
||||||
cd $(INC_DIR); chmod 644 $(HDRS)
|
cd $(INC_DIR); chmod 644 $(HDRS)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(LIB) *core $(TESTPROG) junk
|
rm -f *.o $(LIB) *core $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -39,20 +39,8 @@ update: ../../libexec/o$(PROG)
|
|||||||
../../libexec/o$(PROG): $(PROG)
|
../../libexec/o$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec/o$(PROG)
|
cp $(PROG) ../../libexec/o$(PROG)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -63,19 +63,8 @@ fail_test: $(PROG) aliases fail_test.in fail_test.ref
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -1065,21 +1065,9 @@ test76: $(PROG) test76.ref
|
|||||||
diff /dev/null test76.tmp
|
diff /dev/null test76.tmp
|
||||||
rm -f main.cf master.cf test76.tmp
|
rm -f main.cf master.cf test76.tmp
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk $(MAKES) $(AUTOS) $(DUMMIES) \
|
rm -f *.o *core $(PROG) $(TESTPROG) junk $(MAKES) $(AUTOS) $(DUMMIES) \
|
||||||
$(TEST_TMP) $(DB_MAKES)
|
$(TEST_TMP) $(DB_MAKES)
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,22 +33,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
shar:
|
|
||||||
@shar $(FILES)
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(SRCS)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,22 +33,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
shar:
|
|
||||||
@shar $(FILES)
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(SRCS)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -103,19 +103,8 @@ lmdb_incr_test: $(PROG)
|
|||||||
cmp lmdb_retry lmdb_retry.tmp
|
cmp lmdb_retry lmdb_retry.tmp
|
||||||
rm -f lmdb_retry lmdb_retry.tmp lmdb_retry.lmdb main.cf
|
rm -f lmdb_retry lmdb_retry.tmp lmdb_retry.lmdb main.cf
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) *.tmp junk *.db
|
rm -f *.o *core $(PROG) $(TESTPROG) *.tmp junk *.db
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,22 +33,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
shar:
|
|
||||||
@shar $(FILES)
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(SRCS)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -43,19 +43,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -36,19 +36,8 @@ update: ../../bin/posttls-finger
|
|||||||
../../bin/posttls-finger: posttls-finger
|
../../bin/posttls-finger: posttls-finger
|
||||||
cp $? $@
|
cp $? $@
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -41,20 +41,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec/$(PROG)
|
cp $(PROG) ../../libexec/$(PROG)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,20 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk *.db *.out *.tmp
|
rm -f *.o *core $(PROG) $(TESTPROG) junk *.db *.out *.tmp
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -32,19 +32,8 @@ update: ../../bin/$(PROG)
|
|||||||
../../bin/$(PROG): $(PROG)
|
../../bin/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../bin
|
cp $(PROG) ../../bin
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -48,20 +48,8 @@ lmtp_params.c: smtp_params.c
|
|||||||
grep -E -v -f smtp-only smtp_params.c | \
|
grep -E -v -f smtp-only smtp_params.c | \
|
||||||
sed 's/SMTP/LMTP/g; s/smtp_\([a-z]*_table\)/lmtp_\1/' >$@
|
sed 's/SMTP/LMTP/g; s/smtp_\([a-z]*_table\)/lmtp_\1/' >$@
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -53,20 +53,8 @@ smtpd_check: smtpd_check.o smtpd_check.c $(SMTPD_CHECK_OBJ) $(LIBS)
|
|||||||
$(LIBS) $(SYSLIBS)
|
$(LIBS) $(SYSLIBS)
|
||||||
mv junk $@.o
|
mv junk $@.o
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk *.db *.out *.tmp
|
rm -f *.o *core $(PROG) $(TESTPROG) junk *.db *.out *.tmp
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -53,19 +53,8 @@ update: ../../bin/smtp-source ../../bin/smtp-sink ../../bin/qmqp-source \
|
|||||||
../../bin/qmqp-sink: qmqp-sink
|
../../bin/qmqp-sink: qmqp-sink
|
||||||
cp $? $@
|
cp $? $@
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -94,20 +94,8 @@ update: $(LIB_DIR)/$(LIB) $(HDRS)
|
|||||||
done
|
done
|
||||||
cd $(INC_DIR); chmod 644 $(HDRS)
|
cd $(INC_DIR); chmod 644 $(HDRS)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(LIB) *core $(TESTPROG) junk *.pem.out
|
rm -f *.o $(LIB) *core $(TESTPROG) junk *.pem.out
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -31,20 +31,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk *.db *.out *.tmp
|
rm -f *.o *core $(PROG) $(TESTPROG) junk *.db *.out *.tmp
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -35,19 +35,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -48,20 +48,8 @@ transport_test: transport transport.in transport.ref
|
|||||||
diff transport.ref transport.tmp
|
diff transport.ref transport.tmp
|
||||||
rm -f transport.tmp
|
rm -f transport.tmp
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core trivial-rewrite $(TESTPROG) junk $(LIB)
|
rm -f *.o *core trivial-rewrite $(TESTPROG) junk $(LIB)
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -216,23 +216,8 @@ plugin_map_obj_update: $(LIB_MAP_OBJ)
|
|||||||
cmp -s $$i $(LIB_DIR)/$$i 2>/dev/null || cp $$i $(LIB_DIR); \
|
cmp -s $$i $(LIB_DIR)/$$i 2>/dev/null || cp $$i $(LIB_DIR); \
|
||||||
done
|
done
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
shar:
|
|
||||||
@shar $(FILES)
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(LIB) *core $(TESTPROG) junk $(MAKES) *.tmp
|
rm -f *.o $(LIB) *core $(TESTPROG) junk $(MAKES) *.tmp
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,19 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -33,20 +33,8 @@ update: ../../libexec/$(PROG)
|
|||||||
../../libexec/$(PROG): $(PROG)
|
../../libexec/$(PROG): $(PROG)
|
||||||
cp $(PROG) ../../libexec
|
cp $(PROG) ../../libexec
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
rm -f *.o *core $(PROG) $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
@ -49,20 +49,8 @@ update: $(LIB_DIR)/$(LIB) $(HDRS)
|
|||||||
done
|
done
|
||||||
cd $(INC_DIR); chmod 644 $(HDRS)
|
cd $(INC_DIR); chmod 644 $(HDRS)
|
||||||
|
|
||||||
printfck: $(OBJS) $(PROG)
|
|
||||||
rm -rf printfck
|
|
||||||
mkdir printfck
|
|
||||||
cp *.h printfck
|
|
||||||
sed '1,/^# do not edit/!d' Makefile >printfck/Makefile
|
|
||||||
set -e; for i in *.c; do printfck -f .printfck $$i >printfck/$$i; done
|
|
||||||
cd printfck; make "INC_DIR=../../../include" `cd ..; ls *.o`
|
|
||||||
|
|
||||||
lint:
|
|
||||||
lint $(DEFS) $(SRCS) $(LINTFIX)
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o $(LIB) *core $(TESTPROG) junk
|
rm -f *.o $(LIB) *core $(TESTPROG) junk
|
||||||
rm -rf printfck
|
|
||||||
|
|
||||||
tidy: clean
|
tidy: clean
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user