/* This file is part of libmicrohttpd (C) 2008 Christian Grothoff (and other contributing authors) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /** * @file platform.h * @brief platform-specific includes for libmicrohttpd * @author Christian Grothoff * * This file is included by the libmicrohttpd code * before "microhttpd.h"; it provides the required * standard headers (which are platform-specific).

* * Note that this file depends on our configure.ac * build process and the generated config.h file. * Hence you cannot include it directly in applications * that use libmicrohttpd. */ #ifndef MHD_PLATFORM_H #define MHD_PLATFORM_H #include "MHD_config.h" #ifndef BUILDING_MHD_LIB #ifdef _MHD_EXTERN #undef _MHD_EXTERN #endif /* _MHD_EXTERN */ #define _MHD_EXTERN extern #endif /* BUILDING_MHD_LIB */ #define _XOPEN_SOURCE_EXTENDED 1 #if OS390 #define _OPEN_THREADS #define _OPEN_SYS_SOCK_IPV6 #define _OPEN_MSGQ_EXT #define _LP64 #endif #include #include #include #include #include #include #include #include #include #include #undef HAVE_CONFIG_H #include #define HAVE_CONFIG_H 1 /* different OSes have fd_set in a broad range of header files; we just include most of them (if they are available) */ #ifdef OS_VXWORKS #include #include #include #include #define RESTRICT __restrict__ #endif #if HAVE_MEMORY_H #include #endif #if HAVE_SYS_SELECT_H #include #endif #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_TIME_H #include #endif #if HAVE_SYS_STAT_H #include #endif #if HAVE_SYS_MSG_H #include #endif #if HAVE_SYS_MMAN_H #include #endif #if HAVE_NETDB_H #include #endif #if HAVE_NETINET_IN_H #include #endif #if HAVE_TIME_H #include #endif #if HAVE_SYS_SOCKET_H #include #endif #if HAVE_ARPA_INET_H #include #endif #include #if defined(_WIN32) && !defined(__CYGWIN__) #include #define sleep(seconds) (SleepEx((seconds)*1000, 1)/1000) #define usleep(useconds) (void)SleepEx((useconds)/1000, 1) #endif #if !defined(SHUT_WR) && defined(SD_SEND) #define SHUT_WR SD_SEND #endif #if !defined(SHUT_RD) && defined(SD_RECEIVE) #define SHUT_RD SD_RECEIVE #endif #if !defined(SHUT_RDWR) && defined(SD_BOTH) #define SHUT_RDWR SD_BOTH #endif #ifndef MHD_SOCKET_DEFINED /** * MHD_socket is type for socket FDs */ #if !defined(_WIN32) || defined(_SYS_TYPES_FD_SET) #define MHD_POSIX_SOCKETS 1 typedef int MHD_socket; #define MHD_INVALID_SOCKET (-1) #else /* !defined(_WIN32) || defined(_SYS_TYPES_FD_SET) */ #define MHD_WINSOCK_SOCKETS 1 #include typedef SOCKET MHD_socket; #define MHD_INVALID_SOCKET (INVALID_SOCKET) #endif /* !defined(_WIN32) || defined(_SYS_TYPES_FD_SET) */ #define MHD_SOCKET_DEFINED 1 #endif /* MHD_SOCKET_DEFINED */ /* Force don't use pipes on W32 */ #if defined(_WIN32) && !defined(MHD_DONT_USE_PIPES) #define MHD_DONT_USE_PIPES 1 #endif /* defined(_WIN32) && !defined(MHD_DONT_USE_PIPES) */ /* MHD_pipe is type for pipe FDs*/ #ifndef MHD_DONT_USE_PIPES typedef int MHD_pipe; #else /* ! MHD_DONT_USE_PIPES */ typedef MHD_socket MHD_pipe; #endif /* ! MHD_DONT_USE_PIPES */ #endif