diff options
Diffstat (limited to 'libstdc++-v3/src/system_error.cc')
| -rw-r--r-- | libstdc++-v3/src/system_error.cc | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/libstdc++-v3/src/system_error.cc b/libstdc++-v3/src/system_error.cc index 6724ef75a1f..dd950eba150 100644 --- a/libstdc++-v3/src/system_error.cc +++ b/libstdc++-v3/src/system_error.cc @@ -36,15 +36,12 @@ namespace { using std::string; - - struct gnu_error_category : public std::error_category + + struct generic_error_category : public std::error_category { virtual const char* name() const - { - const char* s = "GNU"; - return s; - } + { return "generic"; } virtual string message(int i) const @@ -55,17 +52,30 @@ namespace } }; - const gnu_error_category gnu_category; -} + struct system_error_category : public std::error_category + { + virtual const char* + name() const + { return "system"; } -_GLIBCXX_BEGIN_NAMESPACE(std) + virtual string + message(int i) const + { + // XXX locale issues: how does one get or set loc. + // _GLIBCXX_HAVE_STRERROR_L, strerror_l(i, cloc) + return string(strerror(i)); + } + }; - const error_category& - get_posix_category() { return gnu_category; } + const generic_error_category generic_category_instance; + const system_error_category system_category_instance; +} - const error_category& - get_system_category() { return gnu_category; } +_GLIBCXX_BEGIN_NAMESPACE(std) + const error_category& system_category = system_category_instance; + const error_category& generic_category = generic_category_instance; + system_error::~system_error() throw() { } error_condition |
