1# Copyright (c) 2000-2002 Proofpoint, Inc. and its suppliers. 2# All rights reserved. 3# 4# By using this file, you agree to the terms and conditions set 5# forth in the LICENSE file which can be found at the top level of 6# the sendmail distribution. 7# 8# $Id: README,v 1.25 2013-11-22 20:51:42 ca Exp $ 9# 10 11Libsm is a library of generally useful C abstractions. 12For documentation, see index.html. 13 14Libsm stands alone; it depends on no other sendmail libraries, 15and the only sendmail header files it depends on are its own, 16which reside in ../include/sm. 17 18The t-*.c files are regression tests. 19These tests are incomplete: we do not yet test all of the APIs, 20and we have not yet converted all tests to use the test harness. 21If a test fails read the explanation it generates. Sometimes it 22is sufficient to change a compile time flag, which are also listed 23below. If that does not help, check the sendmail/README files for 24problems on your OS. 25 26The b-*.c files are benchmarks that compare system routines with 27those provided by libsm. By default sendmail uses the routines 28provided by the OS. In several cases, the routines provided by 29libsm are faster than those of the OS. If your OS provides the 30routines, you can compare the performance of them with the libsm 31versions by running the programs with the option -d (by default 32the programs just issue an explanation when/how to use them). 33The programs are: 34 35b-strcmp.c tests strcasecmp(). 36 37 38+----------------------+ 39| CONFIGURATION MACROS | 40+----------------------+ 41 42Libsm uses a set of C preprocessor macros to specify platform specific 43features of the C compiler and standard C libraries. 44 45If you are porting sendmail to a new platform, you may need to tweak 46the values of some of these macros. 47 48The following macros are given default values in <sm/config.h>. 49If the default value is wrong for a given platform, then a platform 50specific value is specified in one of two ways: 51 52 - A -D option is added to the confENVDEF macro; this change can be made 53 to the platform M4 file in devtools/OS, or to the site.config.m4 54 file in devtools/Site. 55 56 - The confSM_OS_HEADER macro in the platform M4 file defines sm_os_foo, 57 which forces "sm/os/sm_os_foo.h" to be included by "sm/config.h" via a 58 link that is made from "sm_os.h" to "sm/os/sm_os_foo.h". Platform 59 specific configuration macro settings are added to <sm/os/sm_os_foo.h>. 60 61SM_CONF_STDBOOL_H 62 Set to 1 if the header file <stdbool.h> exists, 63 and defines true, false and bool. 64 65SM_CONF_SYS_CDEFS_H 66 Set to 1 if the header file <sys/cdefs.h> exists, 67 and defines __P. You may need to do this to eliminate 68 warnings about __P being multiply defined. 69 70SM_CONF_STDDEF_H 71 Set to 0 if the header file <stddef.h> does not exist. 72 73SM_CONF_SETITIMER 74 Set to 0 if the setitimer function is not available. 75 76SM_CONF_SYSEXITS_H 77 Set to 1 if <sysexits.h> exists, and sets the EX_* macros 78 to values different from the default BSD values in <sm/sysexits.h>. 79 80SM_CONF_UID_GID 81 Set to 0 if <sys/types.h> does not define uid_t and gid_t. 82 83SM_CONF_SSIZE_T 84 Set to 0 if <sys/types.h> does not define ssize_t. 85 86SM_CONF_BROKEN_SIZE_T 87 Set to 1 if size_t is not unsigned. 88 89SM_CONF_LONGLONG 90 Set to 1 if your C compiler supports the 'long long' type. 91 This will be set automatically if you use gcc or a C compiler 92 that conforms to the 1999 ISO C standard. 93 94SM_CONF_QUAD_T 95 Set to 1 if your C compiler does not support 'long long', 96 but <sys/types.h> defines quad_t as an integral type. 97 98SM_CONF_SHM 99 Set to 1 if System V shared memory APIs are available. 100 101SM_CONF_MSG 102 Set to 1 if System V message queues are available. 103 104SM_CONF_SEM 105 Set to 1 if semaphores are available. 106 107SM_CONF_BROKEN_STRTOD 108 Set to 1 if your strtod() does not work properly. 109 110SM_CONF_LDAP_INITIALIZE 111 Set to 1 if your LDAP client libraries include ldap_initialize(3). 112 113SM_CONF_LDAP_MEMFREE 114 Set to 1 if your LDAP client libraries include ldap_memfree(3). 115 116SM_IO_MAX_BUF_FILE 117 Set this to a useful buffer size for regular files if stat(2) 118 does not return a value for st_blksize that is the 119 "optimal blocksize for I/O". 120 121SM_IO_MAX_BUF 122 Set this to a useful maximum buffer size for other than 123 regular files if stat(2) does not return a value for 124 st_blksize that is the "optimal blocksize for I/O". 125 126SM_IO_MIN_BUF 127 Set this to a useful minimum buffer size for other than 128 regular files if stat(2) does not return a value for 129 st_blksize that is the "optimal blocksize for I/O". 130 131