aboutsummaryrefslogtreecommitdiff
path: root/src/platform/platform_interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/platform_interface.h')
-rw-r--r--src/platform/platform_interface.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/platform/platform_interface.h b/src/platform/platform_interface.h
index 1fc3399e..42cfae23 100644
--- a/src/platform/platform_interface.h
+++ b/src/platform/platform_interface.h
@@ -26,6 +26,7 @@
26#ifndef MHD_PLATFORM_INTERFACE_H 26#ifndef MHD_PLATFORM_INTERFACE_H
27#define MHD_PLATFORM_INTERFACE_H 27#define MHD_PLATFORM_INTERFACE_H
28 28
29#include "platform.h"
29#if defined(_WIN32) && !defined(__CYGWIN__) 30#if defined(_WIN32) && !defined(__CYGWIN__)
30#include "w32functions.h" 31#include "w32functions.h"
31#endif 32#endif
@@ -66,4 +67,70 @@
66#define MHD_set_socket_errno_(errnum) MHD_W32_set_last_winsock_error_((errnum)) 67#define MHD_set_socket_errno_(errnum) MHD_W32_set_last_winsock_error_((errnum))
67#endif 68#endif
68 69
70/* MHD_SYS_select_ is wrapper macro for system select() function */
71#if !defined(MHD_WINSOCK_SOCKETS)
72#define MHD_SYS_select_(n,r,w,e,t) select((n),(r),(w),(e),(t))
73#else
74#define MHD_SYS_select_(n,r,w,e,t) select((int)0,(r),(w),(e),(t))
75#endif
76
77/* MHD_pipe_ create pipe (!MHD_DONT_USE_PIPES) /
78 * create two connected sockets (MHD_DONT_USE_PIPES) */
79#ifndef MHD_DONT_USE_PIPES
80#define MHD_pipe_(fdarr) pipe((fdarr))
81#else /* MHD_DONT_USE_PIPES */
82#if !defined(_WIN32) || defined(__CYGWIN__)
83#define MHD_pipe_(fdarr) socketpair(AF_LOCAL, SOCK_STREAM, 0, (fdarr))
84#else /* !defined(_WIN32) || defined(__CYGWIN__) */
85#define MHD_pipe_(fdarr) MHD_W32_pair_of_sockets_((fdarr))
86#endif /* !defined(_WIN32) || defined(__CYGWIN__) */
87#endif /* MHD_DONT_USE_PIPES */
88
89/* MHD_pipe_errno_ is errno of last function (!MHD_DONT_USE_PIPES) /
90 * errno of last emulated pipe function (MHD_DONT_USE_PIPES) */
91#ifndef MHD_DONT_USE_PIPES
92#define MHD_pipe_errno_ errno
93#else
94#define MHD_pipe_errno_ MHD_socket_errno_
95#endif
96
97/* MHD_pipe_last_strerror_ is description string of last errno (!MHD_DONT_USE_PIPES) /
98 * description string of last pipe error (MHD_DONT_USE_PIPES) */
99#ifndef MHD_DONT_USE_PIPES
100#define MHD_pipe_last_strerror_() strerror(errno)
101#else
102#define MHD_pipe_last_strerror_() MHD_socket_last_strerr_()
103#endif
104
105/* MHD_pipe_write_ write data to real pipe (!MHD_DONT_USE_PIPES) /
106 * write data to emulated pipe (MHD_DONT_USE_PIPES) */
107#ifndef MHD_DONT_USE_PIPES
108#define MHD_pipe_write_(fd, ptr, sz) write((fd), (const void*)(ptr), (sz))
109#else
110#define MHD_pipe_write_(fd, ptr, sz) send((fd), (const char*)(ptr), (sz), 0)
111#endif
112
113/* MHD_pipe_read_ read data from real pipe (!MHD_DONT_USE_PIPES) /
114 * read data from emulated pipe (MHD_DONT_USE_PIPES) */
115#ifndef MHD_DONT_USE_PIPES
116#define MHD_pipe_read_(fd, ptr, sz) read((fd), (void*)(ptr), (sz))
117#else
118#define MHD_pipe_read_(fd, ptr, sz) recv((fd), (char*)(ptr), (sz), 0)
119#endif
120
121/* MHD_pipe_close_(fd) close any FDs (non-W32) /
122 * close emulated pipe FDs (W32) */
123#ifndef MHD_DONT_USE_PIPES
124#define MHD_pipe_close_(fd) close((fd))
125#else
126#define MHD_pipe_close_(fd) MHD_socket_close_((fd))
127#endif
128
129/* MHD_INVALID_PIPE_ is a value of bad pipe FD */
130#ifndef MHD_DONT_USE_PIPES
131#define MHD_INVALID_PIPE_ (-1)
132#else
133#define MHD_INVALID_PIPE_ MHD_INVALID_SOCKET
134#endif
135
69#endif // MHD_PLATFORM_INTERFACE_H 136#endif // MHD_PLATFORM_INTERFACE_H