|
|
|
/* 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
|