diff options
Diffstat (limited to '')
-rw-r--r-- | src/error.cpp | 75 |
1 files changed, 35 insertions, 40 deletions
diff --git a/src/error.cpp b/src/error.cpp index 10b668b..320c5d0 100644 --- a/src/error.cpp +++ b/src/error.cpp @@ -9,45 +9,40 @@ #include <string> -namespace pdb -{ - namespace error - { - namespace - { - std::string trim_trailing_newline(const std::string& s) - { - const auto last_pos = s.find_last_not_of("\r\n"); - if (std::string::npos == last_pos) - return {}; - return s.substr(0, last_pos + 1); - } - } - - std::string CategoryWindows::message(int code) const - { - char* buf; - - const auto nbwritten = FormatMessageA( - FORMAT_MESSAGE_ALLOCATE_BUFFER - | FORMAT_MESSAGE_FROM_SYSTEM - | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - code, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - reinterpret_cast<char*>(&buf), - 0, - NULL); - - if (0 == nbwritten) - { - LocalFree(buf); - return "Couldn't format the error message"; - } - - std::string msg{buf, nbwritten}; - LocalFree(buf); - return trim_trailing_newline(msg); - } +namespace pdb { +namespace error { +namespace { + +std::string trim_trailing_newline(const std::string& s) { + const auto last_pos = s.find_last_not_of("\r\n"); + if (std::string::npos == last_pos) + return {}; + return s.substr(0, last_pos + 1); +} + +} // namespace + +std::string CategoryWindows::message(int code) const { + char* buf; + + const auto nbwritten = FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + code, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + reinterpret_cast<char*>(&buf), + 0, + NULL); + + if (0 == nbwritten) { + LocalFree(buf); + return "Couldn't format the error message"; } + + std::string msg{buf, nbwritten}; + LocalFree(buf); + return trim_trailing_newline(msg); } + +} // namespace error +} // namespace pdb |