δΊ 2013/10/18 19:22, Markus Armbruster ει: > Paolo Bonzini <pbonz...@redhat.com> writes: > >> Il 18/10/2013 03:11, Wenchao Xia ha scritto: >>> Signed-off-by: Wenchao Xia <xiaw...@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; >>>