| /* 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) | |
| #include KWSYS_HEADER(Encoding.hxx) | |
| // Work-around CMake dependency scanning limitation. This must | |
| // duplicate the above list of headers. | |
| #if 0 | |
| # include "Encoding.hxx.in" | |
| # 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: { | |
| LPWSTR message = NULL; | |
| FormatMessageW( | |
| FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | | |
| FORMAT_MESSAGE_IGNORE_INSERTS, | |
| NULL, this->Windows_, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), | |
| (LPWSTR)&message, 0, NULL); | |
| err = kwsys::Encoding::ToNarrow(message); | |
| LocalFree(message); | |
| } break; | |
| #endif | |
| default: | |
| break; | |
| } | |
| return err; | |
| } | |
| } // namespace KWSYS_NAMESPACE |