1 /* 2 * Copyright (c) 2016 Dmitry V. Levin <ldv (at) 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: 480 perror_msg_and_fail("unknown errno %d", errno); 481 } 482 } 483