XRootD
Loading...
Searching...
No Matches
XrdSysE2T.cc File Reference
#include <cstdio>
#include <cstring>
#include <map>
#include <string>
#include "XrdSys/XrdSysPthread.hh"
+ Include dependency graph for XrdSysE2T.cc:

Go to the source code of this file.

Macros

#define ERRNOBASE   0
 

Functions

const char * XrdSysE2T (int errcode)
 

Macro Definition Documentation

◆ ERRNOBASE

#define ERRNOBASE   0

Definition at line 40 of file XrdSysE2T.cc.

Referenced by XrdSysE2T().

Function Documentation

◆ XrdSysE2T()

const char * XrdSysE2T ( int errcode)

Convert error number to string in a thread-safe way.

Parameters
errcodeThe error number (usually from errno).
Returns
A non-nil pointer to the string holding the error description.

Definition at line 99 of file XrdSysE2T.cc.

100{
101 char eBuff[80];
102
103// Check if we can return this immediately
104//
105 if (errcode == 0) return Errno2String[0];
106 if (errcode > ERRNOBASE && errcode <= ERRNOBASE + maxErrno)
107 return Errno2String[errcode - ERRNOBASE];
108
109// If this is a negative value, then return a generic message
110//
111 if (errcode < 0) return "negative error";
112
113// Our errno registration wasn't sufficient, so check if it's already
114// registered and if not, register it.
115//
116 e2sMutex.Lock();
117 std::string &eTxt = e2sMap[errcode];
118 if (!eTxt.size())
119 {snprintf(eBuff, sizeof(eBuff), "unknown error %d", errcode);
120 eTxt = std::string(eBuff);
121 e2sMap[errcode] = eTxt;
122 }
123
124// Return the result
125//
126 e2sMutex.UnLock();
127 return eTxt.c_str();
128}
#define ERRNOBASE
Definition XrdSysE2T.cc:40

References ERRNOBASE.

Referenced by XrdOucGMap::XrdOucGMap(), XrdXmlRdrTiny::XrdXmlRdrTiny(), XrdXmlRdrXml2::XrdXmlRdrXml2(), XrdTlsSocket::Accept(), XrdSys::IOEvents::PollE::Begin(), XrdSys::IOEvents::PollKQ::Begin(), XrdSys::IOEvents::PollPoll::Begin(), XrdSys::IOEvents::PollPort::Begin(), XrdSysLogger::Bind(), XrdCl::CheckSumManager::Calculate(), XrdCl::LocalFileHandler::Close(), XrdCpConfig::Config(), XrdSysLogging::Configure(), XrdTlsSocket::Connect(), XrdXmlMetaLink::Convert(), DoTail(), XrdSysError::ec2text(), XrdDigFS::Emsg(), XrdSfsNative::Emsg(), XrdSecProtocolsss::eMsg(), Ereason(), XrdOucUtils::eText(), XrdW41Dirs::Expand(), Fatal(), XrdNetIF::GetIF(), XrdSys::IOEvents::Poller::GetRequest(), main(), main(), XrdCl::AsyncSocketHandler::OnConnectionReturn(), XrdCl::LogOutFile::Open(), XrdSsiFileSess::open(), XrdTls::RC2Text(), XrdCl::LocalFileHandler::Read(), XrdCl::LocalFileHandler::ReadV(), XrdXrootdAioTask::SendError(), XrdW41Gate::Serialize(), XrdNetAddr::Set(), XrdOucECMsg::SetErrno(), XrdCl::JobManager::Start(), XrdCl::PollerBuiltIn::Start(), XrdCl::TaskManager::Start(), XrdCl::LocalFileHandler::Stat(), XrdCl::TaskManager::Stop(), XrdCl::LocalFileHandler::Sync(), XrdOfsCPFile::Target(), XrdCl::Status::ToString(), XrdPfc::FPurgeState::TraverseNamespace(), XrdCl::LocalFileHandler::Truncate(), XrdOucUtils::ValPath(), XrdCl::LocalFileHandler::VectorRead(), XrdCl::LocalFileHandler::VectorWrite(), XrdSecProtect::Verify(), XrdW41Gate::Wait41(), XrdCl::AsyncHSWriter::Write(), XrdCl::AsyncMsgWriter::Write(), XrdCl::LocalFileHandler::Write(), XrdCl::LogOutFile::Write(), XrdSsiFileSess::write(), XrdCl::LocalFileHandler::WriteV(), XrdSecsssAdmin_addKey(), XrdSecsssAdmin_delKey(), XrdSecsssAdmin_insKey(), XrdOssSys::xspaceBuild(), and XrdSysLogger::zHandler().

+ Here is the caller graph for this function: