diff --git a/include/__config b/include/__config index c9718cf7..b75176c8 100644 --- a/include/__config +++ b/include/__config @@ -635,6 +635,17 @@ template struct __static_assert_check {}; #define _LIBCPP_WCTYPE_IS_MASK #endif +#if defined(ELAST) +#define _LIBCPP_ELAST ELAST +#elif defined(__linux__) +#define _LIBCPP_ELAST 4095 +#elif defined(_NEWLIB_VERSION) +#define _LIBCPP_ELAST __ELASTERROR +#else +// Warn here so that the person doing the libcxx port has an easier time: +#warning This platform's ELAST hasn't been ported yet +#endif + #ifndef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR # define _LIBCPP_TRIVIAL_PAIR_COPY_CTOR 1 #endif diff --git a/src/ios.cpp b/src/ios.cpp index 260ec763..b71d7da1 100644 --- a/src/ios.cpp +++ b/src/ios.cpp @@ -7,6 +7,7 @@ // //===----------------------------------------------------------------------===// +#include "__config" #include "ios" #include "streambuf" #include "istream" @@ -52,11 +53,9 @@ string __iostream_category::message(int ev) const { if (ev != static_cast(io_errc::stream) -#ifdef ELAST - && ev <= ELAST -#elif defined(__linux__) - && ev <= 4095 -#endif // ELAST +#ifdef _LIBCPP_ELAST + && ev <= _LIBCPP_ELAST +#endif // _LIBCPP_ELAST ) return __do_message::message(ev); return string("unspecified iostream_category error"); diff --git a/src/system_error.cpp b/src/system_error.cpp index d5cb2d4a..9c8adc4f 100644 --- a/src/system_error.cpp +++ b/src/system_error.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #define _LIBCPP_BUILDING_SYSTEM_ERROR +#include "__config" #include "system_error" #include "string" #include "cstring" @@ -65,13 +66,10 @@ __generic_error_category::name() const _NOEXCEPT string __generic_error_category::message(int ev) const { -#ifdef ELAST - if (ev > ELAST) +#ifdef _LIBCPP_ELAST + if (ev > _LIBCPP_ELAST) return string("unspecified generic_category error"); -#elif defined(__linux__) - if (ev > 4095) - return string("unspecified generic_category error"); -#endif // ELAST +#endif // _LIBCPP_ELAST return __do_message::message(ev); } @@ -100,26 +98,20 @@ __system_error_category::name() const _NOEXCEPT string __system_error_category::message(int ev) const { -#ifdef ELAST - if (ev > ELAST) +#ifdef _LIBCPP_ELAST + if (ev > _LIBCPP_ELAST) return string("unspecified system_category error"); -#elif defined(__linux__) - if (ev > 4095) - return string("unspecified system_category error"); -#endif // ELAST +#endif // _LIBCPP_ELAST return __do_message::message(ev); } error_condition __system_error_category::default_error_condition(int ev) const _NOEXCEPT { -#ifdef ELAST - if (ev > ELAST) +#ifdef _LIBCPP_ELAST + if (ev > _LIBCPP_ELAST) return error_condition(ev, system_category()); -#elif defined(__linux__) - if (ev > 4095) - return error_condition(ev, system_category()); -#endif // ELAST +#endif // _LIBCPP_ELAST return error_condition(ev, generic_category()); }