1/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to
5 * deal in the Software without restriction, including without limitation the
6 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7 * sell copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19 * IN THE SOFTWARE.
20 */
21
22#ifndef UV_ERRNO_H_
23#define UV_ERRNO_H_
24
25#include <errno.h>
26#if EDOM > 0
27# define UV__ERR(x) (-(x))
28#else
29# define UV__ERR(x) (x)
30#endif
31
32#define UV__EOF (-4095)
33#define UV__UNKNOWN (-4094)
34
35#define UV__EAI_ADDRFAMILY (-3000)
36#define UV__EAI_AGAIN (-3001)
37#define UV__EAI_BADFLAGS (-3002)
38#define UV__EAI_CANCELED (-3003)
39#define UV__EAI_FAIL (-3004)
40#define UV__EAI_FAMILY (-3005)
41#define UV__EAI_MEMORY (-3006)
42#define UV__EAI_NODATA (-3007)
43#define UV__EAI_NONAME (-3008)
44#define UV__EAI_OVERFLOW (-3009)
45#define UV__EAI_SERVICE (-3010)
46#define UV__EAI_SOCKTYPE (-3011)
47#define UV__EAI_BADHINTS (-3013)
48#define UV__EAI_PROTOCOL (-3014)
49
50/* Only map to the system errno on non-Windows platforms. It's apparently
51 * a fairly common practice for Windows programmers to redefine errno codes.
52 */
53#if defined(E2BIG) && !defined(_WIN32)
54# define UV__E2BIG UV__ERR(E2BIG)
55#else
56# define UV__E2BIG (-4093)
57#endif
58
59#if defined(EACCES) && !defined(_WIN32)
60# define UV__EACCES UV__ERR(EACCES)
61#else
62# define UV__EACCES (-4092)
63#endif
64
65#if defined(EADDRINUSE) && !defined(_WIN32)
66# define UV__EADDRINUSE UV__ERR(EADDRINUSE)
67#else
68# define UV__EADDRINUSE (-4091)
69#endif
70
71#if defined(EADDRNOTAVAIL) && !defined(_WIN32)
72# define UV__EADDRNOTAVAIL UV__ERR(EADDRNOTAVAIL)
73#else
74# define UV__EADDRNOTAVAIL (-4090)
75#endif
76
77#if defined(EAFNOSUPPORT) && !defined(_WIN32)
78# define UV__EAFNOSUPPORT UV__ERR(EAFNOSUPPORT)
79#else
80# define UV__EAFNOSUPPORT (-4089)
81#endif
82
83#if defined(EAGAIN) && !defined(_WIN32)
84# define UV__EAGAIN UV__ERR(EAGAIN)
85#else
86# define UV__EAGAIN (-4088)
87#endif
88
89#if defined(EALREADY) && !defined(_WIN32)
90# define UV__EALREADY UV__ERR(EALREADY)
91#else
92# define UV__EALREADY (-4084)
93#endif
94
95#if defined(EBADF) && !defined(_WIN32)
96# define UV__EBADF UV__ERR(EBADF)
97#else
98# define UV__EBADF (-4083)
99#endif
100
101#if defined(EBUSY) && !defined(_WIN32)
102# define UV__EBUSY UV__ERR(EBUSY)
103#else
104# define UV__EBUSY (-4082)
105#endif
106
107#if defined(ECANCELED) && !defined(_WIN32)
108# define UV__ECANCELED UV__ERR(ECANCELED)
109#else
110# define UV__ECANCELED (-4081)
111#endif
112
113#if defined(ECHARSET) && !defined(_WIN32)
114# define UV__ECHARSET UV__ERR(ECHARSET)
115#else
116# define UV__ECHARSET (-4080)
117#endif
118
119#if defined(ECONNABORTED) && !defined(_WIN32)
120# define UV__ECONNABORTED UV__ERR(ECONNABORTED)
121#else
122# define UV__ECONNABORTED (-4079)
123#endif
124
125#if defined(ECONNREFUSED) && !defined(_WIN32)
126# define UV__ECONNREFUSED UV__ERR(ECONNREFUSED)
127#else
128# define UV__ECONNREFUSED (-4078)
129#endif
130
131#if defined(ECONNRESET) && !defined(_WIN32)
132# define UV__ECONNRESET UV__ERR(ECONNRESET)
133#else
134# define UV__ECONNRESET (-4077)
135#endif
136
137#if defined(EDESTADDRREQ) && !defined(_WIN32)
138# define UV__EDESTADDRREQ UV__ERR(EDESTADDRREQ)
139#else
140# define UV__EDESTADDRREQ (-4076)
141#endif
142
143#if defined(EEXIST) && !defined(_WIN32)
144# define UV__EEXIST UV__ERR(EEXIST)
145#else
146# define UV__EEXIST (-4075)
147#endif
148
149#if defined(EFAULT) && !defined(_WIN32)
150# define UV__EFAULT UV__ERR(EFAULT)
151#else
152# define UV__EFAULT (-4074)
153#endif
154
155#if defined(EHOSTUNREACH) && !defined(_WIN32)
156# define UV__EHOSTUNREACH UV__ERR(EHOSTUNREACH)
157#else
158# define UV__EHOSTUNREACH (-4073)
159#endif
160
161#if defined(EINTR) && !defined(_WIN32)
162# define UV__EINTR UV__ERR(EINTR)
163#else
164# define UV__EINTR (-4072)
165#endif
166
167#if defined(EINVAL) && !defined(_WIN32)
168# define UV__EINVAL UV__ERR(EINVAL)
169#else
170# define UV__EINVAL (-4071)
171#endif
172
173#if defined(EIO) && !defined(_WIN32)
174# define UV__EIO UV__ERR(EIO)
175#else
176# define UV__EIO (-4070)
177#endif
178
179#if defined(EISCONN) && !defined(_WIN32)
180# define UV__EISCONN UV__ERR(EISCONN)
181#else
182# define UV__EISCONN (-4069)
183#endif
184
185#if defined(EISDIR) && !defined(_WIN32)
186# define UV__EISDIR UV__ERR(EISDIR)
187#else
188# define UV__EISDIR (-4068)
189#endif
190
191#if defined(ELOOP) && !defined(_WIN32)
192# define UV__ELOOP UV__ERR(ELOOP)
193#else
194# define UV__ELOOP (-4067)
195#endif
196
197#if defined(EMFILE) && !defined(_WIN32)
198# define UV__EMFILE UV__ERR(EMFILE)
199#else
200# define UV__EMFILE (-4066)
201#endif
202
203#if defined(EMSGSIZE) && !defined(_WIN32)
204# define UV__EMSGSIZE UV__ERR(EMSGSIZE)
205#else
206# define UV__EMSGSIZE (-4065)
207#endif
208
209#if defined(ENAMETOOLONG) && !defined(_WIN32)
210# define UV__ENAMETOOLONG UV__ERR(ENAMETOOLONG)
211#else
212# define UV__ENAMETOOLONG (-4064)
213#endif
214
215#if defined(ENETDOWN) && !defined(_WIN32)
216# define UV__ENETDOWN UV__ERR(ENETDOWN)
217#else
218# define UV__ENETDOWN (-4063)
219#endif
220
221#if defined(ENETUNREACH) && !defined(_WIN32)
222# define UV__ENETUNREACH UV__ERR(ENETUNREACH)
223#else
224# define UV__ENETUNREACH (-4062)
225#endif
226
227#if defined(ENFILE) && !defined(_WIN32)
228# define UV__ENFILE UV__ERR(ENFILE)
229#else
230# define UV__ENFILE (-4061)
231#endif
232
233#if defined(ENOBUFS) && !defined(_WIN32)
234# define UV__ENOBUFS UV__ERR(ENOBUFS)
235#else
236# define UV__ENOBUFS (-4060)
237#endif
238
239#if defined(ENODEV) && !defined(_WIN32)
240# define UV__ENODEV UV__ERR(ENODEV)
241#else
242# define UV__ENODEV (-4059)
243#endif
244
245#if defined(ENOENT) && !defined(_WIN32)
246# define UV__ENOENT UV__ERR(ENOENT)
247#else
248# define UV__ENOENT (-4058)
249#endif
250
251#if defined(ENOMEM) && !defined(_WIN32)
252# define UV__ENOMEM UV__ERR(ENOMEM)
253#else
254# define UV__ENOMEM (-4057)
255#endif
256
257#if defined(ENONET) && !defined(_WIN32)
258# define UV__ENONET UV__ERR(ENONET)
259#else
260# define UV__ENONET (-4056)
261#endif
262
263#if defined(ENOSPC) && !defined(_WIN32)
264# define UV__ENOSPC UV__ERR(ENOSPC)
265#else
266# define UV__ENOSPC (-4055)
267#endif
268
269#if defined(ENOSYS) && !defined(_WIN32)
270# define UV__ENOSYS UV__ERR(ENOSYS)
271#else
272# define UV__ENOSYS (-4054)
273#endif
274
275#if defined(ENOTCONN) && !defined(_WIN32)
276# define UV__ENOTCONN UV__ERR(ENOTCONN)
277#else
278# define UV__ENOTCONN (-4053)
279#endif
280
281#if defined(ENOTDIR) && !defined(_WIN32)
282# define UV__ENOTDIR UV__ERR(ENOTDIR)
283#else
284# define UV__ENOTDIR (-4052)
285#endif
286
287#if defined(ENOTEMPTY) && !defined(_WIN32)
288# define UV__ENOTEMPTY UV__ERR(ENOTEMPTY)
289#else
290# define UV__ENOTEMPTY (-4051)
291#endif
292
293#if defined(ENOTSOCK) && !defined(_WIN32)
294# define UV__ENOTSOCK UV__ERR(ENOTSOCK)
295#else
296# define UV__ENOTSOCK (-4050)
297#endif
298
299#if defined(ENOTSUP) && !defined(_WIN32)
300# define UV__ENOTSUP UV__ERR(ENOTSUP)
301#else
302# define UV__ENOTSUP (-4049)
303#endif
304
305#if defined(EPERM) && !defined(_WIN32)
306# define UV__EPERM UV__ERR(EPERM)
307#else
308# define UV__EPERM (-4048)
309#endif
310
311#if defined(EPIPE) && !defined(_WIN32)
312# define UV__EPIPE UV__ERR(EPIPE)
313#else
314# define UV__EPIPE (-4047)
315#endif
316
317#if defined(EPROTO) && !defined(_WIN32)
318# define UV__EPROTO UV__ERR(EPROTO)
319#else
320# define UV__EPROTO (-4046)
321#endif
322
323#if defined(EPROTONOSUPPORT) && !defined(_WIN32)
324# define UV__EPROTONOSUPPORT UV__ERR(EPROTONOSUPPORT)
325#else
326# define UV__EPROTONOSUPPORT (-4045)
327#endif
328
329#if defined(EPROTOTYPE) && !defined(_WIN32)
330# define UV__EPROTOTYPE UV__ERR(EPROTOTYPE)
331#else
332# define UV__EPROTOTYPE (-4044)
333#endif
334
335#if defined(EROFS) && !defined(_WIN32)
336# define UV__EROFS UV__ERR(EROFS)
337#else
338# define UV__EROFS (-4043)
339#endif
340
341#if defined(ESHUTDOWN) && !defined(_WIN32)
342# define UV__ESHUTDOWN UV__ERR(ESHUTDOWN)
343#else
344# define UV__ESHUTDOWN (-4042)
345#endif
346
347#if defined(ESPIPE) && !defined(_WIN32)
348# define UV__ESPIPE UV__ERR(ESPIPE)
349#else
350# define UV__ESPIPE (-4041)
351#endif
352
353#if defined(ESRCH) && !defined(_WIN32)
354# define UV__ESRCH UV__ERR(ESRCH)
355#else
356# define UV__ESRCH (-4040)
357#endif
358
359#if defined(ETIMEDOUT) && !defined(_WIN32)
360# define UV__ETIMEDOUT UV__ERR(ETIMEDOUT)
361#else
362# define UV__ETIMEDOUT (-4039)
363#endif
364
365#if defined(ETXTBSY) && !defined(_WIN32)
366# define UV__ETXTBSY UV__ERR(ETXTBSY)
367#else
368# define UV__ETXTBSY (-4038)
369#endif
370
371#if defined(EXDEV) && !defined(_WIN32)
372# define UV__EXDEV UV__ERR(EXDEV)
373#else
374# define UV__EXDEV (-4037)
375#endif
376
377#if defined(EFBIG) && !defined(_WIN32)
378# define UV__EFBIG UV__ERR(EFBIG)
379#else
380# define UV__EFBIG (-4036)
381#endif
382
383#if defined(ENOPROTOOPT) && !defined(_WIN32)
384# define UV__ENOPROTOOPT UV__ERR(ENOPROTOOPT)
385#else
386# define UV__ENOPROTOOPT (-4035)
387#endif
388
389#if defined(ERANGE) && !defined(_WIN32)
390# define UV__ERANGE UV__ERR(ERANGE)
391#else
392# define UV__ERANGE (-4034)
393#endif
394
395#if defined(ENXIO) && !defined(_WIN32)
396# define UV__ENXIO UV__ERR(ENXIO)
397#else
398# define UV__ENXIO (-4033)
399#endif
400
401#if defined(EMLINK) && !defined(_WIN32)
402# define UV__EMLINK UV__ERR(EMLINK)
403#else
404# define UV__EMLINK (-4032)
405#endif
406
407/* EHOSTDOWN is not visible on BSD-like systems when _POSIX_C_SOURCE is
408 * defined. Fortunately, its value is always 64 so it's possible albeit
409 * icky to hard-code it.
410 */
411#if defined(EHOSTDOWN) && !defined(_WIN32)
412# define UV__EHOSTDOWN UV__ERR(EHOSTDOWN)
413#elif defined(__APPLE__) || \
414 defined(__DragonFly__) || \
415 defined(__FreeBSD__) || \
416 defined(__FreeBSD_kernel__) || \
417 defined(__NetBSD__) || \
418 defined(__OpenBSD__)
419# define UV__EHOSTDOWN (-64)
420#else
421# define UV__EHOSTDOWN (-4031)
422#endif
423
424#if defined(EREMOTEIO) && !defined(_WIN32)
425# define UV__EREMOTEIO UV__ERR(EREMOTEIO)
426#else
427# define UV__EREMOTEIO (-4030)
428#endif
429
430#if defined(ENOTTY) && !defined(_WIN32)
431# define UV__ENOTTY UV__ERR(ENOTTY)
432#else
433# define UV__ENOTTY (-4029)
434#endif
435
436#if defined(EFTYPE) && !defined(_WIN32)
437# define UV__EFTYPE UV__ERR(EFTYPE)
438#else
439# define UV__EFTYPE (-4028)
440#endif
441
442#if defined(EILSEQ) && !defined(_WIN32)
443# define UV__EILSEQ UV__ERR(EILSEQ)
444#else
445# define UV__EILSEQ (-4027)
446#endif
447
448#endif /* UV_ERRNO_H_ */
449