The sendmail program
requires certain C-language library routines to exist. If any are
missing from your library, define the macro listed in Table 3-9 that seems to fill your needs, and
sendmail will try to emulate that need.
Each macro is defined with confENVDEF in your
Build m4 file by setting it
to a value of 1 (NEEDPUTENV is an exception in that 1 or 2 can be
used):
APPENDDEF(`confENVDEF', `-DNEEDFSYNC=1')
Note that these are correctly defined for all currently supported
systems. You should need to redefine them only if you are porting
sendmail to a completely new system.
Table 3-9. Define replacements for missing C library routines
NEEDFSYNC
|
Replaces a missing fsync(2). The
sendmail program will try to simulate it by
using fcntl(2), if available; otherwise,
sendmail will not
"sync" to disk. This latter
circumstance is undesirable and can result in unreliable mail
delivery, but it works.
|
NEEDGETOPT
|
The sendmail program calls
getopt(3) twice when parsing its command-line
arguments. Some versions of getopt(3) do odd
things when called twice. If yours is one of these, replace it. This
NEEDGETOPT macro has been replaced, as of V8.12, by the
SM_CONF_GETOPT macro (SM_...).
|
NEED_PERCENTQ
|
This should be set if your system C-language
library's printf(3) does not
support both "%lld" and
"%llu." If they
don't, define this, and the format strings for
printf(3) will instead use
"%qd" and
"%qu," respectively. This
NEED_PERCENTQ macro has been eliminated as of V8.12
sendmail.
|
NEEDPUTENV
|
Replace a missing putenv(3). If this is defined
as 1, sendmail emulates by using
setenv(3). If this is defined as 2,
sendmail emulates by directly modifying the
environmental section of memory.
|
NEEDSTRSTR
|
Replace a missing strstr(3) with a well-written
internal version.
|
NEEDSTRTOL
|
Replace a missing strtol(3) with a well-written
internal version.
|
NEEDVPRINTF
|
Replace a missing vprintf(3). The replacement is
not very elegant. It might not even work on some systems. See
sendmail/conf.h
(include/sm/conf.h beginning with V8.12) for a
glimpse of systems that require this.
|
If you are running a precompiled sendmail
binary, you can use the -d0.10 debugging
command-line switch (-d0.10) to determine if
NEEDFSYNC support is defined (if it appears in the list, it is
defined). New ports should be reported to
sendmail@sendmail.org so that they can be folded
into future releases.