#ifndef _LIGHTTPD_SETTINGS_H_ #define _LIGHTTPD_SETTINGS_H_ #ifdef HAVE_CONFIG_H #include "config.h" #endif #if defined HAVE_LIBSSL && defined HAVE_OPENSSL_SSL_H # define USE_OPENSSL # include #endif #include #include #include #define L_GOFFSET_FORMAT G_GINT64_FORMAT #define L_GOFFSET_MODIFIER G_GINT64_MODIFIER #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_STDDEF_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_PCRE_H #include #endif #include #include /** * if glib supports threads we will use it for async file-io */ #ifdef G_THREADS_ENABLED # ifndef USE_GTHREAD # define USE_GTHREAD # endif #endif /* on linux 2.4.x you get either sendfile or LFS */ #if defined HAVE_SYS_SENDFILE_H && defined HAVE_SENDFILE && (!defined _LARGEFILE_SOURCE || defined HAVE_SENDFILE64) && defined HAVE_WRITEV && defined(__linux__) && !defined HAVE_SENDFILE_BROKEN # define USE_LINUX_SENDFILE # include # include #endif /* all the Async IO backends need GTHREAD support */ #if defined(USE_GTHREAD) # if defined(USE_LINUX_SENDFILE) # if 0 && defined(HAVE_LIBAIO_H) /** disabled for now as not all FSs are async-io capable */ # define USE_LINUX_AIO_SENDFILE # endif # define USE_GTHREAD_SENDFILE # endif # if defined(HAVE_AIO_H) && (!defined(__FreeBSD__)) /* FreeBSD has no SIGEV_THREAD for us */ # define USE_POSIX_AIO # include /* macosx wants it */ # include # endif # ifdef HAVE_MMAP # define USE_GTHREAD_AIO # endif #endif #if defined HAVE_SYS_UIO_H && defined HAVE_SENDFILE && defined HAVE_WRITEV && (defined(__FreeBSD__) || defined(__DragonFly__)) # define USE_FREEBSD_SENDFILE # include #endif #if defined HAVE_SYS_SENDFILE_H && defined HAVE_SENDFILEV && defined HAVE_WRITEV && defined(__sun) # define USE_SOLARIS_SENDFILEV # include # include #endif #if defined HAVE_SYS_UIO_H && defined HAVE_WRITEV # define USE_WRITEV # include #endif #if defined HAVE_SYS_MMAN_H && defined HAVE_MMAP # define USE_MMAP # include /* NetBSD 1.3.x needs it */ # ifndef MAP_FAILED # define MAP_FAILED -1 # endif #if defined(MAP_ANON) #define HAVE_MEM_MMAP_ANON #else /* let's try /dev/zero */ #define HAVE_MEM_MMAP_ZERO #endif #endif #if defined HAVE_SYS_UIO_H && defined HAVE_WRITEV && defined HAVE_SEND_FILE && defined(__aix) # define USE_AIX_SENDFILE #endif /** * unix can use read/write or recv/send on sockets * win32 only recv/send */ #ifdef _WIN32 # define WIN32_LEAN_AND_MEAN # define NOGDI # define USE_WIN32_SEND /* wait for async-io support # define USE_WIN32_TRANSMITFILE */ #else # define USE_WRITE #endif typedef enum { HANDLER_GO_ON, HANDLER_FINISHED, HANDLER_COMEBACK, HANDLER_WAIT_FOR_EVENT, HANDLER_ERROR, HANDLER_WAIT_FOR_FD } handler_t; /* Shared library support */ #ifdef _WIN32 #define LI_IMPORT __declspec(dllimport) #define LI_EXPORT __declspec(dllexport) #define LI_DLLLOCAL #define LI_DLLPUBLIC #else #define LI_IMPORT #ifdef GCC_HASCLASSVISIBILITY #define LI_EXPORT __attribute__ ((visibility("default"))) #define LI_DLLLOCAL __attribute__ ((visibility("hidden"))) #define LI_DLLPUBLIC __attribute__ ((visibility("default"))) #else #define LI_EXPORT #define LI_DLLLOCAL #define LI_DLLPUBLIC #endif #endif #ifdef LI_DECLARE_EXPORTS #define LI_API LI_EXPORT #else #define LI_API LI_IMPORT #endif /* Throwable classes must always be visible on GCC in all binaries */ #ifdef _WIN32 #define LI_EXCEPTIONAPI(api) api #elif defined(GCC_HASCLASSVISIBILITY) #define LI_EXCEPTIONAPI(api) LI_EXPORT #else #define LI_EXCEPTIONAPI(api) #endif #ifdef UNUSED_PARAM #elif defined(__GNUC__) # define UNUSED_PARAM(x) UNUSED_ ## x __attribute__((unused)) #elif defined(__LCLINT__) # define UNUSED_PARAM(x) /*@unused@*/ x #else # define UNUSED_PARAM(x) x #endif #define UNUSED(x) ( (void)(x) ) #if __GNUC__ #define INLINE static inline // # define INLINE extern inline #else # define INLINE static #endif #include "sys-files.h" #include "sys-mmap.h" #include "sys-process.h" #include "sys-socket.h" #include "sys-strings.h" #endif