/** @file $Id$ $Date$ $Author$ @copy © Marc Wäckerlin @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... Revision 1.1 2005/02/08 12:30:22 marc new in release 1.8.0 1 2 3 4 5 6 7 8 5678901234567890123456789012345678901234567890123456789012345678901234567890 */ #include #include #include #include #include mrw::Errno::Errno() noexcept: _errnoxxx(errno) {} mrw::Errno::operator std::string() const { return *this; } std::string mrw::Errno::string() const { char* pos(0); char error[1024]; #ifdef __GLIBC__ # if defined __USE_XOPEN2K && !defined __USE_GNU return strerror_r(errno=_errnoxxx, error, 1024)!=-1 ? error+std::string(" errno=")+_errnoxxx : std::string("errno=")+_errnoxxx; # else return (pos=strerror_r(errno=_errnoxxx, error, 1024)) ? pos+std::string(" errno=")+_errnoxxx : std::string("errno=")+_errnoxxx; # endif #else # if defined __USE_XOPEN2K && !defined __USE_GNU return strerror_r(errno=_errnoxxx, error, 1024)!=-1 ? error+std::string(" errno=")+_errnoxxx : std::string("errno=")+_errnoxxx; # else return (pos=strerror(errno=_errnoxxx)) ? error+std::string(" errno=")+_errnoxxx : std::string("errno=")+_errnoxxx; # endif #endif }