home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Previous Section Next Section

NEED...

Something amiss with your OS? port with confENVDEF

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

Compile-time macro

Emulates

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.

    Previous Section Next Section