From f6d74012b7a583bddf2e3b824193ade91fe09ce7 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 17 Oct 2013 18:46:56 +0200 Subject: util/Error: add method SetLastError() --- src/util/Error.cxx | 16 ++++++++++++++++ src/util/Error.hxx | 9 +++++++++ 2 files changed, 25 insertions(+) (limited to 'src/util') 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 #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 }; /** -- cgit v1.2.3