Eric Blake <ebl...@redhat.com> writes: > On 12/17/2015 09:49 AM, Markus Armbruster wrote: >> Instead of simply propagating an error verbatim, we sometimes want to >> add to its message, like this: >> >> frobnicate(arg, &err); >> error_setg(errp, "Can't frobnicate %s: %s", >> arg, error_get_pretty(err)); > > Did you intend to have literal TABs in the commit message?
Editing accident, fixed. >> error_free(err); >> >> This is suboptimal, because it loses err's hint (if any). Moreover, >> when errp is &error_abort or is subsequently propagated to >> &error_abort, the abort message points to the place where we last >> added to the error, not to the place where it originated. >> >> To avoid these issues, provide means to add to an error's message in >> place: >> >> frobnicate(arg, errp); >> error_prepend(errp, "Can't frobnicate %s: ", arg); >> >> Likewise, reporting an error like >> >> frobnicate(arg, &err); >> error_report("Can't frobnicate %s: %s", arg, error_get_pretty(err)); >> >> can lose err's hint. To avoid: >> >> error_reportf_err(err, "Can't frobnicate %s: ", arg); >> >> The next commits will put these functions to use. >> >> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> --- >> include/qapi/error.h | 31 +++++++++++++++++++++++++++++-- >> util/error.c | 33 +++++++++++++++++++++++++++++++++ >> 2 files changed, 62 insertions(+), 2 deletions(-) >> > > Reviewed-by: Eric Blake <ebl...@redhat.com> Thanks!