sd_bus_error, sd_bus_error_free, sd_bus_error_set, sd_bus_error_set_const, sd_bus_error_set_errno, sd_bus_error_set_errnof, sd_bus_error_get_errno, sd_bus_error_copy, sd_bus_error_is_set, sd_bus_error_has_name — sd-bus error handling
#include <systemd/sd-bus.h>
typedef struct { const char *name; const char *message; ... } sd_bus_error;
SD_BUS_ERROR_MAKE_CONST(
name
, message
)
SD_BUS_ERROR_NULL
int sd_bus_error_free( | sd_bus_error *e) ; |
int sd_bus_error_set( | sd_bus_error *e, |
const char *name, | |
const char *message) ; |
int sd_bus_error_setf( | sd_bus_error *e, |
const char *name, | |
const char *format, | |
...) ; |
int sd_bus_error_set_const( | sd_bus_error *e, |
const char *name, | |
const char *message) ; |
int sd_bus_error_set_errno( | sd_bus_error *e, |
int error) ; |
int sd_bus_error_set_errnof( | sd_bus_error *e, |
int error, | |
const char *format, | |
...) ; |
int sd_bus_error_get_errno( | const sd_bus_error *e) ; |
int sd_bus_error_copy( | sd_bus_error *dst, |
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) ; |
SD_BUS_ERROR_FAILED
SD_BUS_ERROR_NO_MEMORY
SD_BUS_ERROR_SERVICE_UNKNOWN
SD_BUS_ERROR_NAME_HAS_NO_OWNER
SD_BUS_ERROR_NO_REPLY
SD_BUS_ERROR_IO_ERROR
SD_BUS_ERROR_BAD_ADDRESS
SD_BUS_ERROR_NOT_SUPPORTED
SD_BUS_ERROR_LIMITS_EXCEEDED
SD_BUS_ERROR_ACCESS_DENIED
SD_BUS_ERROR_AUTH_FAILED
SD_BUS_ERROR_NO_SERVER
SD_BUS_ERROR_TIMEOUT
SD_BUS_ERROR_NO_NETWORK
SD_BUS_ERROR_ADDRESS_IN_USE
SD_BUS_ERROR_DISCONNECTED
SD_BUS_ERROR_INVALID_ARGS
SD_BUS_ERROR_FILE_NOT_FOUND
SD_BUS_ERROR_FILE_EXISTS
SD_BUS_ERROR_UNKNOWN_METHOD
SD_BUS_ERROR_UNKNOWN_OBJECT
SD_BUS_ERROR_UNKNOWN_INTERFACE
SD_BUS_ERROR_UNKNOWN_PROPERTY
SD_BUS_ERROR_PROPERTY_READ_ONLY
SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN
SD_BUS_ERROR_INVALID_SIGNATURE
SD_BUS_ERROR_INCONSISTENT_MESSAGE
SD_BUS_ERROR_MATCH_RULE_NOT_FOUND
SD_BUS_ERROR_MATCH_RULE_INVALID
The sd_bus_error structure carries
information for a sd-bus
error. The
functions described below can be used to set and query fields in
this structure. The name
field contains a
short identifier of an error. It should follow the rules for error
names described in the D-Bus specification, subsection Valid
Names. The message
is a human
readable string describing the details. When no longer necessary,
resources held by this structure should be destroyed with
sd_bus_error_free
.
sd_bus_error_set
will return an
errno-like negative value returned based on parameter
name
(see
errno(3)).
Various well-known D-Bus errors are converted to specific values,
and the remaining ones to -ENXIO
. Well-known
D-Bus error names are available as constants
SD_BUS_ERROR_FAILED
, etc., listed above. If
name
is NULL
, it is
assumed that no error occurred, and 0 is returned. This means that
this function may be conveniently used in a
return
statement.
If e
is not
NULL
, name
and
message
in the
sd_bus_error structure
e
points at will be filled in. As described above,
name
may be NULL
,
which is treated as no error. Parameter
message
may also be
NULL
, in which case no message is specified.
sd_bus_error_set
will make internal copies of
specified strings.
sd_bus_error_setf
is similar to
sd_bus_error_set
, but takes a
printf(3)
format string and corresponding arguments to generate
message.
sd_bus_error_set_const
is similar to
sd_bus_error_set
, but string parameters are
not copied internally, and must remain valid for the lifetime of
e
.
sd_bus_error_set_errno
will set
name
based on an errno-like value.
strerror(3)
will be used to set message
. Well-known
D-Bus error names will be used for name
if available, otherwise a name in the
"System.Error
" namespace will be generated.
sd_bus_error_set_errnof
is similar to
sd_bus_error_set_errno
, but in addition to
name
, takes a
printf(3)
format and corresponding arguments.
name
will be generated from
format
and the arguments.
sd_bus_error_get_errno
will convert
e->name to an errno-like value using the
same rules as sd_bus_error_set
. If
e
is NULL
, 0 will be
returned.
sd_bus_error_copy
will initialize
dst
using the values in
e
. If the strings in
e
were set using
sd_bus_set_error_const
, they will be shared.
Otherwise, they will be copied.
sd_bus_error_is_set
will return
true
if e
is
non-NULL
and an error has been set,
false
otherwise.
sd_bus_error_has_name
will return true
if e
is non-NULL
and
an error with the same name
has been set,
false
otherwise.
sd_bus_error_free
will destroy resources
held by e
. The parameter itself will not
be deallocated, and must be
free(3)d
by the caller if necessary.
Functions sd_bus_error_set
,
sd_bus_error_setf
,
sd_bus_error_set_const
, when successful,
return the negative errno value corresponding to the
name
parameter. Functions
sd_bus_error_set_errno
and
sd_bus_error_set_errnof
, when successful,
return the value of the errno
parameter. If
an error occurs, one of the negative error values listed below
will be returned.
sd_bus_error_get_errno
returns
false
when e
is
NULL
, and a positive errno value mapped from
e->name
otherwise.
sd_bus_error_copy
returns 0 or a
positive integer on success, and one of the negative error values
listed below otherwise.
sd_bus_error_is_set
returns
true
when e
and
e->name
are non-NULL
,
false
otherwise.
sd_bus_error_has_name
returns
true
when e
is
non-NULL
and e->name
is equal to name
,
false
otherwise.
sd_bus_error is not reference
counted. Users should destroy resources held by it by calling
sd_bus_error_free
.
sd_bus_set_error()
and other functions
described here are available as a shared library, which can be
compiled and linked to with the
libsystemd
pkg-config(1)
file.