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