mirror of
https://github.com/systemd/systemd.git
synced 2025-03-24 14:50:17 +03:00
sd-bus: add new API call sd_bus_error_move()
This new call move an sd_bus_error into another one.
This commit is contained in:
parent
cce08496e7
commit
190128e407
@ -180,6 +180,7 @@ manpages = [
|
||||
'sd_bus_error_get_errno',
|
||||
'sd_bus_error_has_name',
|
||||
'sd_bus_error_is_set',
|
||||
'sd_bus_error_move',
|
||||
'sd_bus_error_set',
|
||||
'sd_bus_error_set_const',
|
||||
'sd_bus_error_set_errno',
|
||||
|
@ -31,6 +31,7 @@
|
||||
<refname>sd_bus_error_set_errnofv</refname>
|
||||
<refname>sd_bus_error_get_errno</refname>
|
||||
<refname>sd_bus_error_copy</refname>
|
||||
<refname>sd_bus_error_move</refname>
|
||||
<refname>sd_bus_error_is_set</refname>
|
||||
<refname>sd_bus_error_has_name</refname>
|
||||
|
||||
@ -114,6 +115,12 @@
|
||||
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_bus_error_move</function></funcdef>
|
||||
<paramdef>sd_bus_error *<parameter>dst</parameter></paramdef>
|
||||
<paramdef>sd_bus_error *<parameter>e</parameter></paramdef>
|
||||
</funcprototype>
|
||||
|
||||
<funcprototype>
|
||||
<funcdef>int <function>sd_bus_error_is_set</function></funcdef>
|
||||
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
|
||||
@ -245,6 +252,14 @@
|
||||
Otherwise, they will be copied. Returns a converted
|
||||
<varname>errno</varname>-like, negative error code.</para>
|
||||
|
||||
<para><function>sd_bus_error_move()</function> is similar to <function>sd_bus_error_copy()</function>, but will
|
||||
move any error information from <parameter>e</parameter> into <parameter>dst</parameter>, resetting the
|
||||
former. This function cannot fail, as no new memory is allocated. Note that if <parameter>e</parameter> is not set
|
||||
(or <constant>NULL</constant>) <parameter>dst</parameter> is initializated to
|
||||
<constant>SD_BUS_ERROR_NULL</constant>. Moreover, if <parameter>dst</parameter> is <constant>NULL</constant> no
|
||||
operation is executed on it and and resources held by <parameter>e</parameter> are freed and reset. Returns a
|
||||
converted <varname>errno</varname>-like, negative error code.</para>
|
||||
|
||||
<para><function>sd_bus_error_is_set()</function> will return a
|
||||
non-zero value if <parameter>e</parameter> is
|
||||
non-<constant>NULL</constant> and an error has been set,
|
||||
@ -287,9 +302,8 @@
|
||||
<constant>NULL</constant>, and a positive errno value mapped from
|
||||
<parameter>e->name</parameter> otherwise.</para>
|
||||
|
||||
<para><function>sd_bus_error_copy()</function> returns 0 or a
|
||||
positive integer on success, and a negative error value converted
|
||||
from the error name otherwise.</para>
|
||||
<para><function>sd_bus_error_copy()</function> and <function>sd_bus_error_move()</function> return 0 or a positive
|
||||
integer on success, and a negative error value converted from the error name otherwise.</para>
|
||||
|
||||
<para><function>sd_bus_error_is_set()</function> returns a
|
||||
non-zero value when <parameter>e</parameter> and the
|
||||
|
@ -577,6 +577,8 @@ global:
|
||||
sd_bus_set_method_call_timeout;
|
||||
sd_bus_get_method_call_timeout;
|
||||
|
||||
sd_bus_error_move;
|
||||
|
||||
sd_device_ref;
|
||||
sd_device_unref;
|
||||
|
||||
|
@ -308,6 +308,28 @@ finish:
|
||||
return -bus_error_name_to_errno(e->name);
|
||||
}
|
||||
|
||||
_public_ int sd_bus_error_move(sd_bus_error *dest, sd_bus_error *e) {
|
||||
int r;
|
||||
|
||||
if (!sd_bus_error_is_set(e)) {
|
||||
|
||||
if (dest)
|
||||
*dest = SD_BUS_ERROR_NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = -bus_error_name_to_errno(e->name);
|
||||
|
||||
if (dest) {
|
||||
*dest = *e;
|
||||
*e = SD_BUS_ERROR_NULL;
|
||||
} else
|
||||
sd_bus_error_free(e);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
_public_ int sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) {
|
||||
if (!name)
|
||||
return 0;
|
||||
|
@ -422,6 +422,7 @@ int sd_bus_error_set_errnof(sd_bus_error *e, int error, const char *format, ...)
|
||||
int sd_bus_error_set_errnofv(sd_bus_error *e, int error, const char *format, va_list ap) _sd_printf_(3,0);
|
||||
int sd_bus_error_get_errno(const sd_bus_error *e);
|
||||
int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e);
|
||||
int sd_bus_error_move(sd_bus_error *dest, sd_bus_error *e);
|
||||
int sd_bus_error_is_set(const sd_bus_error *e);
|
||||
int sd_bus_error_has_name(const sd_bus_error *e, const char *name);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user