/* Exim: OS-specific C header file for Darwin (Mac OS X) */
/* SPDX-License-Identifier: GPL-2.0-or-later */

/* #define CRYPT_H */  /* Apparently this isn't needed */

#define HAVE_MMAP
#define HAVE_SYS_MOUNT_H
#define PAM_H_IN_PAM
#define SIOCGIFCONF_GIVES_ADDR
#define EXIM_HAVE_OPENAT


#define F_FREESP     O_TRUNC
typedef struct flock flock_t;

#define BASE_62 36  /* HFS+ aliases lower and upper cases in filenames.
                               Consider reducing MAX_LOCALHOST_NUMBER */

#ifndef        _BSD_SOCKLEN_T_
# define _BSD_SOCKLEN_T_ int32_t                 /* socklen_t (duh) */
#endif

/* Settings for handling IP options. There's no netinet/ip_var.h. The IP
option handling is in the style of the later GLIBCs but the GLIBC macros
aren't set, so we invent a new one. */

#define NO_IP_VAR_H
#define DARWIN_IP_OPTIONS

/* Need this for the DNS lookup code. Remember to remove if we get round to
updating Exim to use the newer interface. */

#define BIND_8_COMPAT

/* It's not .so for dynamic libraries on Darwin. */
#define DYNLIB_FN_EXT "dylib"

/* We currently need some assistance getting OFF_T_FMT correct on MacOS */
#ifdef OFF_T_FMT
# undef OFF_T_FMT
#endif
#define OFF_T_FMT "%lld"
#define LONGLONG_T long int

/* default is non-const */
#define ICONV_ARG2_TYPE const char **

/* seems arpa/nameser.h does not define this */
#define NS_MAXMSG 65535

/* There may be very many supplementary groups for the user. See notes
in "man 2 getgroups". */
#define _DARWIN_UNLIMITED_GETGROUPS
#define EXIM_GROUPLIST_SIZE 64

/* TCP Fast Open: Darwin uses a connectx() call
rather than a modified sendto() */
#define EXIM_TFO_CONNECTX

/* MacOS, at least on the buildfarm animal, does not seem to push out
the SMTP response to QUIT with our usual handling which is trying to get
the client to FIN first so that the server does not get the TIME_WAIT */
#define SERVERSIDE_CLOSE_NOWAIT

/* End */
