diff options
-rw-r--r-- | src/util/Error.cxx | 16 | ||||
-rw-r--r-- | src/util/Error.hxx | 9 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/util/Error.cxx b/src/util/Error.cxx index 1e6bd9cff..5675f4d81 100644 --- a/src/util/Error.cxx +++ b/src/util/Error.cxx @@ -29,6 +29,10 @@ const Domain errno_domain("errno"); +#ifdef WIN32 +const Domain win32_domain("win32"); +#endif + Error::~Error() {} void @@ -112,3 +116,15 @@ Error::FormatErrno(const char *fmt, ...) SetErrno(e, buffer); } + +#ifdef WIN32 + +void +Error::SetLastError(const char *prefix) +{ + DWORD _code = GetLastError(); + const char *msg = g_win32_error_message(_code); + Format(win32_domain, int(_code), "%s: %s", prefix, msg); +} + +#endif diff --git a/src/util/Error.hxx b/src/util/Error.hxx index a37211538..facb461dc 100644 --- a/src/util/Error.hxx +++ b/src/util/Error.hxx @@ -36,6 +36,11 @@ extern const Domain errno_domain; #include <windows.h> #define IgnoreError MPDIgnoreError #undef GetMessage + +/** + * Domain for GetLastError(). + */ +extern const Domain win32_domain; #endif /** @@ -143,6 +148,10 @@ public: void SetErrno(const char *prefix); void FormatErrno(const char *prefix, ...); void FormatErrno(int e, const char *prefix, ...); + +#ifdef WIN32 + void SetLastError(const char *prefix); +#endif }; /** |