[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer |
Date: |
Thu, 02 Aug 2012 13:23:58 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Luiz Capitulino <address@hidden> writes:
> Helps dropping/modifying qerror functions.
>
> Signed-off-by: Luiz Capitulino <address@hidden>
> ---
> qerror.c | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/qerror.c b/qerror.c
> index 5efccec..59025ea 100644
> --- a/qerror.c
> +++ b/qerror.c
> @@ -346,10 +346,10 @@ static QError *qerror_new(void)
> return qerr;
> }
>
> -static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError *qerr,
> - const char *fmt, va_list *va)
> +static QDict *error_obj_from_fmt_no_fail(const char *fmt, va_list *va)
Elsewhere, we use FOO_nofail() for a variant of FOO() that must not
fail.
Call this function just error_obj_from_fmt()?
Or if you think the name must convey it can't fail:
error_obj_from_fmt_nofail()?
> {
> QObject *obj;
> + QDict *ret;
>
> obj = qobject_from_jsonv(fmt, va);
> if (!obj) {
> @@ -361,9 +361,8 @@ static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError
> *qerr,
> abort();
> }
>
> - qerr->error = qobject_to_qdict(obj);
> -
> - obj = qdict_get(qerr->error, "class");
> + ret = qobject_to_qdict(obj);
> + obj = qdict_get(ret, "class");
> if (!obj) {
> fprintf(stderr, "missing 'class' key in '%s'\n", fmt);
> abort();
> @@ -372,8 +371,8 @@ static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError
> *qerr,
> fprintf(stderr, "'class' key value should be a string in '%s'\n",
> fmt);
> abort();
> }
> -
> - obj = qdict_get(qerr->error, "data");
> +
> + obj = qdict_get(ret, "data");
> if (!obj) {
> fprintf(stderr, "missing 'data' key in '%s'\n", fmt);
> abort();
> @@ -382,9 +381,11 @@ static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError
> *qerr,
> fprintf(stderr, "'data' key value should be a dict in '%s'\n", fmt);
> abort();
> }
> +
> + return ret;
> }
>
> -static void qerror_set_desc(QError *qerr, const char *fmt)
> +static const QErrorStringTable *get_desc_no_fail(const char *fmt)
Likewise.
> {
> int i;
>
> @@ -392,8 +393,7 @@ static void qerror_set_desc(QError *qerr, const char *fmt)
>
> for (i = 0; qerror_table[i].error_fmt; i++) {
> if (strcmp(qerror_table[i].error_fmt, fmt) == 0) {
> - qerr->entry = &qerror_table[i];
> - return;
> + return &qerror_table[i];
> }
> }
>
> @@ -426,8 +426,8 @@ static QError *qerror_from_info(const char *file, int
> linenr, const char *func,
> qerr->file = file;
> qerr->func = func;
>
> - qerror_set_data(qerr, fmt, va);
> - qerror_set_desc(qerr, fmt);
> + qerr->error = error_obj_from_fmt_no_fail(fmt, va);
> + qerr->entry = get_desc_no_fail(fmt);
>
> return qerr;
> }
Turns side effects on qerr into a nice clean return values. Good!
- [Qemu-devel] [PATCH v1 00/34]: add new error format, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 01/34] monitor: drop unused monitor debug code, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 02/34] qerror: QERR_AMBIGUOUS_PATH: drop %(object) from human msg, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 03/34] qerror: QERR_DEVICE_ENCRYPTED: add filename info to human msg, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 04/34] qerror: reduce public exposure, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer, Luiz Capitulino, 2012/08/01
- Re: [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer,
Markus Armbruster <=
- [Qemu-devel] [PATCH 05/34] qerror: drop qerror_abort(), Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 08/34] qerror: qerror_format(): return an allocated string, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 07/34] qerror: QError: drop file, linenr, func, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 10/34] error: don't delay error message construction, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 12/34] hmp: hmp_cont(): don't rely on QERR_DEVICE_ENCRYPTED, Luiz Capitulino, 2012/08/01