Eric Blake <[email protected]> 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 <[email protected]>
>> ---
>> include/qapi/error.h | 31 +++++++++++++++++++++++++++++--
>> util/error.c | 33 +++++++++++++++++++++++++++++++++
>> 2 files changed, 62 insertions(+), 2 deletions(-)
>>
>
> Reviewed-by: Eric Blake <[email protected]>
Thanks!