4458N/A<?
xml version='1.0'?>
<!--*-nxml-*--> 4458N/A<!
DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" 4458N/AThis file is part of systemd. 4458N/ACopyright 2014 Zbigniew Jędrzejewski-Szmek 4458N/Asystemd is free software; you can redistribute it and/or modify it 4458N/Aunder the terms of the GNU Lesser General Public License as published by 4458N/Athe Free Software Foundation; either version 2.1 of the License, or 4458N/A(at your option) any later version. 4458N/Asystemd is distributed in the hope that it will be useful, but 4458N/AWITHOUT ANY WARRANTY; without even the implied warranty of 4458N/AMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4458N/ALesser General Public License for more details. 4458N/AYou should have received a copy of the GNU Lesser General Public License 4458N/A<
refentry id="sd_bus_error" conditional="ENABLE_KDBUS">
4458N/A <
title>sd_bus_error</
title>
4458N/A <
productname>systemd</
productname>
4458N/A <
contrib>A monkey with a typewriter</
contrib>
6812N/A <
firstname>Zbigniew</
firstname>
4458N/A <
surname>Jędrzejewski-Szmek</
surname>
4458N/A <
email>zbyszek@in.waw.pl</
email>
4982N/A <
refentrytitle>sd_bus_error</
refentrytitle>
4458N/A <
refname>sd_bus_error</
refname>
4458N/A <
refname>sd_bus_error_free</
refname>
4458N/A <
refname>sd_bus_error_set</
refname>
4458N/A <
refname>sd_bus_error_set_const</
refname>
6812N/A <
refname>sd_bus_error_set_errno</
refname>
4458N/A <
refname>sd_bus_error_set_errnof</
refname>
4458N/A <
refname>sd_bus_error_get_errno</
refname>
4458N/A <
refname>sd_bus_error_copy</
refname>
4458N/A <
refname>sd_bus_error_is_set</
refname>
4458N/A <
refname>sd_bus_error_has_name</
refname>
4458N/A <
refpurpose>sd-bus error handling</
refpurpose>
<
funcsynopsisinfo>typedef struct {
} sd_bus_error;</
funcsynopsisinfo>
<
constant>SD_BUS_ERROR_MAKE_CONST(<
replaceable>name</
replaceable>, <
replaceable>message</
replaceable>)</
constant>
<
constant>SD_BUS_ERROR_NULL</
constant>
<
funcdef>int <
function>sd_bus_error_free</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_set</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
paramdef>const char *<
parameter>name</
parameter></
paramdef>
<
paramdef>const char *<
parameter>message</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_setf</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
paramdef>const char *<
parameter>name</
parameter></
paramdef>
<
paramdef>const char *<
parameter>format</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_set_const</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
paramdef>const char *<
parameter>name</
parameter></
paramdef>
<
paramdef>const char *<
parameter>message</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_set_errno</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
paramdef>int <
parameter>error</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_set_errnof</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
paramdef>int <
parameter>error</
parameter></
paramdef>
<
paramdef>const char *<
parameter>format</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_get_errno</
function></
funcdef>
<
paramdef>const sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_copy</
function></
funcdef>
<
paramdef>sd_bus_error *<
parameter>dst</
parameter></
paramdef>
<
paramdef>const sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_is_set</
function></
funcdef>
<
paramdef>const sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
funcdef>int <
function>sd_bus_error_has_name</
function></
funcdef>
<
paramdef>const sd_bus_error *<
parameter>e</
parameter></
paramdef>
<
paramdef>const char *<
parameter>name</
parameter></
paramdef>
<
constant>SD_BUS_ERROR_FAILED</
constant>
<
constant>SD_BUS_ERROR_NO_MEMORY</
constant>
<
constant>SD_BUS_ERROR_SERVICE_UNKNOWN</
constant>
<
constant>SD_BUS_ERROR_NAME_HAS_NO_OWNER</
constant>
<
constant>SD_BUS_ERROR_NO_REPLY</
constant>
<
constant>SD_BUS_ERROR_IO_ERROR</
constant>
<
constant>SD_BUS_ERROR_BAD_ADDRESS</
constant>
<
constant>SD_BUS_ERROR_NOT_SUPPORTED</
constant>
<
constant>SD_BUS_ERROR_LIMITS_EXCEEDED</
constant>
<
constant>SD_BUS_ERROR_ACCESS_DENIED</
constant>
<
constant>SD_BUS_ERROR_AUTH_FAILED</
constant>
<
constant>SD_BUS_ERROR_NO_SERVER</
constant>
<
constant>SD_BUS_ERROR_TIMEOUT</
constant>
<
constant>SD_BUS_ERROR_NO_NETWORK</
constant>
<
constant>SD_BUS_ERROR_ADDRESS_IN_USE</
constant>
<
constant>SD_BUS_ERROR_DISCONNECTED</
constant>
<
constant>SD_BUS_ERROR_INVALID_ARGS</
constant>
<
constant>SD_BUS_ERROR_FILE_NOT_FOUND</
constant>
<
constant>SD_BUS_ERROR_FILE_EXISTS</
constant>
<
constant>SD_BUS_ERROR_UNKNOWN_METHOD</
constant>
<
constant>SD_BUS_ERROR_UNKNOWN_OBJECT</
constant>
<
constant>SD_BUS_ERROR_UNKNOWN_INTERFACE</
constant>
<
constant>SD_BUS_ERROR_UNKNOWN_PROPERTY</
constant>
<
constant>SD_BUS_ERROR_PROPERTY_READ_ONLY</
constant>
<
constant>SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN</
constant>
<
constant>SD_BUS_ERROR_INVALID_SIGNATURE</
constant>
<
constant>SD_BUS_ERROR_INCONSISTENT_MESSAGE</
constant>
<
constant>SD_BUS_ERROR_MATCH_RULE_NOT_FOUND</
constant>
<
constant>SD_BUS_ERROR_MATCH_RULE_INVALID</
constant>
<
title>Description</
title>
<
para>The <
structname>sd_bus_error</
structname> structure carries
information for a <
filename>sd-bus</
filename> error. The
functions described below can be used to set and query fields in
this structure. The <
structfield>name</
structfield> field contains a
short identifier of an error. It should follow the rules for error
names described in the D-Bus specification, subsection <
ulink Names</
ulink>. The <
structfield>message</
structfield> is a human
readable string describing the details. When no longer necessary,
resources held by this structure should be destroyed with
<
function>sd_bus_error_free</
function>.</
para>
<
para><
function>sd_bus_error_set</
function> will return an
errno-like negative value returned based on parameter
<
parameter>name</
parameter> (see
<
citerefentry project='man-pages'><
refentrytitle>errno</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>).
Various well-known D-Bus errors are converted to specific values,
and the remaining ones to <
constant>-ENXIO</
constant>. Well-known
D-Bus error names are available as constants
<
constant>SD_BUS_ERROR_FAILED</
constant>, etc., listed above. If
<
parameter>name</
parameter> is <
constant>NULL</
constant>, it is
assumed that no error occured, and 0 is returned. This means that
this function may be conveniently used in a
<
function>return</
function> statement.</
para>
<
para>If <
parameter>e</
parameter> is not
<
constant>NULL</
constant>, <
structfield>name</
structfield> and
<
structfield>message</
structfield> in the
<
structname>sd_bus_error</
structname> structure
<
parameter>e</
parameter> points at will be filled in. As described above,
<
parameter>name</
parameter> may be <
constant>NULL</
constant>,
which is treated as no error. Parameter
<
parameter>message</
parameter> may also be
<
constant>NULL</
constant>, in which case no message is specified.
<
function>sd_bus_error_set</
function> will make internal copies of
specified strings.</
para>
<
para><
function>sd_bus_error_setf</
function> is similar to
<
function>sd_bus_error_set</
function>, but takes a
<
citerefentry project='man-pages'><
refentrytitle>printf</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>
format string and corresponding arguments to generate
<
structname>message</
structname>.</
para>
<
para><
function>sd_bus_error_set_const</
function> is similar to
<
function>sd_bus_error_set</
function>, but string parameters are
not copied internally, and must remain valid for the lifetime of
<
parameter>e</
parameter>.</
para>
<
para><
function>sd_bus_error_set_errno</
function> will set
<
structfield>name</
structfield> based on an errno-like value.
<
citerefentry><
refentrytitle>strerror</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>
will be used to set <
structfield>message</
structfield>. Well-known
D-Bus error names will be used for <
structfield>name</
structfield>
if available, otherwise a name in the
<
literal>
System.Error</
literal> namespace will be generated.
<
para><
function>sd_bus_error_set_errnof</
function> is similar to
<
function>sd_bus_error_set_errno</
function>, but in addition to
<
parameter>name</
parameter>, takes a
<
citerefentry project='man-pages'><
refentrytitle>printf</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>
format and corresponding arguments.
<
structfield>name</
structfield> will be generated from
<
parameter>format</
parameter> and the arguments.</
para>
<
para><
function>sd_bus_error_get_errno</
function> is will convert
<
structname>e->name</
structname> to an errno-like value using the
same rules as <
function>sd_bus_error_set</
function>. If
<
parameter>e</
parameter> is <
constant>NULL</
constant>, 0 will be
<
para><
function>sd_bus_error_copy</
function> will initialize
<
parameter>dst</
parameter> using the values in
<
parameter>e</
parameter>. If the strings in
<
parameter>e</
parameter> were set using
<
function>sd_bus_set_error_const</
function>, they will be shared.
Otherwise, they will be copied.</
para>
<
para><
function>sd_bus_error_is_set</
function> will return
<
constant>true</
constant> if <
parameter>e</
parameter> is
non-<
constant>NULL</
constant> and an error has been set,
<
constant>false</
constant> otherwise.</
para>
<
para><
function>sd_bus_error_has_name</
function> will return true
if <
parameter>e</
parameter> is non-<
constant>NULL</
constant> and
an error with the same <
parameter>name</
parameter> has been set,
<
constant>false</
constant> otherwise.</
para>
<
para><
function>sd_bus_error_free</
function> will destroy resources
held by <
parameter>e</
parameter>. The parameter itself will not
be deallocated, and must be
<
citerefentry project='man-pages'><
refentrytitle>free</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>d
by the caller if necessary.</
para>
<
title>Return Value</
title>
<
para>Functions <
function>sd_bus_error_set</
function>,
<
function>sd_bus_error_setf</
function>,
<
function>sd_bus_error_set_const</
function>, when successful,
return the negative errno value corresponding to the
<
parameter>name</
parameter> parameter. Functions
<
function>sd_bus_error_set_errno</
function> and
<
function>sd_bus_error_set_errnof</
function>, when successful,
return the value of the <
parameter>errno</
parameter> parameter. If
an error occurs, one of the negative error values listed below
<
para><
function>sd_bus_error_get_errno</
function> returns
<
constant>false</
constant> when <
parameter>e</
parameter> is
<
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 one of the negative error values
listed below otherwise.</
para>
<
para><
function>sd_bus_error_is_set</
function> returns
<
constant>true</
constant> when <
parameter>e</
parameter> and
<
parameter>e->name</
parameter> are non-<
constant>NULL</
constant>,
<
constant>false</
constant> otherwise.</
para>
<
para><
function>sd_bus_error_has_name</
function> returns
<
constant>true</
constant> when <
parameter>e</
parameter> is
non-<
constant>NULL</
constant> and <
parameter>e->name</
parameter>
is equal to <
parameter>name</
parameter>,
<
constant>false</
constant> otherwise.</
para>
<
title>Reference ownership</
title>
<
para><
structname>sd_bus_error</
structname> is not reference
counted. Users should destroy resources held by it by calling
<
function>sd_bus_error_free</
function>.</
para>
<
para>Returned errors may indicate the following problems:</
para>
<
term><
varname>-EINVAL</
varname></
term>
<
listitem><
para>Error was already set in
<
structname>sd_bus_error</
structname> structure when one the
error-setting functions was called.</
para></
listitem>
<
term><
varname>-ENOMEM</
varname></
term>
<
listitem><
para>Memory allocation failed.</
para></
listitem>
<
para><
function>sd_bus_set_error()</
function> and other functions
described here are available as a shared library, which can be
compiled and linked to with the
<
constant>libsystemd</
constant> <
citerefentry project='die-net'><
refentrytitle>pkg-config</
refentrytitle><
manvolnum>1</
manvolnum></
citerefentry>
<
citerefentry><
refentrytitle>systemd</
refentrytitle><
manvolnum>1</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd-bus</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry project='man-pages'><
refentrytitle>errno</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>strerror</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>