1 // -*- C++ -*-
2 //===-------------------------- errno.h -----------------------------------===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef _LIBCPP_ERRNO_H
11 #define _LIBCPP_ERRNO_H
12 
13 /*
14     errno.h synopsis
15 
16 Macros:
17 
18     EDOM
19     EILSEQ  // C99
20     ERANGE
21     errno
22 
23 */
24 
25 #include <__config>
26 
27 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
28 #pragma GCC system_header
29 #endif
30 
31 #include_next <errno.h>
32 
33 #ifdef __cplusplus
34 
35 #if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) || !defined(EINTEGRITY)
36 
37 #if defined(ELAST)
38 
39 static const int __elast1 = ELAST+1;
40 static const int __elast2 = ELAST+2;
41 static const int __elast3 = ELAST+3;
42 
43 #else
44 
45 static const int __elast1 = 104;
46 static const int __elast2 = 105;
47 static const int __elast3 = 106;
48 
49 #endif
50 
51 #if !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
52 #define ENOTRECOVERABLE __elast1
53 #define EOWNERDEAD __elast2
54 #define EINTEGRITY __elast3
55 #if defined(ELAST)
56 #undef ELAST
57 #define ELAST EINTEGRITY
58 #endif
59 
60 #elif !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
61 #define ENOTRECOVERABLE __elast1
62 #define EOWNERDEAD __elast2
63 #if defined(ELAST)
64 #undef ELAST
65 #define ELAST EOWNERDEAD
66 #endif
67 
68 #elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
69 #define EOWNERDEAD __elast1
70 #define EINTEGRITY __elast2
71 #if defined(ELAST)
72 #undef ELAST
73 #define ELAST EINTEGRITY
74 #endif
75 
76 #elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
77 #define EOWNERDEAD __elast1
78 #if defined(ELAST)
79 #undef ELAST
80 #define ELAST EOWNERDEAD
81 #endif
82 
83 #elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
84 #define ENOTRECOVERABLE __elast1
85 #define EINTEGRITY __elast2
86 #if defined(ELAST)
87 #undef ELAST
88 #define ELAST EINTEGRITY
89 #endif
90 
91 #elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
92 #define ENOTRECOVERABLE __elast1
93 #if defined(ELAST)
94 #undef ELAST
95 #define ELAST ENOTRECOVERABLE
96 #endif
97 
98 #elif defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
99 #define EINTEGRITY __elast1
100 #if defined(ELAST)
101 #undef ELAST
102 #define ELAST EINTEGRITY
103 #endif
104 
105 #endif // !defined(OWNERDEAD) && !defined(NOTRECOVERABLE) && !defined(INTEGRITY)
106 
107 #endif // !defined(OWNERDEAD) || !defined(NOTRECOVERABLE) || !defined(INTEGRITY)
108 
109 //  supply errno values likely to be missing, particularly on Windows
110 
111 #ifndef EAFNOSUPPORT
112 #define EAFNOSUPPORT 9901
113 #endif
114 
115 #ifndef EADDRINUSE
116 #define EADDRINUSE 9902
117 #endif
118 
119 #ifndef EADDRNOTAVAIL
120 #define EADDRNOTAVAIL 9903
121 #endif
122 
123 #ifndef EISCONN
124 #define EISCONN 9904
125 #endif
126 
127 #ifndef EBADMSG
128 #define EBADMSG 9905
129 #endif
130 
131 #ifndef ECONNABORTED
132 #define ECONNABORTED 9906
133 #endif
134 
135 #ifndef EALREADY
136 #define EALREADY 9907
137 #endif
138 
139 #ifndef ECONNREFUSED
140 #define ECONNREFUSED 9908
141 #endif
142 
143 #ifndef ECONNRESET
144 #define ECONNRESET 9909
145 #endif
146 
147 #ifndef EDESTADDRREQ
148 #define EDESTADDRREQ 9910
149 #endif
150 
151 #ifndef EHOSTUNREACH
152 #define EHOSTUNREACH 9911
153 #endif
154 
155 #ifndef EIDRM
156 #define EIDRM 9912
157 #endif
158 
159 #ifndef EMSGSIZE
160 #define EMSGSIZE 9913
161 #endif
162 
163 #ifndef ENETDOWN
164 #define ENETDOWN 9914
165 #endif
166 
167 #ifndef ENETRESET
168 #define ENETRESET 9915
169 #endif
170 
171 #ifndef ENETUNREACH
172 #define ENETUNREACH 9916
173 #endif
174 
175 #ifndef ENOBUFS
176 #define ENOBUFS 9917
177 #endif
178 
179 #ifndef ENOLINK
180 #define ENOLINK 9918
181 #endif
182 
183 #ifndef ENODATA
184 #define ENODATA 9919
185 #endif
186 
187 #ifndef ENOMSG
188 #define ENOMSG 9920
189 #endif
190 
191 #ifndef ENOPROTOOPT
192 #define ENOPROTOOPT 9921
193 #endif
194 
195 #ifndef ENOSR
196 #define ENOSR 9922
197 #endif
198 
199 #ifndef ENOTSOCK
200 #define ENOTSOCK 9923
201 #endif
202 
203 #ifndef ENOSTR
204 #define ENOSTR 9924
205 #endif
206 
207 #ifndef ENOTCONN
208 #define ENOTCONN 9925
209 #endif
210 
211 #ifndef ENOTSUP
212 #define ENOTSUP 9926
213 #endif
214 
215 #ifndef ECANCELED
216 #define ECANCELED 9927
217 #endif
218 
219 #ifndef EINPROGRESS
220 #define EINPROGRESS 9928
221 #endif
222 
223 #ifndef EOPNOTSUPP
224 #define EOPNOTSUPP 9929
225 #endif
226 
227 #ifndef EWOULDBLOCK
228 #define EWOULDBLOCK 9930
229 #endif
230 
231 #ifndef EOWNERDEAD
232 #define EOWNERDEAD  9931
233 #endif
234 
235 #ifndef EPROTO
236 #define EPROTO 9932
237 #endif
238 
239 #ifndef EPROTONOSUPPORT
240 #define EPROTONOSUPPORT 9933
241 #endif
242 
243 #ifndef ENOTRECOVERABLE
244 #define ENOTRECOVERABLE 9934
245 #endif
246 
247 #ifndef ETIME
248 #define ETIME 9935
249 #endif
250 
251 #ifndef ETXTBSY
252 #define ETXTBSY 9936
253 #endif
254 
255 #ifndef ETIMEDOUT
256 #define ETIMEDOUT 9938
257 #endif
258 
259 #ifndef ELOOP
260 #define ELOOP 9939
261 #endif
262 
263 #ifndef EOVERFLOW
264 #define EOVERFLOW 9940
265 #endif
266 
267 #ifndef EPROTOTYPE
268 #define EPROTOTYPE 9941
269 #endif
270 
271 #ifndef ENOSYS
272 #define ENOSYS 9942
273 #endif
274 
275 #ifndef EINVAL
276 #define EINVAL 9943
277 #endif
278 
279 #ifndef ERANGE
280 #define ERANGE 9944
281 #endif
282 
283 #ifndef EILSEQ
284 #define EILSEQ 9945
285 #endif
286 
287 //  Windows Mobile doesn't appear to define these:
288 
289 #ifndef E2BIG
290 #define E2BIG 9946
291 #endif
292 
293 #ifndef EDOM
294 #define EDOM 9947
295 #endif
296 
297 #ifndef EFAULT
298 #define EFAULT 9948
299 #endif
300 
301 #ifndef EBADF
302 #define EBADF 9949
303 #endif
304 
305 #ifndef EPIPE
306 #define EPIPE 9950
307 #endif
308 
309 #ifndef EXDEV
310 #define EXDEV 9951
311 #endif
312 
313 #ifndef EBUSY
314 #define EBUSY 9952
315 #endif
316 
317 #ifndef ENOTEMPTY
318 #define ENOTEMPTY 9953
319 #endif
320 
321 #ifndef ENOEXEC
322 #define ENOEXEC 9954
323 #endif
324 
325 #ifndef EEXIST
326 #define EEXIST 9955
327 #endif
328 
329 #ifndef EFBIG
330 #define EFBIG 9956
331 #endif
332 
333 #ifndef ENAMETOOLONG
334 #define ENAMETOOLONG 9957
335 #endif
336 
337 #ifndef ENOTTY
338 #define ENOTTY 9958
339 #endif
340 
341 #ifndef EINTR
342 #define EINTR 9959
343 #endif
344 
345 #ifndef ESPIPE
346 #define ESPIPE 9960
347 #endif
348 
349 #ifndef EIO
350 #define EIO 9961
351 #endif
352 
353 #ifndef EISDIR
354 #define EISDIR 9962
355 #endif
356 
357 #ifndef ECHILD
358 #define ECHILD 9963
359 #endif
360 
361 #ifndef ENOLCK
362 #define ENOLCK 9964
363 #endif
364 
365 #ifndef ENOSPC
366 #define ENOSPC 9965
367 #endif
368 
369 #ifndef ENXIO
370 #define ENXIO 9966
371 #endif
372 
373 #ifndef ENODEV
374 #define ENODEV 9967
375 #endif
376 
377 #ifndef ENOENT
378 #define ENOENT 9968
379 #endif
380 
381 #ifndef ESRCH
382 #define ESRCH 9969
383 #endif
384 
385 #ifndef ENOTDIR
386 #define ENOTDIR 9970
387 #endif
388 
389 #ifndef ENOMEM
390 #define ENOMEM 9971
391 #endif
392 
393 #ifndef EPERM
394 #define EPERM 9972
395 #endif
396 
397 #ifndef EACCES
398 #define EACCES 9973
399 #endif
400 
401 #ifndef EROFS
402 #define EROFS 9974
403 #endif
404 
405 #ifndef EDEADLK
406 #define EDEADLK 9975
407 #endif
408 
409 #ifndef EAGAIN
410 #define EAGAIN 9976
411 #endif
412 
413 #ifndef ENFILE
414 #define ENFILE 9977
415 #endif
416 
417 #ifndef EMFILE
418 #define EMFILE 9978
419 #endif
420 
421 #ifndef EMLINK
422 #define EMLINK 9979
423 #endif
424 
425 #ifndef EINTEGRITY
426 #define EINTEGRITY 9980
427 #endif
428 
429 #endif // __cplusplus
430 
431 #endif // _LIBCPP_ERRNO_H
432