/* 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 #include #include #if defined(_WIN32) # include #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