1292928Sdim// -*- C++ -*-
2292928Sdim//===-------------------------- errno.h -----------------------------------===//
3292928Sdim//
4353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5353358Sdim// See https://llvm.org/LICENSE.txt for license information.
6353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7292928Sdim//
8292928Sdim//===----------------------------------------------------------------------===//
9292928Sdim
10292928Sdim#ifndef _LIBCPP_ERRNO_H
11292928Sdim#define _LIBCPP_ERRNO_H
12292928Sdim
13292928Sdim/*
14292928Sdim    errno.h synopsis
15292928Sdim
16292928SdimMacros:
17292928Sdim
18292928Sdim    EDOM
19292928Sdim    EILSEQ  // C99
20292928Sdim    ERANGE
21292928Sdim    errno
22292928Sdim
23292928Sdim*/
24292928Sdim
25292928Sdim#include <__config>
26292928Sdim
27292928Sdim#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
28292928Sdim#pragma GCC system_header
29292928Sdim#endif
30292928Sdim
31292928Sdim#include_next <errno.h>
32292928Sdim
33292928Sdim#ifdef __cplusplus
34292928Sdim
35360661Sdim#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) || !defined(EINTEGRITY)
36292928Sdim
37360661Sdim#if defined(ELAST)
38292928Sdim
39292928Sdimstatic const int __elast1 = ELAST+1;
40292928Sdimstatic const int __elast2 = ELAST+2;
41360661Sdimstatic const int __elast3 = ELAST+3;
42292928Sdim
43292928Sdim#else
44292928Sdim
45292928Sdimstatic const int __elast1 = 104;
46292928Sdimstatic const int __elast2 = 105;
47360661Sdimstatic const int __elast3 = 106;
48292928Sdim
49292928Sdim#endif
50292928Sdim
51360661Sdim#if !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
52360661Sdim#define ENOTRECOVERABLE __elast1
53360661Sdim#define EOWNERDEAD __elast2
54360661Sdim#define EINTEGRITY __elast3
55360661Sdim#if defined(ELAST)
56360661Sdim#undef ELAST
57360661Sdim#define ELAST EINTEGRITY
58360661Sdim#endif
59292928Sdim
60360661Sdim#elif !defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
61360661Sdim#define ENOTRECOVERABLE __elast1
62360661Sdim#define EOWNERDEAD __elast2
63360661Sdim#if defined(ELAST)
64360661Sdim#undef ELAST
65360661Sdim#define ELAST EOWNERDEAD
66360661Sdim#endif
67360661Sdim
68360661Sdim#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
69292928Sdim#define EOWNERDEAD __elast1
70360661Sdim#define EINTEGRITY __elast2
71360661Sdim#if defined(ELAST)
72360661Sdim#undef ELAST
73360661Sdim#define ELAST EINTEGRITY
74360661Sdim#endif
75292928Sdim
76360661Sdim#elif !defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
77360661Sdim#define EOWNERDEAD __elast1
78360661Sdim#if defined(ELAST)
79292928Sdim#undef ELAST
80292928Sdim#define ELAST EOWNERDEAD
81343115Smckusick#endif
82292928Sdim
83360661Sdim#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
84360661Sdim#define ENOTRECOVERABLE __elast1
85360661Sdim#define EINTEGRITY __elast2
86360661Sdim#if defined(ELAST)
87360661Sdim#undef ELAST
88360661Sdim#define ELAST EINTEGRITY
89360661Sdim#endif
90292928Sdim
91360661Sdim#elif defined(EOWNERDEAD) && !defined(ENOTRECOVERABLE) && defined(EINTEGRITY)
92292928Sdim#define ENOTRECOVERABLE __elast1
93360661Sdim#if defined(ELAST)
94292928Sdim#undef ELAST
95292928Sdim#define ELAST ENOTRECOVERABLE
96343115Smckusick#endif
97292928Sdim
98360661Sdim#elif defined(EOWNERDEAD) && defined(ENOTRECOVERABLE) && !defined(EINTEGRITY)
99360661Sdim#define EINTEGRITY __elast1
100360661Sdim#if defined(ELAST)
101292928Sdim#undef ELAST
102360661Sdim#define ELAST EINTEGRITY
103343115Smckusick#endif
104292928Sdim
105360661Sdim#endif // !defined(OWNERDEAD) && !defined(NOTRECOVERABLE) && !defined(INTEGRITY)
106292928Sdim
107360661Sdim#endif // !defined(OWNERDEAD) || !defined(NOTRECOVERABLE) || !defined(INTEGRITY)
108292928Sdim
109292928Sdim//  supply errno values likely to be missing, particularly on Windows
110292928Sdim
111292928Sdim#ifndef EAFNOSUPPORT
112292928Sdim#define EAFNOSUPPORT 9901
113292928Sdim#endif
114292928Sdim
115292928Sdim#ifndef EADDRINUSE
116292928Sdim#define EADDRINUSE 9902
117292928Sdim#endif
118292928Sdim
119292928Sdim#ifndef EADDRNOTAVAIL
120292928Sdim#define EADDRNOTAVAIL 9903
121292928Sdim#endif
122292928Sdim
123292928Sdim#ifndef EISCONN
124292928Sdim#define EISCONN 9904
125292928Sdim#endif
126292928Sdim
127292928Sdim#ifndef EBADMSG
128292928Sdim#define EBADMSG 9905
129292928Sdim#endif
130292928Sdim
131292928Sdim#ifndef ECONNABORTED
132292928Sdim#define ECONNABORTED 9906
133292928Sdim#endif
134292928Sdim
135292928Sdim#ifndef EALREADY
136292928Sdim#define EALREADY 9907
137292928Sdim#endif
138292928Sdim
139292928Sdim#ifndef ECONNREFUSED
140292928Sdim#define ECONNREFUSED 9908
141292928Sdim#endif
142292928Sdim
143292928Sdim#ifndef ECONNRESET
144292928Sdim#define ECONNRESET 9909
145292928Sdim#endif
146292928Sdim
147292928Sdim#ifndef EDESTADDRREQ
148292928Sdim#define EDESTADDRREQ 9910
149292928Sdim#endif
150292928Sdim
151292928Sdim#ifndef EHOSTUNREACH
152292928Sdim#define EHOSTUNREACH 9911
153292928Sdim#endif
154292928Sdim
155292928Sdim#ifndef EIDRM
156292928Sdim#define EIDRM 9912
157292928Sdim#endif
158292928Sdim
159292928Sdim#ifndef EMSGSIZE
160292928Sdim#define EMSGSIZE 9913
161292928Sdim#endif
162292928Sdim
163292928Sdim#ifndef ENETDOWN
164292928Sdim#define ENETDOWN 9914
165292928Sdim#endif
166292928Sdim
167292928Sdim#ifndef ENETRESET
168292928Sdim#define ENETRESET 9915
169292928Sdim#endif
170292928Sdim
171292928Sdim#ifndef ENETUNREACH
172292928Sdim#define ENETUNREACH 9916
173292928Sdim#endif
174292928Sdim
175292928Sdim#ifndef ENOBUFS
176292928Sdim#define ENOBUFS 9917
177292928Sdim#endif
178292928Sdim
179292928Sdim#ifndef ENOLINK
180292928Sdim#define ENOLINK 9918
181292928Sdim#endif
182292928Sdim
183292928Sdim#ifndef ENODATA
184292928Sdim#define ENODATA 9919
185292928Sdim#endif
186292928Sdim
187292928Sdim#ifndef ENOMSG
188292928Sdim#define ENOMSG 9920
189292928Sdim#endif
190292928Sdim
191292928Sdim#ifndef ENOPROTOOPT
192292928Sdim#define ENOPROTOOPT 9921
193292928Sdim#endif
194292928Sdim
195292928Sdim#ifndef ENOSR
196292928Sdim#define ENOSR 9922
197292928Sdim#endif
198292928Sdim
199292928Sdim#ifndef ENOTSOCK
200292928Sdim#define ENOTSOCK 9923
201292928Sdim#endif
202292928Sdim
203292928Sdim#ifndef ENOSTR
204292928Sdim#define ENOSTR 9924
205292928Sdim#endif
206292928Sdim
207292928Sdim#ifndef ENOTCONN
208292928Sdim#define ENOTCONN 9925
209292928Sdim#endif
210292928Sdim
211292928Sdim#ifndef ENOTSUP
212292928Sdim#define ENOTSUP 9926
213292928Sdim#endif
214292928Sdim
215292928Sdim#ifndef ECANCELED
216292928Sdim#define ECANCELED 9927
217292928Sdim#endif
218292928Sdim
219292928Sdim#ifndef EINPROGRESS
220292928Sdim#define EINPROGRESS 9928
221292928Sdim#endif
222292928Sdim
223292928Sdim#ifndef EOPNOTSUPP
224292928Sdim#define EOPNOTSUPP 9929
225292928Sdim#endif
226292928Sdim
227292928Sdim#ifndef EWOULDBLOCK
228292928Sdim#define EWOULDBLOCK 9930
229292928Sdim#endif
230292928Sdim
231292928Sdim#ifndef EOWNERDEAD
232292928Sdim#define EOWNERDEAD  9931
233292928Sdim#endif
234292928Sdim
235292928Sdim#ifndef EPROTO
236292928Sdim#define EPROTO 9932
237292928Sdim#endif
238292928Sdim
239292928Sdim#ifndef EPROTONOSUPPORT
240292928Sdim#define EPROTONOSUPPORT 9933
241292928Sdim#endif
242292928Sdim
243292928Sdim#ifndef ENOTRECOVERABLE
244292928Sdim#define ENOTRECOVERABLE 9934
245292928Sdim#endif
246292928Sdim
247292928Sdim#ifndef ETIME
248292928Sdim#define ETIME 9935
249292928Sdim#endif
250292928Sdim
251292928Sdim#ifndef ETXTBSY
252292928Sdim#define ETXTBSY 9936
253292928Sdim#endif
254292928Sdim
255292928Sdim#ifndef ETIMEDOUT
256292928Sdim#define ETIMEDOUT 9938
257292928Sdim#endif
258292928Sdim
259292928Sdim#ifndef ELOOP
260292928Sdim#define ELOOP 9939
261292928Sdim#endif
262292928Sdim
263292928Sdim#ifndef EOVERFLOW
264292928Sdim#define EOVERFLOW 9940
265292928Sdim#endif
266292928Sdim
267292928Sdim#ifndef EPROTOTYPE
268292928Sdim#define EPROTOTYPE 9941
269292928Sdim#endif
270292928Sdim
271292928Sdim#ifndef ENOSYS
272292928Sdim#define ENOSYS 9942
273292928Sdim#endif
274292928Sdim
275292928Sdim#ifndef EINVAL
276292928Sdim#define EINVAL 9943
277292928Sdim#endif
278292928Sdim
279292928Sdim#ifndef ERANGE
280292928Sdim#define ERANGE 9944
281292928Sdim#endif
282292928Sdim
283292928Sdim#ifndef EILSEQ
284292928Sdim#define EILSEQ 9945
285292928Sdim#endif
286292928Sdim
287292928Sdim//  Windows Mobile doesn't appear to define these:
288292928Sdim
289292928Sdim#ifndef E2BIG
290292928Sdim#define E2BIG 9946
291292928Sdim#endif
292292928Sdim
293292928Sdim#ifndef EDOM
294292928Sdim#define EDOM 9947
295292928Sdim#endif
296292928Sdim
297292928Sdim#ifndef EFAULT
298292928Sdim#define EFAULT 9948
299292928Sdim#endif
300292928Sdim
301292928Sdim#ifndef EBADF
302292928Sdim#define EBADF 9949
303292928Sdim#endif
304292928Sdim
305292928Sdim#ifndef EPIPE
306292928Sdim#define EPIPE 9950
307292928Sdim#endif
308292928Sdim
309292928Sdim#ifndef EXDEV
310292928Sdim#define EXDEV 9951
311292928Sdim#endif
312292928Sdim
313292928Sdim#ifndef EBUSY
314292928Sdim#define EBUSY 9952
315292928Sdim#endif
316292928Sdim
317292928Sdim#ifndef ENOTEMPTY
318292928Sdim#define ENOTEMPTY 9953
319292928Sdim#endif
320292928Sdim
321292928Sdim#ifndef ENOEXEC
322292928Sdim#define ENOEXEC 9954
323292928Sdim#endif
324292928Sdim
325292928Sdim#ifndef EEXIST
326292928Sdim#define EEXIST 9955
327292928Sdim#endif
328292928Sdim
329292928Sdim#ifndef EFBIG
330292928Sdim#define EFBIG 9956
331292928Sdim#endif
332292928Sdim
333292928Sdim#ifndef ENAMETOOLONG
334292928Sdim#define ENAMETOOLONG 9957
335292928Sdim#endif
336292928Sdim
337292928Sdim#ifndef ENOTTY
338292928Sdim#define ENOTTY 9958
339292928Sdim#endif
340292928Sdim
341292928Sdim#ifndef EINTR
342292928Sdim#define EINTR 9959
343292928Sdim#endif
344292928Sdim
345292928Sdim#ifndef ESPIPE
346292928Sdim#define ESPIPE 9960
347292928Sdim#endif
348292928Sdim
349292928Sdim#ifndef EIO
350292928Sdim#define EIO 9961
351292928Sdim#endif
352292928Sdim
353292928Sdim#ifndef EISDIR
354292928Sdim#define EISDIR 9962
355292928Sdim#endif
356292928Sdim
357292928Sdim#ifndef ECHILD
358292928Sdim#define ECHILD 9963
359292928Sdim#endif
360292928Sdim
361292928Sdim#ifndef ENOLCK
362292928Sdim#define ENOLCK 9964
363292928Sdim#endif
364292928Sdim
365292928Sdim#ifndef ENOSPC
366292928Sdim#define ENOSPC 9965
367292928Sdim#endif
368292928Sdim
369292928Sdim#ifndef ENXIO
370292928Sdim#define ENXIO 9966
371292928Sdim#endif
372292928Sdim
373292928Sdim#ifndef ENODEV
374292928Sdim#define ENODEV 9967
375292928Sdim#endif
376292928Sdim
377292928Sdim#ifndef ENOENT
378292928Sdim#define ENOENT 9968
379292928Sdim#endif
380292928Sdim
381292928Sdim#ifndef ESRCH
382292928Sdim#define ESRCH 9969
383292928Sdim#endif
384292928Sdim
385292928Sdim#ifndef ENOTDIR
386292928Sdim#define ENOTDIR 9970
387292928Sdim#endif
388292928Sdim
389292928Sdim#ifndef ENOMEM
390292928Sdim#define ENOMEM 9971
391292928Sdim#endif
392292928Sdim
393292928Sdim#ifndef EPERM
394292928Sdim#define EPERM 9972
395292928Sdim#endif
396292928Sdim
397292928Sdim#ifndef EACCES
398292928Sdim#define EACCES 9973
399292928Sdim#endif
400292928Sdim
401292928Sdim#ifndef EROFS
402292928Sdim#define EROFS 9974
403292928Sdim#endif
404292928Sdim
405292928Sdim#ifndef EDEADLK
406292928Sdim#define EDEADLK 9975
407292928Sdim#endif
408292928Sdim
409292928Sdim#ifndef EAGAIN
410292928Sdim#define EAGAIN 9976
411292928Sdim#endif
412292928Sdim
413292928Sdim#ifndef ENFILE
414292928Sdim#define ENFILE 9977
415292928Sdim#endif
416292928Sdim
417292928Sdim#ifndef EMFILE
418292928Sdim#define EMFILE 9978
419292928Sdim#endif
420292928Sdim
421292928Sdim#ifndef EMLINK
422292928Sdim#define EMLINK 9979
423292928Sdim#endif
424292928Sdim
425360661Sdim#ifndef EINTEGRITY
426360661Sdim#define EINTEGRITY 9980
427360661Sdim#endif
428360661Sdim
429292928Sdim#endif // __cplusplus
430292928Sdim
431292928Sdim#endif  // _LIBCPP_ERRNO_H
432