From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
To: Markus Armbruster <armbru@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: kwolf@redhat.com, stefanha@gmail.com, qemu-devel@nongnu.org,
lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH 05/13] error: define struct Error in only one place
Date: Mon, 21 Oct 2013 10:46:01 +0800 [thread overview]
Message-ID: <52649569.2050909@linux.vnet.ibm.com> (raw)
In-Reply-To: <87sivyu8lw.fsf@blackfin.pond.sub.org>
于 2013/10/18 19:22, Markus Armbruster 写道:
> Paolo Bonzini <pbonzini@redhat.com> writes:
>
>> Il 18/10/2013 03:11, Wenchao Xia ha scritto:
>>> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
>>> ---
>>> include/qapi/error.h | 5 ++++-
>>> qobject/qerror.c | 7 -------
>>> util/error.c | 6 ------
>>> 3 files changed, 4 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/include/qapi/error.h b/include/qapi/error.h
>>> index 7d4c696..8688aaf 100644
>>> --- a/include/qapi/error.h
>>> +++ b/include/qapi/error.h
>>> @@ -20,7 +20,10 @@
>>> * A class representing internal errors within QEMU. An error has a ErrorClass
>>> * code and a human message.
>>> */
>>> -typedef struct Error Error;
>>> +typedef struct Error {
>>> + char *msg;
>>> + ErrorClass err_class;
>>> +} Error;
>> Please add a comment that it should be treated as an opaque type.
> Or keep it opaque here, and complete the type in an internal header.
> But see below.
>
>> Paolo
>>
>>>
>>> /**
>>> * Set an indirect pointer to an error given a ErrorClass value and a
>>> diff --git a/qobject/qerror.c b/qobject/qerror.c
>>> index 3aee1cf..5b487f3 100644
>>> --- a/qobject/qerror.c
>>> +++ b/qobject/qerror.c
>>> @@ -97,13 +97,6 @@ void qerror_report(ErrorClass eclass, const char *fmt, ...)
>>> }
>>> }
>>>
>>> -/* Evil... */
>>> -struct Error
>>> -{
>>> - char *msg;
>>> - ErrorClass err_class;
>>> -};
>>> -
>>> void qerror_report_err(Error *err)
>>> {
>>> QError *qerr;
> qerr = qerror_new();
> loc_save(&qerr->loc);
> qerr->err_msg = g_strdup(err->msg);
> qerr->err_class = err->err_class;
>
> if (monitor_cur_is_qmp()) {
> monitor_set_error(cur_mon, qerr);
> } else {
> qerror_print(qerr);
> QDECREF(qerr);
> }
> }
>
> This is the only use of the "evil" duplicate. I suspect it could be
> cleaned up like this:
>
> qerr->err_msg = g_strdup(error_get_pretty(err));
> qerr->err_class = error_get_class(err);
>
> If that's true, the duplicate goes away, and we can keep the type
> opaque.
seems a smart idea, will use it.
>>> diff --git a/util/error.c b/util/error.c
>>> index ec0faa6..da0d221 100644
>>> --- a/util/error.c
>>> +++ b/util/error.c
>>> @@ -17,12 +17,6 @@
>>> #include "qapi-types.h"
>>> #include "qapi/qmp/qerror.h"
>>>
>>> -struct Error
>>> -{
>>> - char *msg;
>>> - ErrorClass err_class;
>>> -};
>>> -
>>> void error_set(Error **errp, ErrorClass err_class, const char *fmt, ...)
>>> {
>>> Error *err;
>>>
next prev parent reply other threads:[~2013-10-21 2:46 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-18 1:11 [Qemu-devel] [PATCH 00/13] trivial patches for event, error and monitor Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 01/13] block: use type MonitorEvent directly Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 02/13] block: do not include monitor.h in block.c Wenchao Xia
2013-10-18 9:36 ` Paolo Bonzini
2013-10-21 2:43 ` Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 03/13] qapi: move MonitorEvent define Wenchao Xia
2013-10-18 9:36 ` Paolo Bonzini
2013-10-18 12:38 ` Eric Blake
2013-10-21 2:44 ` Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 04/13] qapi: rename MonitorEvent to QEvent Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 05/13] error: define struct Error in only one place Wenchao Xia
2013-10-18 9:37 ` Paolo Bonzini
2013-10-18 11:22 ` Markus Armbruster
2013-10-21 2:46 ` Wenchao Xia [this message]
2013-10-18 1:11 ` [Qemu-devel] [PATCH 06/13] error: remove error_printf_unless_qmp() Wenchao Xia
2013-10-18 9:39 ` Paolo Bonzini
2013-10-18 11:29 ` Markus Armbruster
2013-10-18 1:11 ` [Qemu-devel] [PATCH 07/13] error: make error_print_loc() static Wenchao Xia
2013-10-18 12:39 ` Eric Blake
2013-10-18 1:11 ` [Qemu-devel] [PATCH 08/13] error: don't set sep when print progname Wenchao Xia
2013-10-18 9:43 ` Paolo Bonzini
2013-10-18 11:40 ` Markus Armbruster
2013-10-21 3:31 ` Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 09/13] error: print progname with error_vprintf() Wenchao Xia
2013-10-18 9:44 ` Paolo Bonzini
2013-10-21 3:33 ` Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 10/13] qerror: deref once in qerror_report() Wenchao Xia
2013-10-18 9:46 ` Paolo Bonzini
2013-10-21 3:35 ` Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 11/13] qerror: folder qerror emit logic Wenchao Xia
2013-10-18 9:49 ` Paolo Bonzini
2013-10-18 1:11 ` [Qemu-devel] [PATCH 12/13] monitor: hide *cur_mon in monitor_get_fd() Wenchao Xia
2013-10-18 9:51 ` Paolo Bonzini
2013-10-21 3:36 ` Wenchao Xia
2013-10-18 1:11 ` [Qemu-devel] [PATCH 13/13] stubs: do not call monitor_printf() Wenchao Xia
2013-10-18 9:52 ` Paolo Bonzini
2013-10-21 6:04 ` Wenchao Xia
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=52649569.2050909@linux.vnet.ibm.com \
--to=xiawenc@linux.vnet.ibm.com \
--cc=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.