Commit 08bf4f74 authored by Max Kellermann's avatar Max Kellermann

system/FatalError: add FatalSystemError() overload with WIN32 error code

parent a838a034
......@@ -74,23 +74,31 @@ FatalError(const char *msg, const Error &error)
FormatFatalError("%s: %s", msg, error.GetMessage());
}
#ifdef WIN32
void
FatalSystemError(const char *msg, DWORD code)
{
char buffer[256];
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, code, 0,
buffer, sizeof(buffer), nullptr);
FormatFatalError("%s: %s", msg, buffer);
}
#endif
void
FatalSystemError(const char *msg)
{
const char *system_error;
#ifdef WIN32
char buffer[256];
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, GetLastError(), 0,
buffer, sizeof(buffer), nullptr);
system_error = buffer;
FatalSystemError(msg, GetLastError());
#else
system_error = strerror(errno);
#endif
const char *system_error = strerror(errno);
FormatError(fatal_error_domain, "%s: %s", msg, system_error);
Abort();
#endif
}
void
......
......@@ -23,6 +23,10 @@
#include "check.h"
#include "Compiler.h"
#ifdef WIN32
#include <windef.h>
#endif
class Error;
/**
......@@ -53,6 +57,14 @@ gcc_noreturn
void
FatalSystemError(const char *msg);
#ifdef WIN32
gcc_noreturn
void
FatalSystemError(const char *msg, DWORD code);
#endif
gcc_noreturn
void
FormatFatalSystemError(const char *fmt, ...);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment