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