diff options
author | Max Kellermann <max@duempel.org> | 2014-07-30 21:58:37 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-07-30 22:10:31 +0200 |
commit | c8858f85d8366e36c588b1dcc7ef7eff40832dd0 (patch) | |
tree | 4a5a8bd89493537f3a7f92dfddac879f3f0bd01c /src | |
parent | d1bc46ffad08e070e24f775dd3e13201d97aeb5d (diff) | |
download | mpd-c8858f85d8366e36c588b1dcc7ef7eff40832dd0.tar.gz mpd-c8858f85d8366e36c588b1dcc7ef7eff40832dd0.tar.xz mpd-c8858f85d8366e36c588b1dcc7ef7eff40832dd0.zip |
util/Error: add method FormatLastError()
Diffstat (limited to 'src')
-rw-r--r-- | src/util/Error.cxx | 26 | ||||
-rw-r--r-- | src/util/Error.hxx | 6 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/util/Error.cxx b/src/util/Error.cxx index ef8282329..92b2cc5d0 100644 --- a/src/util/Error.cxx +++ b/src/util/Error.cxx @@ -145,4 +145,30 @@ Error::SetLastError(const char *prefix) SetLastError(GetLastError(), prefix); } +void +Error::FormatLastError(DWORD _code, const char *fmt, ...) +{ + char buffer[1024]; + va_list ap; + va_start(ap, fmt); + vsnprintf(buffer, sizeof(buffer), fmt, ap); + va_end(ap); + + SetLastError(_code, buffer); +} + +void +Error::FormatLastError(const char *fmt, ...) +{ + DWORD _code = GetLastError(); + + char buffer[1024]; + va_list ap; + va_start(ap, fmt); + vsnprintf(buffer, sizeof(buffer), fmt, ap); + va_end(ap); + + SetLastError(_code, buffer); +} + #endif diff --git a/src/util/Error.hxx b/src/util/Error.hxx index 82f01105f..ab66ae5cb 100644 --- a/src/util/Error.hxx +++ b/src/util/Error.hxx @@ -168,6 +168,12 @@ public: #ifdef WIN32 void SetLastError(DWORD _code, const char *prefix); void SetLastError(const char *prefix); + + gcc_printf(3,4) + void FormatLastError(DWORD code, const char *fmt, ...); + + gcc_printf(2,3) + void FormatLastError(const char *fmt, ...); #endif }; |