
Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit e19a5668f01bb9d96440ce96e777749d6e92562d (e19a5668f01bb9d96440ce96e777749d6e92562d). Upstream Shortlog ----------------- Mathieu Westphal (1): e28d7282 DynamicLoader: Add RTLD_GLOBAL as a supported flag on linux Sean McBride (8): 704a63d4 Replace sprintf with snprintf f9f6d67b Replace non-standard _snprintf with standard snprintf f771c009 Fix -Wunused-macros warning by defining under same conditions as usage f3d4b12b Fix Wmissing-prototypes warnings by making functions static 6f4a1826 Fix Wmissing-variable-declarations by declaring variable in a header 31d25023 Fix all Wold-style-cast warnings 0f44b620 Fix Wreserved-id-macro warning by removing double underscore 44718539 Fix for extraneous semi-colon warning
61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
|
|
#include "kwsysPrivate.h"
|
|
#include KWSYS_HEADER(Status.hxx)
|
|
|
|
// Work-around CMake dependency scanning limitation. This must
|
|
// duplicate the above list of headers.
|
|
#if 0
|
|
# include "Status.hxx.in"
|
|
#endif
|
|
|
|
#include <cerrno>
|
|
#include <cstring>
|
|
#include <string>
|
|
|
|
#if defined(_WIN32)
|
|
# include <windows.h>
|
|
#endif
|
|
|
|
namespace KWSYS_NAMESPACE {
|
|
|
|
Status Status::POSIX_errno()
|
|
{
|
|
return Status::POSIX(errno);
|
|
}
|
|
|
|
#ifdef _WIN32
|
|
Status Status::Windows_GetLastError()
|
|
{
|
|
return Status::Windows(GetLastError());
|
|
}
|
|
#endif
|
|
|
|
std::string Status::GetString() const
|
|
{
|
|
std::string err;
|
|
switch (this->Kind_) {
|
|
case Kind::Success:
|
|
err = "Success";
|
|
break;
|
|
case Kind::POSIX:
|
|
err = strerror(this->POSIX_);
|
|
break;
|
|
#ifdef _WIN32
|
|
case Kind::Windows: {
|
|
LPSTR message = NULL;
|
|
DWORD size = FormatMessageA(
|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
|
|
FORMAT_MESSAGE_IGNORE_INSERTS,
|
|
NULL, this->Windows_, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
|
(LPSTR)&message, 0, NULL);
|
|
err = std::string(message, size);
|
|
LocalFree(message);
|
|
} break;
|
|
#endif
|
|
}
|
|
return err;
|
|
}
|
|
|
|
} // namespace KWSYS_NAMESPACE
|