diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2005-04-21 02:30:32 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2005-04-21 02:30:32 +0000 |
commit | b02566dc1c5b53a28f75b0bd6f16a44643fa79ad (patch) | |
tree | 9aa4bb995660e5a1847d222522a7cd6e3f933f2b /llvm/lib/System/Unix/Unix.h | |
parent | 2f72bafb60e87f61271d098f3d1a176d8e8c5751 (diff) | |
download | bcm5719-llvm-b02566dc1c5b53a28f75b0bd6f16a44643fa79ad.tar.gz bcm5719-llvm-b02566dc1c5b53a28f75b0bd6f16a44643fa79ad.zip |
For Bug 543:
Allow the ThrowErrno function to optionally accept an error number
parameter so that callers can specify the error number to be used.
llvm-svn: 21384
Diffstat (limited to 'llvm/lib/System/Unix/Unix.h')
-rw-r--r-- | llvm/lib/System/Unix/Unix.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/System/Unix/Unix.h b/llvm/lib/System/Unix/Unix.h index 2f57b68c8eb..741a817f454 100644 --- a/llvm/lib/System/Unix/Unix.h +++ b/llvm/lib/System/Unix/Unix.h @@ -66,24 +66,26 @@ # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif -inline void ThrowErrno(const std::string& prefix) { +inline void ThrowErrno(const std::string& prefix, int errnum = -1) { char buffer[MAXPATHLEN]; buffer[0] = 0; + if (errnum == -1) + errnum = errno; #ifdef HAVE_STRERROR_R // strerror_r is thread-safe. - if (errno) - strerror_r(errno,buffer,MAXPATHLEN-1); + if (errnum) + strerror_r(errnum,buffer,MAXPATHLEN-1); #elif HAVE_STRERROR // Copy the thread un-safe result of strerror into // the buffer as fast as possible to minimize impact // of collision of strerror in multiple threads. - if (errno) - strncpy(buffer,strerror(errno),MAXPATHLEN-1); + if (errnum) + strncpy(buffer,strerror(errnum),MAXPATHLEN-1); buffer[MAXPATHLEN-1] = 0; #else // Strange that this system doesn't even have strerror // but, oh well, just use a generic message - sprintf(buffer, "Error #%d", errno); + sprintf(buffer, "Error #%d", errnum); #endif throw prefix + ": " + buffer; } |