diff --git a/mrw/errno.cpp b/mrw/errno.cpp
index be7e6ac..944eecf 100644
--- a/mrw/errno.cpp
+++ b/mrw/errno.cpp
@@ -8,6 +8,9 @@
@license LGPL, see file COPYING
$Log$
+ Revision 1.3 2005/02/28 07:29:18 marc
+ added ifdef for non glibc (Solaris)
+
Revision 1.2 2005/02/18 15:53:07 marc
I'm so stupid, there's strerror for mapping errno to a string...
@@ -23,15 +26,28 @@
#include
#include
#include
+#ifndef __GLIBC__
+#include
+#endif
mrw::Errno::Errno() throw(): _errno(errno) {}
mrw::Errno::operator std::string() const throw(std::bad_exception) {
+#ifdef __GLIBC__
char error[1024];
- return strerror_r(_errno, error, 1024) ? error : std::string("errno=")+_errno;
+ return !strerror_r(_errno, error, 1024) ?
+ error : std::string("errno=")+_errno;
+#else
+ return mrw::ifelse(strerror(_errno), (std::string("errno=")+_errno).c_str());
+#endif
}
std::string mrw::Errno::string() const throw(std::bad_exception) {
+#ifdef __GLIBC__
char error[1024];
- return strerror_r(_errno, error, 1024) ? error : std::string("errno=")+_errno;
+ return !strerror_r(_errno, error, 1024) ?
+ error : std::string("errno=")+_errno;
+#else
+ return mrw::ifelse(strerror(_errno), (std::string("errno=")+_errno).c_str());
+#endif
}