[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v10 06/10] error: Add error_set_win32 and error_setg
From: |
Tomoki Sekiyama |
Subject: |
[Qemu-devel] [PATCH v10 06/10] error: Add error_set_win32 and error_setg_win32 |
Date: |
Wed, 07 Aug 2013 11:40:11 -0400 |
User-agent: |
StGit/0.16 |
These functions help maintaining homogeneous formatting of error messages
with Windows error code and description (generated by
g_win32_error_message()).
Signed-off-by: Tomoki Sekiyama <address@hidden>
Reviewed-by: Michael Roth <address@hidden>
---
include/qapi/error.h | 13 +++++++++++++
util/error.c | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+)
diff --git a/include/qapi/error.h b/include/qapi/error.h
index ffd1cea..7d4c696 100644
--- a/include/qapi/error.h
+++ b/include/qapi/error.h
@@ -36,6 +36,15 @@ void error_set(Error **err, ErrorClass err_class, const char
*fmt, ...) GCC_FMT_
*/
void error_set_errno(Error **err, int os_error, ErrorClass err_class, const
char *fmt, ...) GCC_FMT_ATTR(4, 5);
+#ifdef _WIN32
+/**
+ * Set an indirect pointer to an error given a ErrorClass value and a
+ * printf-style human message, followed by a g_win32_error_message() string if
+ * @win32_err is not zero.
+ */
+void error_set_win32(Error **err, int win32_err, ErrorClass err_class, const
char *fmt, ...) GCC_FMT_ATTR(4, 5);
+#endif
+
/**
* Same as error_set(), but sets a generic error
*/
@@ -43,6 +52,10 @@ void error_set_errno(Error **err, int os_error, ErrorClass
err_class, const char
error_set(err, ERROR_CLASS_GENERIC_ERROR, fmt, ## __VA_ARGS__)
#define error_setg_errno(err, os_error, fmt, ...) \
error_set_errno(err, os_error, ERROR_CLASS_GENERIC_ERROR, fmt, ##
__VA_ARGS__)
+#ifdef _WIN32
+#define error_setg_win32(err, win32_err, fmt, ...) \
+ error_set_win32(err, win32_err, ERROR_CLASS_GENERIC_ERROR, fmt, ##
__VA_ARGS__)
+#endif
/**
* Helper for open() errors
diff --git a/util/error.c b/util/error.c
index 53b0435..ec0faa6 100644
--- a/util/error.c
+++ b/util/error.c
@@ -76,6 +76,41 @@ void error_setg_file_open(Error **errp, int os_errno, const
char *filename)
error_setg_errno(errp, os_errno, "Could not open '%s'", filename);
}
+#ifdef _WIN32
+
+void error_set_win32(Error **errp, int win32_err, ErrorClass err_class,
+ const char *fmt, ...)
+{
+ Error *err;
+ char *msg1;
+ va_list ap;
+
+ if (errp == NULL) {
+ return;
+ }
+ assert(*errp == NULL);
+
+ err = g_malloc0(sizeof(*err));
+
+ va_start(ap, fmt);
+ msg1 = g_strdup_vprintf(fmt, ap);
+ if (win32_err != 0) {
+ char *msg2 = g_win32_error_message(win32_err);
+ err->msg = g_strdup_printf("%s: %s (error: %x)", msg1, msg2,
+ (unsigned)win32_err);
+ g_free(msg2);
+ g_free(msg1);
+ } else {
+ err->msg = msg1;
+ }
+ va_end(ap);
+ err->err_class = err_class;
+
+ *errp = err;
+}
+
+#endif
+
Error *error_copy(const Error *err)
{
Error *err_new;
- [Qemu-devel] [PATCH v10 00/10] qemu-ga: fsfreeze on Windows using VSS, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 01/10] configure: Support configuring C++ compiler, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 03/10] checkpatch.pl: Check .cpp files, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 02/10] Add c++ keywords to QAPI helper script, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 04/10] Add a script to extract VSS SDK headers on POSIX system, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 06/10] error: Add error_set_win32 and error_setg_win32,
Tomoki Sekiyama <=
- [Qemu-devel] [PATCH v10 08/10] qemu-ga: Call Windows VSS requester in fsfreeze command handler, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 07/10] qemu-ga: Add Windows VSS provider and requester as DLL, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 10/10] QMP/qemu-ga-client: Make timeout longer for guest-fsfreeze-freeze command, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 05/10] qemu-ga: Add configure options to specify path to Windows/VSS SDK, Tomoki Sekiyama, 2013/08/07
- [Qemu-devel] [PATCH v10 09/10] qemu-ga: Install Windows VSS provider on `qemu-ga -s install', Tomoki Sekiyama, 2013/08/07
- Re: [Qemu-devel] [PATCH v10 00/10] qemu-ga: fsfreeze on Windows using VSS, Michael Roth, 2013/08/08