14 #include "llvm/ADT/SmallString.h"
15 #include "llvm/ADT/StringRef.h"
16 #include "llvm/Support/Errno.h"
17 #include "llvm/Support/FormatProviders.h"
22 #include <system_error>
25 #include <mach/mach.h>
40 Status::Status() : m_string() {}
43 : m_code(err), m_type(type), m_string() {}
56 va_start(args, format);
69 error = llvm::handleErrors(
71 std::error_code ec = e->convertToErrorCode();
72 if (ec.category() == std::generic_category()) {
74 m_type = ErrorType::eErrorTypePOSIX;
75 return llvm::Error::success();
91 return llvm::Error::success();
93 return llvm::errorCodeToError(
94 std::error_code(
m_code, std::generic_category()));
95 return llvm::make_error<llvm::StringError>(
AsCString(),
96 llvm::inconvertibleErrorCode());
103 char *buffer =
nullptr;
107 if (::FormatMessageA(
108 FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
109 FORMAT_MESSAGE_MAX_WIDTH_MASK,
110 NULL, error_code, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
111 (LPSTR)&buffer, 0, NULL)) {
116 else if (::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
117 FORMAT_MESSAGE_FROM_SYSTEM |
118 FORMAT_MESSAGE_MAX_WIDTH_MASK,
119 NULL, error_code, 0, (LPSTR)&buffer, 0, NULL)) {
137 #if defined(__APPLE__)
138 if (
const char *s = ::mach_error_string(
m_code))
158 if (default_error_str)
199 const char *format, ...) {
202 if (format !=
nullptr && format[0]) {
204 va_start(args, format);
242 if (!err_str.empty()) {
256 if (format !=
nullptr && format[0]) {
258 va_start(args, format);
269 if (format !=
nullptr && format[0]) {
275 llvm::SmallString<1024> buf;
292 llvm::format_provider<llvm::StringRef>::format(
error.AsCString(),
OS,