You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
76
external/llvm/lib/Support/Errno.cpp
vendored
76
external/llvm/lib/Support/Errno.cpp
vendored
@ -1,76 +0,0 @@
|
||||
//===- Errno.cpp - errno support --------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements the errno wrappers.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Support/Errno.h"
|
||||
#include "llvm/Config/config.h" // Get autoconf configuration settings
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <string.h>
|
||||
|
||||
#if HAVE_ERRNO_H
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//=== WARNING: Implementation here must contain only TRULY operating system
|
||||
//=== independent code.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
namespace llvm {
|
||||
namespace sys {
|
||||
|
||||
#if HAVE_ERRNO_H
|
||||
std::string StrError() {
|
||||
return StrError(errno);
|
||||
}
|
||||
#endif // HAVE_ERRNO_H
|
||||
|
||||
std::string StrError(int errnum) {
|
||||
std::string str;
|
||||
if (errnum == 0)
|
||||
return str;
|
||||
#if defined(HAVE_STRERROR_R) || HAVE_DECL_STRERROR_S
|
||||
const int MaxErrStrLen = 2000;
|
||||
char buffer[MaxErrStrLen];
|
||||
buffer[0] = '\0';
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_STRERROR_R
|
||||
// strerror_r is thread-safe.
|
||||
#if defined(__GLIBC__) && defined(_GNU_SOURCE)
|
||||
// glibc defines its own incompatible version of strerror_r
|
||||
// which may not use the buffer supplied.
|
||||
str = strerror_r(errnum, buffer, MaxErrStrLen - 1);
|
||||
#else
|
||||
strerror_r(errnum, buffer, MaxErrStrLen - 1);
|
||||
str = buffer;
|
||||
#endif
|
||||
#elif HAVE_DECL_STRERROR_S // "Windows Secure API"
|
||||
strerror_s(buffer, MaxErrStrLen - 1, errnum);
|
||||
str = buffer;
|
||||
#elif defined(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.
|
||||
str = strerror(errnum);
|
||||
#else
|
||||
// Strange that this system doesn't even have strerror
|
||||
// but, oh well, just use a generic message
|
||||
raw_string_ostream stream(str);
|
||||
stream << "Error #" << errnum;
|
||||
stream.flush();
|
||||
#endif
|
||||
return str;
|
||||
}
|
||||
|
||||
} // namespace sys
|
||||
} // namespace llvm
|
Reference in New Issue
Block a user