1 /*
2 * Copyright (c) 2016 Dmitry V. Levin <ldv@strace.io>
3 * Copyright (c) 2016-2022 The strace developers.
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #include "tests.h"
10 #include <errno.h>
11
12 #define CASE(x) case x: return #x
13
14 #ifndef ENOTSUPP
15 # define ENOTSUPP 524
16 #endif
17
18 const char *
19 errno2name(void)
20 {
21 switch (errno) {
22 /* names taken from linux/errnoent.h */
23 #ifdef E2BIG
24 CASE(E2BIG);
25 #endif
26 #ifdef EACCES
27 CASE(EACCES);
28 #endif
29 #ifdef EADDRINUSE
30 CASE(EADDRINUSE);
31 #endif
32 #ifdef EADDRNOTAVAIL
33 CASE(EADDRNOTAVAIL);
34 #endif
35 #ifdef EADV
36 CASE(EADV);
37 #endif
38 #ifdef EAFNOSUPPORT
39 CASE(EAFNOSUPPORT);
40 #endif
41 #ifdef EAGAIN
42 CASE(EAGAIN);
43 #endif
44 #ifdef EALREADY
45 CASE(EALREADY);
46 #endif
47 #ifdef EBADCOOKIE
48 CASE(EBADCOOKIE);
49 #endif
50 #ifdef EBADE
51 CASE(EBADE);
52 #endif
53 #ifdef EBADF
54 CASE(EBADF);
55 #endif
56 #ifdef EBADFD
57 CASE(EBADFD);
58 #endif
59 #ifdef EBADHANDLE
60 CASE(EBADHANDLE);
61 #endif
62 #ifdef EBADMSG
63 CASE(EBADMSG);
64 #endif
65 #ifdef EBADR
66 CASE(EBADR);
67 #endif
68 #ifdef EBADRQC
69 CASE(EBADRQC);
70 #endif
71 #ifdef EBADSLT
72 CASE(EBADSLT);
73 #endif
74 #ifdef EBADTYPE
75 CASE(EBADTYPE);
76 #endif
77 #ifdef EBFONT
78 CASE(EBFONT);
79 #endif
80 #ifdef EBUSY
81 CASE(EBUSY);
82 #endif
83 #ifdef ECANCELED
84 CASE(ECANCELED);
85 #endif
86 #ifdef ECHILD
87 CASE(ECHILD);
88 #endif
89 #ifdef ECHRNG
90 CASE(ECHRNG);
91 #endif
92 #ifdef ECOMM
93 CASE(ECOMM);
94 #endif
95 #ifdef ECONNABORTED
96 CASE(ECONNABORTED);
97 #endif
98 #ifdef ECONNREFUSED
99 CASE(ECONNREFUSED);
100 #endif
101 #ifdef ECONNRESET
102 CASE(ECONNRESET);
103 #endif
104 #ifdef EDEADLK
105 CASE(EDEADLK);
106 #endif
107 #ifdef EDESTADDRREQ
108 CASE(EDESTADDRREQ);
109 #endif
110 #ifdef EDOM
111 CASE(EDOM);
112 #endif
113 #ifdef EDOTDOT
114 CASE(EDOTDOT);
115 #endif
116 #ifdef EDQUOT
117 CASE(EDQUOT);
118 #endif
119 #ifdef EEXIST
120 CASE(EEXIST);
121 #endif
122 #ifdef EFAULT
123 CASE(EFAULT);
124 #endif
125 #ifdef EFBIG
126 CASE(EFBIG);
127 #endif
128 #ifdef EHOSTDOWN
129 CASE(EHOSTDOWN);
130 #endif
131 #ifdef EHOSTUNREACH
132 CASE(EHOSTUNREACH);
133 #endif
134 #ifdef EHWPOISON
135 CASE(EHWPOISON);
136 #endif
137 #ifdef EIDRM
138 CASE(EIDRM);
139 #endif
140 #ifdef EILSEQ
141 CASE(EILSEQ);
142 #endif
143 #ifdef EINPROGRESS
144 CASE(EINPROGRESS);
145 #endif
146 #ifdef EINTR
147 CASE(EINTR);
148 #endif
149 #ifdef EINVAL
150 CASE(EINVAL);
151 #endif
152 #ifdef EIO
153 CASE(EIO);
154 #endif
155 #ifdef EIOCBQUEUED
156 CASE(EIOCBQUEUED);
157 #endif
158 #ifdef EISCONN
159 CASE(EISCONN);
160 #endif
161 #ifdef EISDIR
162 CASE(EISDIR);
163 #endif
164 #ifdef EISNAM
165 CASE(EISNAM);
166 #endif
167 #ifdef EJUKEBOX
168 CASE(EJUKEBOX);
169 #endif
170 #ifdef EKEYEXPIRED
171 CASE(EKEYEXPIRED);
172 #endif
173 #ifdef EKEYREJECTED
174 CASE(EKEYREJECTED);
175 #endif
176 #ifdef EKEYREVOKED
177 CASE(EKEYREVOKED);
178 #endif
179 #ifdef EL2HLT
180 CASE(EL2HLT);
181 #endif
182 #ifdef EL2NSYNC
183 CASE(EL2NSYNC);
184 #endif
185 #ifdef EL3HLT
186 CASE(EL3HLT);
187 #endif
188 #ifdef EL3RST
189 CASE(EL3RST);
190 #endif
191 #ifdef ELIBACC
192 CASE(ELIBACC);
193 #endif
194 #ifdef ELIBBAD
195 CASE(ELIBBAD);
196 #endif
197 #ifdef ELIBEXEC
198 CASE(ELIBEXEC);
199 #endif
200 #ifdef ELIBMAX
201 CASE(ELIBMAX);
202 #endif
203 #ifdef ELIBSCN
204 CASE(ELIBSCN);
205 #endif
206 #ifdef ELNRNG
207 CASE(ELNRNG);
208 #endif
209 #ifdef ELOOP
210 CASE(ELOOP);
211 #endif
212 #ifdef EMEDIUMTYPE
213 CASE(EMEDIUMTYPE);
214 #endif
215 #ifdef EMFILE
216 CASE(EMFILE);
217 #endif
218 #ifdef EMLINK
219 CASE(EMLINK);
220 #endif
221 #ifdef EMSGSIZE
222 CASE(EMSGSIZE);
223 #endif
224 #ifdef EMULTIHOP
225 CASE(EMULTIHOP);
226 #endif
227 #ifdef ENAMETOOLONG
228 CASE(ENAMETOOLONG);
229 #endif
230 #ifdef ENAVAIL
231 CASE(ENAVAIL);
232 #endif
233 #ifdef ENETDOWN
234 CASE(ENETDOWN);
235 #endif
236 #ifdef ENETRESET
237 CASE(ENETRESET);
238 #endif
239 #ifdef ENETUNREACH
240 CASE(ENETUNREACH);
241 #endif
242 #ifdef ENFILE
243 CASE(ENFILE);
244 #endif
245 #ifdef ENOANO
246 CASE(ENOANO);
247 #endif
248 #ifdef ENOBUFS
249 CASE(ENOBUFS);
250 #endif
251 #ifdef ENOCSI
252 CASE(ENOCSI);
253 #endif
254 #ifdef ENODATA
255 CASE(ENODATA);
256 #endif
257 #ifdef ENODEV
258 CASE(ENODEV);
259 #endif
260 #ifdef ENOENT
261 CASE(ENOENT);
262 #endif
263 #ifdef ENOEXEC
264 CASE(ENOEXEC);
265 #endif
266 #ifdef ENOIOCTLCMD
267 CASE(ENOIOCTLCMD);
268 #endif
269 #ifdef ENOKEY
270 CASE(ENOKEY);
271 #endif
272 #ifdef ENOLCK
273 CASE(ENOLCK);
274 #endif
275 #ifdef ENOLINK
276 CASE(ENOLINK);
277 #endif
278 #ifdef ENOMEDIUM
279 CASE(ENOMEDIUM);
280 #endif
281 #ifdef ENOMEM
282 CASE(ENOMEM);
283 #endif
284 #ifdef ENOMSG
285 CASE(ENOMSG);
286 #endif
287 #ifdef ENONET
288 CASE(ENONET);
289 #endif
290 #ifdef ENOPKG
291 CASE(ENOPKG);
292 #endif
293 #ifdef ENOPROTOOPT
294 CASE(ENOPROTOOPT);
295 #endif
296 #ifdef ENOSPC
297 CASE(ENOSPC);
298 #endif
299 #ifdef ENOSR
300 CASE(ENOSR);
301 #endif
302 #ifdef ENOSTR
303 CASE(ENOSTR);
304 #endif
305 #ifdef ENOSYS
306 CASE(ENOSYS);
307 #endif
308 #ifdef ENOTBLK
309 CASE(ENOTBLK);
310 #endif
311 #ifdef ENOTCONN
312 CASE(ENOTCONN);
313 #endif
314 #ifdef ENOTDIR
315 CASE(ENOTDIR);
316 #endif
317 #ifdef ENOTEMPTY
318 CASE(ENOTEMPTY);
319 #endif
320 #ifdef ENOTNAM
321 CASE(ENOTNAM);
322 #endif
323 #ifdef ENOTRECOVERABLE
324 CASE(ENOTRECOVERABLE);
325 #endif
326 #ifdef ENOTSOCK
327 CASE(ENOTSOCK);
328 #endif
329 #ifdef ENOTSUPP
330 CASE(ENOTSUPP);
331 #endif
332 #ifdef ENOTSYNC
333 CASE(ENOTSYNC);
334 #endif
335 #ifdef ENOTTY
336 CASE(ENOTTY);
337 #endif
338 #ifdef ENOTUNIQ
339 CASE(ENOTUNIQ);
340 #endif
341 #ifdef ENXIO
342 CASE(ENXIO);
343 #endif
344 #ifdef EOPENSTALE
345 CASE(EOPENSTALE);
346 #endif
347 #ifdef EOPNOTSUPP
348 CASE(EOPNOTSUPP);
349 #endif
350 #ifdef EOVERFLOW
351 CASE(EOVERFLOW);
352 #endif
353 #ifdef EOWNERDEAD
354 CASE(EOWNERDEAD);
355 #endif
356 #ifdef EPERM
357 CASE(EPERM);
358 #endif
359 #ifdef EPFNOSUPPORT
360 CASE(EPFNOSUPPORT);
361 #endif
362 #ifdef EPIPE
363 CASE(EPIPE);
364 #endif
365 #ifdef EPROBE_DEFER
366 CASE(EPROBE_DEFER);
367 #endif
368 #ifdef EPROTO
369 CASE(EPROTO);
370 #endif
371 #ifdef EPROTONOSUPPORT
372 CASE(EPROTONOSUPPORT);
373 #endif
374 #ifdef EPROTOTYPE
375 CASE(EPROTOTYPE);
376 #endif
377 #ifdef ERANGE
378 CASE(ERANGE);
379 #endif
380 #ifdef EREMCHG
381 CASE(EREMCHG);
382 #endif
383 #ifdef EREMOTE
384 CASE(EREMOTE);
385 #endif
386 #ifdef EREMOTEIO
387 CASE(EREMOTEIO);
388 #endif
389 #ifdef ERESTART
390 CASE(ERESTART);
391 #endif
392 #ifdef ERESTARTNOHAND
393 CASE(ERESTARTNOHAND);
394 #endif
395 #ifdef ERESTARTNOINTR
396 CASE(ERESTARTNOINTR);
397 #endif
398 #ifdef ERESTARTSYS
399 CASE(ERESTARTSYS);
400 #endif
401 #ifdef ERESTART_RESTARTBLOCK
402 CASE(ERESTART_RESTARTBLOCK);
403 #endif
404 #ifdef ERFKILL
405 CASE(ERFKILL);
406 #endif
407 #ifdef EROFS
408 CASE(EROFS);
409 #endif
410 #ifdef ESERVERFAULT
411 CASE(ESERVERFAULT);
412 #endif
413 #ifdef ESHUTDOWN
414 CASE(ESHUTDOWN);
415 #endif
416 #ifdef ESOCKTNOSUPPORT
417 CASE(ESOCKTNOSUPPORT);
418 #endif
419 #ifdef ESPIPE
420 CASE(ESPIPE);
421 #endif
422 #ifdef ESRCH
423 CASE(ESRCH);
424 #endif
425 #ifdef ESRMNT
426 CASE(ESRMNT);
427 #endif
428 #ifdef ESTALE
429 CASE(ESTALE);
430 #endif
431 #ifdef ESTRPIPE
432 CASE(ESTRPIPE);
433 #endif
434 #ifdef ETIME
435 CASE(ETIME);
436 #endif
437 #ifdef ETIMEDOUT
438 CASE(ETIMEDOUT);
439 #endif
440 #ifdef ETOOMANYREFS
441 CASE(ETOOMANYREFS);
442 #endif
443 #ifdef ETOOSMALL
444 CASE(ETOOSMALL);
445 #endif
446 #ifdef ETXTBSY
447 CASE(ETXTBSY);
448 #endif
449 #ifdef EUCLEAN
450 CASE(EUCLEAN);
451 #endif
452 #ifdef EUNATCH
453 CASE(EUNATCH);
454 #endif
455 #ifdef EUSERS
456 CASE(EUSERS);
457 #endif
458 #ifdef EXDEV
459 CASE(EXDEV);
460 #endif
461 #ifdef EXFULL
462 CASE(EXFULL);
463 #endif
464 default:
465 perror_msg_and_fail("unknown errno %d", errno);
466 }
467 }