diff options
Diffstat (limited to 'klm/util/exception.cc')
-rw-r--r-- | klm/util/exception.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/klm/util/exception.cc b/klm/util/exception.cc new file mode 100644 index 00000000..dd337a76 --- /dev/null +++ b/klm/util/exception.cc @@ -0,0 +1,35 @@ +#include "util/exception.hh" + +#include <errno.h> +#include <string.h> + +namespace util { + +Exception::Exception() throw() {} +Exception::~Exception() throw() {} + +namespace { +// The XOPEN version. +const char *HandleStrerror(int ret, const char *buf) { + if (!ret) return buf; + return NULL; +} + +// The GNU version. +const char *HandleStrerror(const char *ret, const char *buf) { + return ret; +} +} // namespace + +ErrnoException::ErrnoException() throw() : errno_(errno) { + char buf[200]; + buf[0] = 0; + const char *add = HandleStrerror(strerror_r(errno, buf, 200), buf); + if (add) { + *this << add << ' '; + } +} + +ErrnoException::~ErrnoException() throw() {} + +} // namespace util |