From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: Tomoki Sekiyama <tomoki.sekiyama@hds.com>, qemu-devel@nongnu.org
Cc: libaiqing@huawei.com, ghammer@redhat.com, stefanha@gmail.com,
lcapitulino@redhat.com, vrozenfe@redhat.com, pbonzini@redhat.com,
seiji.aguchi@hds.com, lersek@redhat.com, areis@redhat.com
Subject: Re: [Qemu-devel] [PATCH v7 06/10] error: Add error_set_win32 and error_setg_win32
Date: Mon, 22 Jul 2013 16:50:55 -0500 [thread overview]
Message-ID: <20130722215055.16294.60029@loki> (raw)
In-Reply-To: <20130715162049.16676.40012.stgit@outback>
Quoting Tomoki Sekiyama (2013-07-15 11:20:49)
> 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 <tomoki.sekiyama@hds.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
> 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;
next prev parent reply other threads:[~2013-07-22 21:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-15 16:20 [Qemu-devel] [PATCH v7 00/10] qemu-ga: fsfreeze on Windows using VSS Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 01/10] configure: Support configuring C++ compiler Tomoki Sekiyama
2013-07-22 20:53 ` Michael Roth
2013-07-23 21:49 ` Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 02/10] Add c++ keywords to QAPI helper script Tomoki Sekiyama
2013-07-22 20:55 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 03/10] checkpatch.pl: Check .cpp files Tomoki Sekiyama
2013-07-22 21:21 ` Michael Roth
2013-07-23 21:49 ` Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 04/10] Add a script to extract VSS SDK headers on POSIX system Tomoki Sekiyama
2013-07-22 21:27 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 05/10] qemu-ga: Add configure options to specify path to Windows/VSS SDK Tomoki Sekiyama
2013-07-22 21:42 ` Michael Roth
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 06/10] error: Add error_set_win32 and error_setg_win32 Tomoki Sekiyama
2013-07-22 21:50 ` Michael Roth [this message]
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 07/10] qemu-ga: Add Windows VSS provider and requester as DLL Tomoki Sekiyama
2013-07-15 16:20 ` [Qemu-devel] [PATCH v7 08/10] qemu-ga: Call Windows VSS requester in fsfreeze command handler Tomoki Sekiyama
2013-07-15 16:21 ` [Qemu-devel] [PATCH v7 09/10] qemu-ga: Install Windows VSS provider on `qemu-ga -s install' Tomoki Sekiyama
2013-07-15 16:21 ` [Qemu-devel] [PATCH v7 10/10] QMP/qemu-ga-client: Make timeout longer for guest-fsfreeze-freeze command Tomoki Sekiyama
2013-07-18 22:19 ` [Qemu-devel] [PATCH v7 00/10] qemu-ga: fsfreeze on Windows using VSS Michael Roth
2013-07-19 3:40 ` Tomoki Sekiyama
2013-07-22 20:02 ` Tomoki Sekiyama
2013-07-22 20:33 ` Michael Roth
2013-07-22 21:33 ` Tomoki Sekiyama
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130722215055.16294.60029@loki \
--to=mdroth@linux.vnet.ibm.com \
--cc=areis@redhat.com \
--cc=ghammer@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=lersek@redhat.com \
--cc=libaiqing@huawei.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=seiji.aguchi@hds.com \
--cc=stefanha@gmail.com \
--cc=tomoki.sekiyama@hds.com \
--cc=vrozenfe@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).