Luiz Capitulino <lcapitul...@redhat.com> writes: > This commit changes all QERR_ macros to contain a human message (ie. > the desc string found in qerr_table[]) instead of a json dictionary > in string format. > > Before this commit, error_set() and qerror_report() would receive > a json dictionary in string format and build a qobject from it. Now, > both function receive a human message instead and the qobject is > not built anymore. > > Signed-off-by: Luiz Capitulino <lcapitul...@redhat.com> > --- > error.c | 5 ++- > qerror.c | 44 ++------------------ > qerror.h | 141 > +++++++++++++++++++++++++++++++-------------------------------- > 3 files changed, 76 insertions(+), 114 deletions(-) > > diff --git a/error.c b/error.c > index 15a2d06..740824c 100644 > --- a/error.c > +++ b/error.c > @@ -29,6 +29,7 @@ void error_set(Error **errp, ErrorClass err_class, const > char *fmt, ...) > { > Error *err; > va_list ap; > + char msg[2048]; > > if (errp == NULL) { > return; > @@ -38,9 +39,9 @@ void error_set(Error **errp, ErrorClass err_class, const > char *fmt, ...) > err = g_malloc0(sizeof(*err)); > > va_start(ap, fmt); > - err->obj = qobject_to_qdict(qobject_from_jsonv(fmt, &ap)); > + vsnprintf(msg, sizeof(msg), fmt, ap); > va_end(ap); > - err->msg = qerror_format(fmt, err->obj); > + err->msg = g_strdup(msg);
Suggest err->msg = g_strdup_vprintf(fmt, ap); > err->err_class = err_class; > > *errp = err; > diff --git a/qerror.c b/qerror.c > index 19a1902..db6bb47 100644 > --- a/qerror.c > +++ b/qerror.c > @@ -342,45 +342,6 @@ static QError *qerror_new(void) > return qerr; > } > > -static QDict *error_obj_from_fmt_no_fail(const char *fmt, va_list *va) > -{ > - QObject *obj; > - QDict *ret; > - > - obj = qobject_from_jsonv(fmt, va); > - if (!obj) { > - fprintf(stderr, "invalid json in error dict '%s'\n", fmt); > - abort(); > - } > - if (qobject_type(obj) != QTYPE_QDICT) { > - fprintf(stderr, "error is not a dict '%s'\n", fmt); > - abort(); > - } > - > - ret = qobject_to_qdict(obj); > - obj = qdict_get(ret, "class"); > - if (!obj) { > - fprintf(stderr, "missing 'class' key in '%s'\n", fmt); > - abort(); > - } > - if (qobject_type(obj) != QTYPE_QSTRING) { > - fprintf(stderr, "'class' key value should be a string in '%s'\n", > fmt); > - abort(); > - } > - > - obj = qdict_get(ret, "data"); > - if (!obj) { > - fprintf(stderr, "missing 'data' key in '%s'\n", fmt); > - abort(); > - } > - if (qobject_type(obj) != QTYPE_QDICT) { > - fprintf(stderr, "'data' key value should be a dict in '%s'\n", fmt); > - abort(); > - } > - > - return ret; > -} > - > /** > * qerror_from_info(): Create a new QError from error information > * > @@ -390,13 +351,14 @@ static QError *qerror_from_info(ErrorClass err_class, > const char *fmt, > va_list *va) > { > QError *qerr; > + char msg[2048]; > > qerr = qerror_new(); > loc_save(&qerr->loc); > > qerr->err_class = err_class; > - qerr->error = error_obj_from_fmt_no_fail(fmt, va); > - qerr->err_msg = qerror_format(fmt, qerr->error); > + vsnprintf(msg, sizeof(msg), fmt, *va); > + qerr->err_msg = g_strdup(msg); Suggest qerr->err_msg = g_strdup_vprintf(fmt, *va); > > return qerr; > } [...]