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_get_errno',
|
||||||
'sd_bus_error_has_name',
|
'sd_bus_error_has_name',
|
||||||
'sd_bus_error_is_set',
|
'sd_bus_error_is_set',
|
||||||
|
'sd_bus_error_move',
|
||||||
'sd_bus_error_set',
|
'sd_bus_error_set',
|
||||||
'sd_bus_error_set_const',
|
'sd_bus_error_set_const',
|
||||||
'sd_bus_error_set_errno',
|
'sd_bus_error_set_errno',
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
<refname>sd_bus_error_set_errnofv</refname>
|
<refname>sd_bus_error_set_errnofv</refname>
|
||||||
<refname>sd_bus_error_get_errno</refname>
|
<refname>sd_bus_error_get_errno</refname>
|
||||||
<refname>sd_bus_error_copy</refname>
|
<refname>sd_bus_error_copy</refname>
|
||||||
|
<refname>sd_bus_error_move</refname>
|
||||||
<refname>sd_bus_error_is_set</refname>
|
<refname>sd_bus_error_is_set</refname>
|
||||||
<refname>sd_bus_error_has_name</refname>
|
<refname>sd_bus_error_has_name</refname>
|
||||||
|
|
||||||
|
@ -114,6 +115,12 @@
|
||||||
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
|
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
|
||||||
</funcprototype>
|
</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>
|
<funcprototype>
|
||||||
<funcdef>int <function>sd_bus_error_is_set</function></funcdef>
|
<funcdef>int <function>sd_bus_error_is_set</function></funcdef>
|
||||||
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
|
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
|
||||||
|
@ -245,6 +252,14 @@
|
||||||
Otherwise, they will be copied. Returns a converted
|
Otherwise, they will be copied. Returns a converted
|
||||||
<varname>errno</varname>-like, negative error code.</para>
|
<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
|
<para><function>sd_bus_error_is_set()</function> will return a
|
||||||
non-zero value if <parameter>e</parameter> is
|
non-zero value if <parameter>e</parameter> is
|
||||||
non-<constant>NULL</constant> and an error has been set,
|
non-<constant>NULL</constant> and an error has been set,
|
||||||
|
@ -287,9 +302,8 @@
|
||||||
<constant>NULL</constant>, and a positive errno value mapped from
|
<constant>NULL</constant>, and a positive errno value mapped from
|
||||||
<parameter>e->name</parameter> otherwise.</para>
|
<parameter>e->name</parameter> otherwise.</para>
|
||||||
|
|
||||||
<para><function>sd_bus_error_copy()</function> returns 0 or a
|
<para><function>sd_bus_error_copy()</function> and <function>sd_bus_error_move()</function> return 0 or a positive
|
||||||
positive integer on success, and a negative error value converted
|
integer on success, and a negative error value converted from the error name otherwise.</para>
|
||||||
from the error name otherwise.</para>
|
|
||||||
|
|
||||||
<para><function>sd_bus_error_is_set()</function> returns a
|
<para><function>sd_bus_error_is_set()</function> returns a
|
||||||
non-zero value when <parameter>e</parameter> and the
|
non-zero value when <parameter>e</parameter> and the
|
||||||
|
|
|
@ -577,6 +577,8 @@ global:
|
||||||
sd_bus_set_method_call_timeout;
|
sd_bus_set_method_call_timeout;
|
||||||
sd_bus_get_method_call_timeout;
|
sd_bus_get_method_call_timeout;
|
||||||
|
|
||||||
|
sd_bus_error_move;
|
||||||
|
|
||||||
sd_device_ref;
|
sd_device_ref;
|
||||||
sd_device_unref;
|
sd_device_unref;
|
||||||
|
|
||||||
|
|
|
@ -308,6 +308,28 @@ finish:
|
||||||
return -bus_error_name_to_errno(e->name);
|
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) {
|
_public_ int sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) {
|
||||||
if (!name)
|
if (!name)
|
||||||
return 0;
|
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_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_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_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_is_set(const sd_bus_error *e);
|
||||||
int sd_bus_error_has_name(const sd_bus_error *e, const char *name);
|
int sd_bus_error_has_name(const sd_bus_error *e, const char *name);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue