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 33const char * 34errno2name(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: 480 perror_msg_and_fail("unknown errno %d", errno); 481 } 482} 483