aboutsummaryrefslogtreecommitdiff
path: root/src/include/w32functions.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/w32functions.h')
-rw-r--r--src/include/w32functions.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/src/include/w32functions.h b/src/include/w32functions.h
new file mode 100644
index 00000000..7a25803b
--- /dev/null
+++ b/src/include/w32functions.h
@@ -0,0 +1,191 @@
1/*
2 This file is part of libmicrohttpd
3 (C) 2014 Karlson2k (Evgeny Grin)
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library.
17 If not, see <http://www.gnu.org/licenses/>.
18*/
19
20/**
21 * @file platform/w32functions.h
22 * @brief internal functions for W32 systems
23 * @author Karlson2k (Evgeny Grin)
24 */
25
26#ifndef MHD_W32FUNCTIONS_H
27#define MHD_W32FUNCTIONS_H
28#ifndef _WIN32
29#error w32functions.h is designed only for W32 systems
30#endif
31
32#include <errno.h>
33#include <winsock2.h>
34#include "platform.h"
35#include "platform_interface.h"
36
37#ifdef __cplusplus
38extern "C"
39{
40#endif
41
42#define MHDW32ERRBASE 3300
43
44#ifndef EWOULDBLOCK
45#define EWOULDBLOCK (MHDW32ERRBASE+1)
46#endif
47#ifndef EINPROGRESS
48#define EINPROGRESS (MHDW32ERRBASE+2)
49#endif
50#ifndef EALREADY
51#define EALREADY (MHDW32ERRBASE+3)
52#endif
53#ifndef ENOTSOCK
54#define ENOTSOCK (MHDW32ERRBASE+4)
55#endif
56#ifndef EDESTADDRREQ
57#define EDESTADDRREQ (MHDW32ERRBASE+5)
58#endif
59#ifndef EMSGSIZE
60#define EMSGSIZE (MHDW32ERRBASE+6)
61#endif
62#ifndef EPROTOTYPE
63#define EPROTOTYPE (MHDW32ERRBASE+7)
64#endif
65#ifndef ENOPROTOOPT
66#define ENOPROTOOPT (MHDW32ERRBASE+8)
67#endif
68#ifndef EPROTONOSUPPORT
69#define EPROTONOSUPPORT (MHDW32ERRBASE+9)
70#endif
71#ifndef EOPNOTSUPP
72#define EOPNOTSUPP (MHDW32ERRBASE+10)
73#endif
74#ifndef EAFNOSUPPORT
75#define EAFNOSUPPORT (MHDW32ERRBASE+11)
76#endif
77#ifndef EADDRINUSE
78#define EADDRINUSE (MHDW32ERRBASE+12)
79#endif
80#ifndef EADDRNOTAVAIL
81#define EADDRNOTAVAIL (MHDW32ERRBASE+13)
82#endif
83#ifndef ENETDOWN
84#define ENETDOWN (MHDW32ERRBASE+14)
85#endif
86#ifndef ENETUNREACH
87#define ENETUNREACH (MHDW32ERRBASE+15)
88#endif
89#ifndef ENETRESET
90#define ENETRESET (MHDW32ERRBASE+16)
91#endif
92#ifndef ECONNABORTED
93#define ECONNABORTED (MHDW32ERRBASE+17)
94#endif
95#ifndef ECONNRESET
96#define ECONNRESET (MHDW32ERRBASE+18)
97#endif
98#ifndef ENOBUFS
99#define ENOBUFS (MHDW32ERRBASE+19)
100#endif
101#ifndef EISCONN
102#define EISCONN (MHDW32ERRBASE+20)
103#endif
104#ifndef ENOTCONN
105#define ENOTCONN (MHDW32ERRBASE+21)
106#endif
107#ifndef ETOOMANYREFS
108#define ETOOMANYREFS (MHDW32ERRBASE+22)
109#endif
110#ifndef ECONNREFUSED
111#define ECONNREFUSED (MHDW32ERRBASE+23)
112#endif
113#ifndef ELOOP
114#define ELOOP (MHDW32ERRBASE+24)
115#endif
116#ifndef EHOSTDOWN
117#define EHOSTDOWN (MHDW32ERRBASE+25)
118#endif
119#ifndef EHOSTUNREACH
120#define EHOSTUNREACH (MHDW32ERRBASE+26)
121#endif
122#ifndef EPROCLIM
123#define EPROCLIM (MHDW32ERRBASE+27)
124#endif
125#ifndef EUSERS
126#define EUSERS (MHDW32ERRBASE+28)
127#endif
128#ifndef EDQUOT
129#define EDQUOT (MHDW32ERRBASE+29)
130#endif
131#ifndef ESTALE
132#define ESTALE (MHDW32ERRBASE+30)
133#endif
134#ifndef EREMOTE
135#define EREMOTE (MHDW32ERRBASE+31)
136#endif
137#ifndef ESOCKTNOSUPPORT
138#define ESOCKTNOSUPPORT (MHDW32ERRBASE+32)
139#endif
140#ifndef EPFNOSUPPORT
141#define EPFNOSUPPORT (MHDW32ERRBASE+33)
142#endif
143#ifndef ESHUTDOWN
144#define ESHUTDOWN (MHDW32ERRBASE+34)
145#endif
146#ifndef ENODATA
147#define ENODATA (MHDW32ERRBASE+35)
148#endif
149
150/**
151 * Return errno equivalent of last winsock error
152 * @return errno equivalent of last winsock error
153 */
154int MHD_W32_errno_from_winsock_(void);
155/**
156 * Return pointer to string description of errnum error
157 * Works fine with both standard errno errnums
158 * and errnums from MHD_W32_errno_from_winsock_
159 * @param errnum the errno or value from MHD_W32_errno_from_winsock_()
160 * @return pointer to string description of error
161 */
162const char* MHD_W32_strerror_(int errnum);
163/**
164 * Return pointer to string description of last winsock error
165 * @return pointer to string description of last winsock error
166 */
167const char* MHD_W32_strerror_last_winsock_(void);
168/**
169 * Set last winsock error to equivalent of given errno value
170 * @param errnum the errno value to set
171 */
172void MHD_W32_set_last_winsock_error_(int errnum);
173
174/**
175 * Create pair of mutually connected TCP/IP sockets on loopback address
176 * @param sockets_pair array to receive resulted sockets
177 * @return zero on success, -1 otherwise
178 */
179int MHD_W32_pair_of_sockets_(SOCKET sockets_pair[2]);
180/**
181 * Generate 31-bit pseudo random number.
182 * Function initialize itself at first call to current time.
183 * @return 31-bit pseudo random number.
184 */
185_MHD_EXTERN int MHD_W32_random(void); /* must be exported for "make check" tests */
186 /* TODO: exclude from exports */
187
188#ifdef __cplusplus
189}
190#endif
191#endif //MHD_W32FUNCTIONS_H