X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FException.cc;h=ade974acfdf5c61e9b742925af4418aeb95f93b2;hb=9a988902090d28007578e93bffd809f6bd913155;hp=a5349100137cb5434ff65ec61c6565953b3bbd3c;hpb=c52cd7d87dbb525c1267aad27391b8b7365dbb57;p=senf.git diff --git a/Utils/Exception.cc b/Utils/Exception.cc index a534910..ade974a 100644 --- a/Utils/Exception.cc +++ b/Utils/Exception.cc @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -20,21 +20,35 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// Definition of non-inline non-template functions +/** \file + \brief Exception non-inline non-template implementation */ #include "Exception.hh" //#include "Exception.ih" // Custom includes #include +#include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -prefix_ char const * satcom::lib::SystemException::what() +prefix_ void senf::SystemException::init() +{ + // We normallyl don't want to consume memory in an exception, + // however all other solutions to format the message are terribly + // ugly (since thay must use a static and shared buffer ...) + std::stringstream s; + if (where) + s << where << ": "; + s << "(" << err << ") " << std::strerror(err); + buffer_ = s.str(); +} + +prefix_ char const * senf::SystemException::what() const throw() { - return std::strerror(this->err); + return buffer_.c_str(); } ///////////////////////////////cc.e//////////////////////////////////////// @@ -43,5 +57,8 @@ prefix_ char const * satcom::lib::SystemException::what() // Local Variables: // mode: c++ -// c-file-style: "satcom" +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: