summaryrefslogtreecommitdiffstats
path: root/os-posix.c
diff options
context:
space:
mode:
authorMarkus Armbruster2020-07-07 18:05:31 +0200
committerMarkus Armbruster2020-07-10 15:01:06 +0200
commite3fe3988d7851cac30abffae06d2f555ff7bee62 (patch)
tree02ae75d64bb1a1c744d3553ca8b8f83c16cc1beb /os-posix.c
parenterror: Improve error.h's big comment (diff)
downloadqemu-e3fe3988d7851cac30abffae06d2f555ff7bee62.tar.gz
qemu-e3fe3988d7851cac30abffae06d2f555ff7bee62.tar.xz
qemu-e3fe3988d7851cac30abffae06d2f555ff7bee62.zip
error: Document Error API usage rules
This merely codifies existing practice, with one exception: the rule advising against returning void, where existing practice is mixed. When the Error API was created, we adopted the (unwritten) rule to return void when the function returns no useful value on success, unlike GError, which recommends to return true on success and false on error then. When a function returns a distinct error value, say false, a checked call that passes the error up looks like if (!frobnicate(..., errp)) { handle the error... } When it returns void, we need Error *err = NULL; frobnicate(..., &err); if (err) { handle the error... error_propagate(errp, err); } Not only is this more verbose, it also creates an Error object even when @errp is null, &error_abort or &error_fatal. People got tired of the additional boilerplate, and started to ignore the unwritten rule. The result is confusion among developers about the preferred usage. Make the rule advising against returning void official by putting it in writing. This will hopefully reduce confusion. Update the examples accordingly. The remainder of this series will update a substantial amount of code to honor the rule. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Greg Kurz <groug@kaod.org> Message-Id: <20200707160613.848843-4-armbru@redhat.com> [Tweak prose as per advice from Eric]
Diffstat (limited to 'os-posix.c')
0 files changed, 0 insertions, 0 deletions