summaryrefslogtreecommitdiff
path: root/libstdc++-v3/src/system_error.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/src/system_error.cc')
-rw-r--r--libstdc++-v3/src/system_error.cc36
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