diff --git a/include/qapi/error.h b/include/qapi/error.h index 34af4e103f..692e01346e 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -44,8 +44,8 @@ void error_set_errno(Error **errp, int os_error, ErrorClass err_class, * printf-style human message, followed by a g_win32_error_message() string if * @win32_err is not zero. */ -void error_set_win32(Error **errp, int win32_err, ErrorClass err_class, - const char *fmt, ...) GCC_FMT_ATTR(4, 5); +void error_setg_win32(Error **errp, int win32_err, const char *fmt, ...) + GCC_FMT_ATTR(3, 4); #endif /** @@ -56,11 +56,6 @@ void error_setg(Error **errp, const char *fmt, ...) #define error_setg_errno(errp, os_error, fmt, ...) \ error_set_errno(errp, os_error, ERROR_CLASS_GENERIC_ERROR, \ fmt, ## __VA_ARGS__) -#ifdef _WIN32 -#define error_setg_win32(errp, win32_err, fmt, ...) \ - error_set_win32(errp, win32_err, ERROR_CLASS_GENERIC_ERROR, \ - fmt, ## __VA_ARGS__) -#endif /** * Helper for open() errors diff --git a/qga/vss-win32.c b/qga/vss-win32.c index 0e4095736e..e1f539835c 100644 --- a/qga/vss-win32.c +++ b/qga/vss-win32.c @@ -150,9 +150,8 @@ void qga_vss_fsfreeze(int *nr_volume, Error **errp, bool freeze) const char *func_name = freeze ? "requester_freeze" : "requester_thaw"; QGAVSSRequesterFunc func; ErrorSet errset = { - .error_set = (ErrorSetFunc)error_set_win32, - .errp = (void **)errp, - .err_class = ERROR_CLASS_GENERIC_ERROR + .error_setg_win32 = error_setg_win32, + .errp = errp, }; func = (QGAVSSRequesterFunc)GetProcAddress(provider_lib, func_name); diff --git a/qga/vss-win32/requester.cpp b/qga/vss-win32/requester.cpp index 922e74ddfc..b130fee934 100644 --- a/qga/vss-win32/requester.cpp +++ b/qga/vss-win32/requester.cpp @@ -24,7 +24,7 @@ #define VSS_TIMEOUT_EVENT_MSEC 10 #define err_set(e, err, fmt, ...) \ - ((e)->error_set((e)->errp, err, (e)->err_class, fmt, ## __VA_ARGS__)) + ((e)->error_setg_win32((e)->errp, err, fmt, ## __VA_ARGS__)) #define err_is_set(e) ((e)->errp && *(e)->errp) diff --git a/qga/vss-win32/requester.h b/qga/vss-win32/requester.h index 374f9b8d16..0a8d048874 100644 --- a/qga/vss-win32/requester.h +++ b/qga/vss-win32/requester.h @@ -20,13 +20,14 @@ extern "C" { #endif +struct Error; + /* Callback to set Error; used to avoid linking glib to the DLL */ -typedef void (*ErrorSetFunc)(void **errp, int win32_err, int err_class, - const char *fmt, ...) GCC_FMT_ATTR(4, 5); +typedef void (*ErrorSetFunc)(struct Error **errp, int win32_err, + const char *fmt, ...) GCC_FMT_ATTR(3, 4); typedef struct ErrorSet { - ErrorSetFunc error_set; - void **errp; - int err_class; + ErrorSetFunc error_setg_win32; + struct Error **errp; } ErrorSet; STDAPI requester_init(void); diff --git a/util/error.c b/util/error.c index 8f12f67012..9620f2a1f6 100644 --- a/util/error.c +++ b/util/error.c @@ -96,8 +96,7 @@ void error_setg_file_open(Error **errp, int os_errno, const char *filename) #ifdef _WIN32 -void error_set_win32(Error **errp, int win32_err, ErrorClass err_class, - const char *fmt, ...) +void error_setg_win32(Error **errp, int win32_err, const char *fmt, ...) { va_list ap; char *msg1, *msg2; @@ -107,7 +106,7 @@ void error_set_win32(Error **errp, int win32_err, ErrorClass err_class, } va_start(ap, fmt); - error_setv(errp, err_class, fmt, ap); + error_setv(errp, ERROR_CLASS_GENERIC_ERROR, fmt, ap); va_end(ap); if (win32_err != 0) {