26 #ifndef MHD_PLATFORM_INTERFACE_H
27 #define MHD_PLATFORM_INTERFACE_H
30 #if defined(_WIN32) && !defined(__CYGWIN__)
35 #if !defined(_WIN32) || defined(__CYGWIN__)
36 #define MHD_socket_close_(fd) close((fd))
38 #define MHD_socket_close_(fd) closesocket((fd))
42 #if !defined(_WIN32) || defined(__CYGWIN__)
43 #define MHD_socket_errno_ errno
45 #define MHD_socket_errno_ MHD_W32_errno_from_winsock_()
50 #if !defined(_WIN32) || defined(__CYGWIN__)
51 #define MHD_socket_last_strerr_() strerror(errno)
53 #define MHD_socket_last_strerr_() MHD_W32_strerror_last_winsock_()
57 #if !defined(_WIN32) || defined(__CYGWIN__)
58 #define MHD_strerror_(errnum) strerror((errnum))
60 #define MHD_strerror_(errnum) MHD_W32_strerror_((errnum))
64 #if !defined(_WIN32) || defined(__CYGWIN__)
65 #define MHD_set_socket_errno_(errnum) errno=(errnum)
67 #define MHD_set_socket_errno_(errnum) MHD_W32_set_last_winsock_error_((errnum))
71 #if !defined(MHD_WINSOCK_SOCKETS)
72 #define MHD_SYS_select_(n,r,w,e,t) select((n),(r),(w),(e),(t))
74 #define MHD_SYS_select_(n,r,w,e,t) select((int)0,(r),(w),(e),(t))
79 #ifndef MHD_DONT_USE_PIPES
80 #define MHD_pipe_(fdarr) pipe((fdarr))
82 #if !defined(_WIN32) || defined(__CYGWIN__)
83 #define MHD_pipe_(fdarr) socketpair(AF_LOCAL, SOCK_STREAM, 0, (fdarr))
85 #define MHD_pipe_(fdarr) MHD_W32_pair_of_sockets_((fdarr))
91 #ifndef MHD_DONT_USE_PIPES
92 #define MHD_pipe_errno_ errno
94 #define MHD_pipe_errno_ MHD_socket_errno_
99 #ifndef MHD_DONT_USE_PIPES
100 #define MHD_pipe_last_strerror_() strerror(errno)
102 #define MHD_pipe_last_strerror_() MHD_socket_last_strerr_()
107 #ifndef MHD_DONT_USE_PIPES
108 #define MHD_pipe_write_(fd, ptr, sz) write((fd), (const void*)(ptr), (sz))
110 #define MHD_pipe_write_(fd, ptr, sz) send((fd), (const char*)(ptr), (sz), 0)
115 #ifndef MHD_DONT_USE_PIPES
116 #define MHD_pipe_read_(fd, ptr, sz) read((fd), (void*)(ptr), (sz))
118 #define MHD_pipe_read_(fd, ptr, sz) recv((fd), (char*)(ptr), (sz), 0)
123 #ifndef MHD_DONT_USE_PIPES
124 #define MHD_pipe_close_(fd) close((fd))
126 #define MHD_pipe_close_(fd) MHD_socket_close_((fd))
130 #ifndef MHD_DONT_USE_PIPES
131 #define MHD_INVALID_PIPE_ (-1)
133 #define MHD_INVALID_PIPE_ MHD_INVALID_SOCKET
136 #if !defined(_WIN32) || defined(__CYGWIN__)
137 #define MHD_random_() random()
139 #define MHD_random_() MHD_W32_random_()
142 #endif // MHD_PLATFORM_INTERFACE_H