sd-event: make return code of sd_event_get_exit_code() optional

This commit is contained in:
Lennart Poettering 2024-02-23 21:51:02 +01:00
parent 4a5aa6842d
commit 7253eaa0fb
2 changed files with 9 additions and 6 deletions

View file

@ -65,9 +65,11 @@
the exit code stored in the event loop object is updated, but
otherwise no further operation is executed.</para>
<para><function>sd_event_get_exit_code()</function> may be used to
query the exit code passed into
<function>sd_event_exit()</function> earlier.</para>
<para><function>sd_event_get_exit_code()</function> may be used to query the exit code passed to an
earlier call of <function>sd_event_exit()</function>. The return parameter <parameter>code</parameter>
may be set to <constant>NULL</constant>, in order to simply check if <function>sd_event_exit()</function>
has been called before (as <function>sd_event_get_exit_code()</function> fails with
<constant>-ENODATA</constant> if that's not the case, see below).</para>
<para>While the full positive and negative integer ranges may be used
for the exit code, care should be taken not pick exit codes that
@ -122,7 +124,8 @@
<varlistentry>
<term><constant>-ENODATA</constant></term>
<listitem><para>The event loop has not been requested to exit yet.</para></listitem>
<listitem><para>Returned by <function>sd_event_get_exit_code()</function> in case the event loop has not
been requested to exit yet.</para></listitem>
</varlistentry>
</variablelist>

View file

@ -4915,13 +4915,13 @@ _public_ int sd_event_get_state(sd_event *e) {
_public_ int sd_event_get_exit_code(sd_event *e, int *code) {
assert_return(e, -EINVAL);
assert_return(e = event_resolve(e), -ENOPKG);
assert_return(code, -EINVAL);
assert_return(!event_origin_changed(e), -ECHILD);
if (!e->exit_requested)
return -ENODATA;
*code = e->exit_code;
if (code)
*code = e->exit_code;
return 0;
}