1// -*- C++ -*- 2//===-------------------------- cerrno ------------------------------------===// 3// 4// The LLVM Compiler Infrastructure 5// 6// This file is dual licensed under the MIT and the University of Illinois Open 7// Source Licenses. See LICENSE.TXT for details. 8// 9//===----------------------------------------------------------------------===// 10 11#ifndef _LIBCPP_CERRNO 12#define _LIBCPP_CERRNO 13 14/* 15 cerrno synopsis 16 17Macros: 18 19 EDOM 20 EILSEQ // C99 21 ERANGE 22 errno 23 24*/ 25 26#include <__config> 27#include <errno.h> 28 29#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 30#pragma GCC system_header 31#endif 32 33#if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) 34 35#ifdef ELAST 36 37const int __elast1 = ELAST+1; 38const int __elast2 = ELAST+2; 39 40#else 41 42const int __elast1 = 104; 43const int __elast2 = 105; 44 45#endif 46 47#ifdef ENOTRECOVERABLE 48 49#define EOWNERDEAD __elast1 50 51#ifdef ELAST 52#undef ELAST 53#define ELAST EOWNERDEAD 54#endif 55 56#elif defined(EOWNERDEAD) 57 58#define ENOTRECOVERABLE __elast1 59#ifdef ELAST 60#undef ELAST 61#define ELAST ENOTRECOVERABLE 62#endif 63 64#else // defined(EOWNERDEAD) 65 66#define EOWNERDEAD __elast1 67#define ENOTRECOVERABLE __elast2 68#ifdef ELAST 69#undef ELAST 70#define ELAST ENOTRECOVERABLE 71#endif 72 73#endif // defined(EOWNERDEAD) 74 75#endif // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE) 76 77// supply errno values likely to be missing, particularly on Windows 78 79#ifndef EAFNOSUPPORT 80#define EAFNOSUPPORT 9901 81#endif 82 83#ifndef EADDRINUSE 84#define EADDRINUSE 9902 85#endif 86 87#ifndef EADDRNOTAVAIL 88#define EADDRNOTAVAIL 9903 89#endif 90 91#ifndef EISCONN 92#define EISCONN 9904 93#endif 94 95#ifndef EBADMSG 96#define EBADMSG 9905 97#endif 98 99#ifndef ECONNABORTED 100#define ECONNABORTED 9906 101#endif 102 103#ifndef EALREADY 104#define EALREADY 9907 105#endif 106 107#ifndef ECONNREFUSED 108#define ECONNREFUSED 9908 109#endif 110 111#ifndef ECONNRESET 112#define ECONNRESET 9909 113#endif 114 115#ifndef EDESTADDRREQ 116#define EDESTADDRREQ 9910 117#endif 118 119#ifndef EHOSTUNREACH 120#define EHOSTUNREACH 9911 121#endif 122 123#ifndef EIDRM 124#define EIDRM 9912 125#endif 126 127#ifndef EMSGSIZE 128#define EMSGSIZE 9913 129#endif 130 131#ifndef ENETDOWN 132#define ENETDOWN 9914 133#endif 134 135#ifndef ENETRESET 136#define ENETRESET 9915 137#endif 138 139#ifndef ENETUNREACH 140#define ENETUNREACH 9916 141#endif 142 143#ifndef ENOBUFS 144#define ENOBUFS 9917 145#endif 146 147#ifndef ENOLINK 148#define ENOLINK 9918 149#endif 150 151#ifndef ENODATA 152#define ENODATA 9919 153#endif 154 155#ifndef ENOMSG 156#define ENOMSG 9920 157#endif 158 159#ifndef ENOPROTOOPT 160#define ENOPROTOOPT 9921 161#endif 162 163#ifndef ENOSR 164#define ENOSR 9922 165#endif 166 167#ifndef ENOTSOCK 168#define ENOTSOCK 9923 169#endif 170 171#ifndef ENOSTR 172#define ENOSTR 9924 173#endif 174 175#ifndef ENOTCONN 176#define ENOTCONN 9925 177#endif 178 179#ifndef ENOTSUP 180#define ENOTSUP 9926 181#endif 182 183#ifndef ECANCELED 184#define ECANCELED 9927 185#endif 186 187#ifndef EINPROGRESS 188#define EINPROGRESS 9928 189#endif 190 191#ifndef EOPNOTSUPP 192#define EOPNOTSUPP 9929 193#endif 194 195#ifndef EWOULDBLOCK 196#define EWOULDBLOCK 9930 197#endif 198 199#ifndef EOWNERDEAD 200#define EOWNERDEAD 9931 201#endif 202 203#ifndef EPROTO 204#define EPROTO 9932 205#endif 206 207#ifndef EPROTONOSUPPORT 208#define EPROTONOSUPPORT 9933 209#endif 210 211#ifndef ENOTRECOVERABLE 212#define ENOTRECOVERABLE 9934 213#endif 214 215#ifndef ETIME 216#define ETIME 9935 217#endif 218 219#ifndef ETXTBSY 220#define ETXTBSY 9936 221#endif 222 223#ifndef ETIMEDOUT 224#define ETIMEDOUT 9938 225#endif 226 227#ifndef ELOOP 228#define ELOOP 9939 229#endif 230 231#ifndef EOVERFLOW 232#define EOVERFLOW 9940 233#endif 234 235#ifndef EPROTOTYPE 236#define EPROTOTYPE 9941 237#endif 238 239#ifndef ENOSYS 240#define ENOSYS 9942 241#endif 242 243#ifndef EINVAL 244#define EINVAL 9943 245#endif 246 247#ifndef ERANGE 248#define ERANGE 9944 249#endif 250 251#ifndef EILSEQ 252#define EILSEQ 9945 253#endif 254 255// Windows Mobile doesn't appear to define these: 256 257#ifndef E2BIG 258#define E2BIG 9946 259#endif 260 261#ifndef EDOM 262#define EDOM 9947 263#endif 264 265#ifndef EFAULT 266#define EFAULT 9948 267#endif 268 269#ifndef EBADF 270#define EBADF 9949 271#endif 272 273#ifndef EPIPE 274#define EPIPE 9950 275#endif 276 277#ifndef EXDEV 278#define EXDEV 9951 279#endif 280 281#ifndef EBUSY 282#define EBUSY 9952 283#endif 284 285#ifndef ENOTEMPTY 286#define ENOTEMPTY 9953 287#endif 288 289#ifndef ENOEXEC 290#define ENOEXEC 9954 291#endif 292 293#ifndef EEXIST 294#define EEXIST 9955 295#endif 296 297#ifndef EFBIG 298#define EFBIG 9956 299#endif 300 301#ifndef ENAMETOOLONG 302#define ENAMETOOLONG 9957 303#endif 304 305#ifndef ENOTTY 306#define ENOTTY 9958 307#endif 308 309#ifndef EINTR 310#define EINTR 9959 311#endif 312 313#ifndef ESPIPE 314#define ESPIPE 9960 315#endif 316 317#ifndef EIO 318#define EIO 9961 319#endif 320 321#ifndef EISDIR 322#define EISDIR 9962 323#endif 324 325#ifndef ECHILD 326#define ECHILD 9963 327#endif 328 329#ifndef ENOLCK 330#define ENOLCK 9964 331#endif 332 333#ifndef ENOSPC 334#define ENOSPC 9965 335#endif 336 337#ifndef ENXIO 338#define ENXIO 9966 339#endif 340 341#ifndef ENODEV 342#define ENODEV 9967 343#endif 344 345#ifndef ENOENT 346#define ENOENT 9968 347#endif 348 349#ifndef ESRCH 350#define ESRCH 9969 351#endif 352 353#ifndef ENOTDIR 354#define ENOTDIR 9970 355#endif 356 357#ifndef ENOMEM 358#define ENOMEM 9971 359#endif 360 361#ifndef EPERM 362#define EPERM 9972 363#endif 364 365#ifndef EACCES 366#define EACCES 9973 367#endif 368 369#ifndef EROFS 370#define EROFS 9974 371#endif 372 373#ifndef EDEADLK 374#define EDEADLK 9975 375#endif 376 377#ifndef EAGAIN 378#define EAGAIN 9976 379#endif 380 381#ifndef ENFILE 382#define ENFILE 9977 383#endif 384 385#ifndef EMFILE 386#define EMFILE 9978 387#endif 388 389#ifndef EMLINK 390#define EMLINK 9979 391#endif 392 393#endif // _LIBCPP_CERRNO 394