man: fully document sd-bus' error APIs

[@zonque: Some minor nits fixed as pointed out by @ronnychevalier,
 dropped class='sd-bus-errors' to fix python logic]
This commit is contained in:
Lennart Poettering 2015-06-23 19:37:28 +02:00 committed by Daniel Mack
parent 1161d5d28b
commit 9d3e5d11be
5 changed files with 824 additions and 180 deletions

View File

@ -24,6 +24,7 @@ MANPAGES += \
man/machine-id.5 \
man/machine-info.5 \
man/os-release.5 \
man/sd-bus-errors.3 \
man/sd-daemon.3 \
man/sd-id128.3 \
man/sd-journal.3 \
@ -32,6 +33,7 @@ MANPAGES += \
man/sd_bus_creds_new_from_pid.3 \
man/sd_bus_default.3 \
man/sd_bus_error.3 \
man/sd_bus_error_add_map.3 \
man/sd_bus_message_append.3 \
man/sd_bus_message_append_array.3 \
man/sd_bus_message_append_basic.3 \
@ -161,6 +163,40 @@ MANPAGES += \
man/udevadm.8
MANPAGES_ALIAS += \
man/SD_ALERT.3 \
man/SD_BUS_ERROR_ACCESS_DENIED.3 \
man/SD_BUS_ERROR_ADDRESS_IN_USE.3 \
man/SD_BUS_ERROR_AUTH_FAILED.3 \
man/SD_BUS_ERROR_BAD_ADDRESS.3 \
man/SD_BUS_ERROR_DISCONNECTED.3 \
man/SD_BUS_ERROR_END.3 \
man/SD_BUS_ERROR_FAILED.3 \
man/SD_BUS_ERROR_FILE_EXISTS.3 \
man/SD_BUS_ERROR_FILE_NOT_FOUND.3 \
man/SD_BUS_ERROR_INCONSISTENT_MESSAGE.3 \
man/SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED.3 \
man/SD_BUS_ERROR_INVALID_ARGS.3 \
man/SD_BUS_ERROR_INVALID_SIGNATURE.3 \
man/SD_BUS_ERROR_IO_ERROR.3 \
man/SD_BUS_ERROR_LIMITS_EXCEEDED.3 \
man/SD_BUS_ERROR_MAKE_CONST.3 \
man/SD_BUS_ERROR_MAP.3 \
man/SD_BUS_ERROR_MATCH_RULE_INVALID.3 \
man/SD_BUS_ERROR_MATCH_RULE_NOT_FOUND.3 \
man/SD_BUS_ERROR_NAME_HAS_NO_OWNER.3 \
man/SD_BUS_ERROR_NOT_SUPPORTED.3 \
man/SD_BUS_ERROR_NO_MEMORY.3 \
man/SD_BUS_ERROR_NO_NETWORK.3 \
man/SD_BUS_ERROR_NO_REPLY.3 \
man/SD_BUS_ERROR_NO_SERVER.3 \
man/SD_BUS_ERROR_NULL.3 \
man/SD_BUS_ERROR_PROPERTY_READ_ONLY.3 \
man/SD_BUS_ERROR_SERVICE_UNKNOWN.3 \
man/SD_BUS_ERROR_TIMEOUT.3 \
man/SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN.3 \
man/SD_BUS_ERROR_UNKNOWN_INTERFACE.3 \
man/SD_BUS_ERROR_UNKNOWN_METHOD.3 \
man/SD_BUS_ERROR_UNKNOWN_OBJECT.3 \
man/SD_BUS_ERROR_UNKNOWN_PROPERTY.3 \
man/SD_CRIT.3 \
man/SD_DEBUG.3 \
man/SD_EMERG.3 \
@ -231,10 +267,13 @@ MANPAGES_ALIAS += \
man/sd_bus_error_get_errno.3 \
man/sd_bus_error_has_name.3 \
man/sd_bus_error_is_set.3 \
man/sd_bus_error_map.3 \
man/sd_bus_error_set.3 \
man/sd_bus_error_set_const.3 \
man/sd_bus_error_set_errno.3 \
man/sd_bus_error_set_errnof.3 \
man/sd_bus_error_set_errnofv.3 \
man/sd_bus_error_setf.3 \
man/sd_bus_message_append_array_iovec.3 \
man/sd_bus_message_append_array_memfd.3 \
man/sd_bus_message_append_array_space.3 \
@ -408,6 +447,40 @@ MANPAGES_ALIAS += \
man/udev_unref.3 \
man/user.conf.d.5
man/SD_ALERT.3: man/sd-daemon.3
man/SD_BUS_ERROR_ACCESS_DENIED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_ADDRESS_IN_USE.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_AUTH_FAILED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_BAD_ADDRESS.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_DISCONNECTED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_END.3: man/sd_bus_error_add_map.3
man/SD_BUS_ERROR_FAILED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_FILE_EXISTS.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_FILE_NOT_FOUND.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_INCONSISTENT_MESSAGE.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_INVALID_ARGS.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_INVALID_SIGNATURE.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_IO_ERROR.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_LIMITS_EXCEEDED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_MAKE_CONST.3: man/sd_bus_error.3
man/SD_BUS_ERROR_MAP.3: man/sd_bus_error_add_map.3
man/SD_BUS_ERROR_MATCH_RULE_INVALID.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_MATCH_RULE_NOT_FOUND.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NAME_HAS_NO_OWNER.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NOT_SUPPORTED.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NO_MEMORY.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NO_NETWORK.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NO_REPLY.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NO_SERVER.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_NULL.3: man/sd_bus_error.3
man/SD_BUS_ERROR_PROPERTY_READ_ONLY.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_SERVICE_UNKNOWN.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_TIMEOUT.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_UNKNOWN_INTERFACE.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_UNKNOWN_METHOD.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_UNKNOWN_OBJECT.3: man/sd-bus-errors.3
man/SD_BUS_ERROR_UNKNOWN_PROPERTY.3: man/sd-bus-errors.3
man/SD_CRIT.3: man/sd-daemon.3
man/SD_DEBUG.3: man/sd-daemon.3
man/SD_EMERG.3: man/sd-daemon.3
@ -478,10 +551,13 @@ man/sd_bus_error_free.3: man/sd_bus_error.3
man/sd_bus_error_get_errno.3: man/sd_bus_error.3
man/sd_bus_error_has_name.3: man/sd_bus_error.3
man/sd_bus_error_is_set.3: man/sd_bus_error.3
man/sd_bus_error_map.3: man/sd_bus_error_add_map.3
man/sd_bus_error_set.3: man/sd_bus_error.3
man/sd_bus_error_set_const.3: man/sd_bus_error.3
man/sd_bus_error_set_errno.3: man/sd_bus_error.3
man/sd_bus_error_set_errnof.3: man/sd_bus_error.3
man/sd_bus_error_set_errnofv.3: man/sd_bus_error.3
man/sd_bus_error_setf.3: man/sd_bus_error.3
man/sd_bus_message_append_array_iovec.3: man/sd_bus_message_append_array.3
man/sd_bus_message_append_array_memfd.3: man/sd_bus_message_append_array.3
man/sd_bus_message_append_array_space.3: man/sd_bus_message_append_array.3
@ -657,6 +733,108 @@ man/user.conf.d.5: man/systemd-system.conf.5
man/SD_ALERT.html: man/sd-daemon.html
$(html-alias)
man/SD_BUS_ERROR_ACCESS_DENIED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_ADDRESS_IN_USE.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_AUTH_FAILED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_BAD_ADDRESS.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_DISCONNECTED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_END.html: man/sd_bus_error_add_map.html
$(html-alias)
man/SD_BUS_ERROR_FAILED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_FILE_EXISTS.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_FILE_NOT_FOUND.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_INCONSISTENT_MESSAGE.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_INVALID_ARGS.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_INVALID_SIGNATURE.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_IO_ERROR.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_LIMITS_EXCEEDED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_MAKE_CONST.html: man/sd_bus_error.html
$(html-alias)
man/SD_BUS_ERROR_MAP.html: man/sd_bus_error_add_map.html
$(html-alias)
man/SD_BUS_ERROR_MATCH_RULE_INVALID.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_MATCH_RULE_NOT_FOUND.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NAME_HAS_NO_OWNER.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NOT_SUPPORTED.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NO_MEMORY.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NO_NETWORK.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NO_REPLY.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NO_SERVER.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_NULL.html: man/sd_bus_error.html
$(html-alias)
man/SD_BUS_ERROR_PROPERTY_READ_ONLY.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_SERVICE_UNKNOWN.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_TIMEOUT.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_UNKNOWN_INTERFACE.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_UNKNOWN_METHOD.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_UNKNOWN_OBJECT.html: man/sd-bus-errors.html
$(html-alias)
man/SD_BUS_ERROR_UNKNOWN_PROPERTY.html: man/sd-bus-errors.html
$(html-alias)
man/SD_CRIT.html: man/sd-daemon.html
$(html-alias)
@ -867,6 +1045,9 @@ man/sd_bus_error_has_name.html: man/sd_bus_error.html
man/sd_bus_error_is_set.html: man/sd_bus_error.html
$(html-alias)
man/sd_bus_error_map.html: man/sd_bus_error_add_map.html
$(html-alias)
man/sd_bus_error_set.html: man/sd_bus_error.html
$(html-alias)
@ -879,6 +1060,12 @@ man/sd_bus_error_set_errno.html: man/sd_bus_error.html
man/sd_bus_error_set_errnof.html: man/sd_bus_error.html
$(html-alias)
man/sd_bus_error_set_errnofv.html: man/sd_bus_error.html
$(html-alias)
man/sd_bus_error_setf.html: man/sd_bus_error.html
$(html-alias)
man/sd_bus_message_append_array_iovec.html: man/sd_bus_message_append_array.html
$(html-alias)
@ -2015,6 +2202,7 @@ EXTRA_DIST += \
man/pam_systemd.xml \
man/resolved.conf.xml \
man/runlevel.xml \
man/sd-bus-errors.xml \
man/sd-daemon.xml \
man/sd-id128.xml \
man/sd-journal.xml \
@ -2024,6 +2212,7 @@ EXTRA_DIST += \
man/sd_bus_creds_new_from_pid.xml \
man/sd_bus_default.xml \
man/sd_bus_error.xml \
man/sd_bus_error_add_map.xml \
man/sd_bus_message_append.xml \
man/sd_bus_message_append_array.xml \
man/sd_bus_message_append_basic.xml \

309
man/sd-bus-errors.xml Normal file
View File

@ -0,0 +1,309 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
This file is part of systemd.
Copyright 2015 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd-bus-errors">
<refentryinfo>
<title>sd-bus-errors</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd-bus-errors</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd-bus-errors</refname>
<refname>SD_BUS_ERROR_FAILED</refname>
<refname>SD_BUS_ERROR_NO_MEMORY</refname>
<refname>SD_BUS_ERROR_SERVICE_UNKNOWN</refname>
<refname>SD_BUS_ERROR_NAME_HAS_NO_OWNER</refname>
<refname>SD_BUS_ERROR_NO_REPLY</refname>
<refname>SD_BUS_ERROR_IO_ERROR</refname>
<refname>SD_BUS_ERROR_BAD_ADDRESS</refname>
<refname>SD_BUS_ERROR_NOT_SUPPORTED</refname>
<refname>SD_BUS_ERROR_LIMITS_EXCEEDED</refname>
<refname>SD_BUS_ERROR_ACCESS_DENIED</refname>
<refname>SD_BUS_ERROR_AUTH_FAILED</refname>
<refname>SD_BUS_ERROR_NO_SERVER</refname>
<refname>SD_BUS_ERROR_TIMEOUT</refname>
<refname>SD_BUS_ERROR_NO_NETWORK</refname>
<refname>SD_BUS_ERROR_ADDRESS_IN_USE</refname>
<refname>SD_BUS_ERROR_DISCONNECTED</refname>
<refname>SD_BUS_ERROR_INVALID_ARGS</refname>
<refname>SD_BUS_ERROR_FILE_NOT_FOUND</refname>
<refname>SD_BUS_ERROR_FILE_EXISTS</refname>
<refname>SD_BUS_ERROR_UNKNOWN_METHOD</refname>
<refname>SD_BUS_ERROR_UNKNOWN_OBJECT</refname>
<refname>SD_BUS_ERROR_UNKNOWN_INTERFACE</refname>
<refname>SD_BUS_ERROR_UNKNOWN_PROPERTY</refname>
<refname>SD_BUS_ERROR_PROPERTY_READ_ONLY</refname>
<refname>SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN</refname>
<refname>SD_BUS_ERROR_INVALID_SIGNATURE</refname>
<refname>SD_BUS_ERROR_INCONSISTENT_MESSAGE</refname>
<refname>SD_BUS_ERROR_MATCH_RULE_NOT_FOUND</refname>
<refname>SD_BUS_ERROR_MATCH_RULE_INVALID</refname>
<refname>SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED</refname>
<refpurpose>Standard D-Bus error names</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcsynopsisinfo>#define SD_BUS_ERROR_FAILED "org.freedesktop.DBus.Error.Failed"
#define SD_BUS_ERROR_NO_MEMORY "org.freedesktop.DBus.Error.NoMemory"
#define SD_BUS_ERROR_SERVICE_UNKNOWN "org.freedesktop.DBus.Error.ServiceUnknown"
#define SD_BUS_ERROR_NAME_HAS_NO_OWNER "org.freedesktop.DBus.Error.NameHasNoOwner"
#define SD_BUS_ERROR_NO_REPLY "org.freedesktop.DBus.Error.NoReply"
#define SD_BUS_ERROR_IO_ERROR "org.freedesktop.DBus.Error.IOError"
#define SD_BUS_ERROR_BAD_ADDRESS "org.freedesktop.DBus.Error.BadAddress"
#define SD_BUS_ERROR_NOT_SUPPORTED "org.freedesktop.DBus.Error.NotSupported"
#define SD_BUS_ERROR_LIMITS_EXCEEDED "org.freedesktop.DBus.Error.LimitsExceeded"
#define SD_BUS_ERROR_ACCESS_DENIED "org.freedesktop.DBus.Error.AccessDenied"
#define SD_BUS_ERROR_AUTH_FAILED "org.freedesktop.DBus.Error.AuthFailed"
#define SD_BUS_ERROR_NO_SERVER "org.freedesktop.DBus.Error.NoServer"
#define SD_BUS_ERROR_TIMEOUT "org.freedesktop.DBus.Error.Timeout"
#define SD_BUS_ERROR_NO_NETWORK "org.freedesktop.DBus.Error.NoNetwork"
#define SD_BUS_ERROR_ADDRESS_IN_USE "org.freedesktop.DBus.Error.AddressInUse"
#define SD_BUS_ERROR_DISCONNECTED "org.freedesktop.DBus.Error.Disconnected"
#define SD_BUS_ERROR_INVALID_ARGS "org.freedesktop.DBus.Error.InvalidArgs"
#define SD_BUS_ERROR_FILE_NOT_FOUND "org.freedesktop.DBus.Error.FileNotFound"
#define SD_BUS_ERROR_FILE_EXISTS "org.freedesktop.DBus.Error.FileExists"
#define SD_BUS_ERROR_UNKNOWN_METHOD "org.freedesktop.DBus.Error.UnknownMethod"
#define SD_BUS_ERROR_UNKNOWN_OBJECT "org.freedesktop.DBus.Error.UnknownObject"
#define SD_BUS_ERROR_UNKNOWN_INTERFACE "org.freedesktop.DBus.Error.UnknownInterface"
#define SD_BUS_ERROR_UNKNOWN_PROPERTY "org.freedesktop.DBus.Error.UnknownProperty"
#define SD_BUS_ERROR_PROPERTY_READ_ONLY "org.freedesktop.DBus.Error.PropertyReadOnly"
#define SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN "org.freedesktop.DBus.Error.UnixProcessIdUnknown"
#define SD_BUS_ERROR_INVALID_SIGNATURE "org.freedesktop.DBus.Error.InvalidSignature"
#define SD_BUS_ERROR_INCONSISTENT_MESSAGE "org.freedesktop.DBus.Error.InconsistentMessage"
#define SD_BUS_ERROR_MATCH_RULE_NOT_FOUND "org.freedesktop.DBus.Error.MatchRuleNotFound"
#define SD_BUS_ERROR_MATCH_RULE_INVALID "org.freedesktop.DBus.Error.MatchRuleInvalid"
#define SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED \
"org.freedesktop.DBus.Error.InteractiveAuthorizationRequired"</funcsynopsisinfo>
</funcsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>In addition to the error names user programs define, D-Bus
knows a number of generic, standardized error names, that are
listed below.</para>
<para>In addition to this list, in sd-bus the special error
namespace <literal>System.Error.</literal> is used to map
arbitrary Linux system errors (as defined by <citerefentry
project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>)
to D-Bus errors and back. For example, the error
<constant>EUCLEAN</constant> is mapped to
<literal>System.Error.EUCLEAN</literal> and back.</para>
<variablelist>
<varlistentry>
<term><varname>SD_BUS_ERROR_FAILED</varname></term>
<listitem><para>A generic error indication. See the error
message for further details. This error name should be
avoided, in favour of a more expressive error
name.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_NO_MEMORY</varname></term>
<listitem><para>A memory allocation failed, and the requested
operation could not be completed.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_SERVICE_UNKNOWN</varname></term>
<listitem><para>The contacted bus service is unknown and
cannot be activated.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_NAME_HAS_NO_OWNER</varname></term>
<listitem><para>The specified bus service name currently has
no owner.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_NO_REPLY</varname></term>
<listitem><para>A message did not receive a reply. This error
is usually generated after a timeout.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_IO_ERROR</varname></term>
<listitem><para>Generic input/output error, for example when
accessing a socket or other IO context.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_BAD_ADDRESS</varname></term>
<listitem><para>The specified D-Bus bus address string is
malformed.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_NOT_SUPPORTED</varname></term>
<listitem><para>The requested operation is not supported on
the local system.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_LIMITS_EXCEEDED</varname></term>
<listitem><para>Some limited resource has been
exhausted.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_ACCESS_DENIED</varname></term>
<listitem><para>Access to a resource has bee denied, due to security restrictions.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_AUTH_FAILED</varname></term>
<listitem><para>Authentication did not complete successfully.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_NO_SERVER</varname></term>
<listitem><para>Unable to connect to the specified server.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_TIMEOUT</varname></term>
<listitem><para>An operation timed out. Note that method calls
which timeout generate a
<varname>SD_BUS_ERROR_NO_REPLY</varname>.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_NO_NETWORK</varname></term>
<listitem><para>No network available to execute requested network operation on.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_ADDRESS_IN_USE</varname></term>
<listitem><para>The specified network address is already being listened on.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_DISCONNECTED</varname></term>
<listitem><para>The connection has been terminated.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_INVALID_ARGS</varname></term>
<listitem><para>One or more invalid arguments have been passed.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_FILE_NOT_FOUND</varname></term>
<listitem><para>The requested file could not be found.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_FILE_EXISTS</varname></term>
<listitem><para>The requested file exists already.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_UNKNOWN_METHOD</varname></term>
<listitem><para>The requested method does not exist in the selected interface.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_UNKNOWN_OBJECT</varname></term>
<listitem><para>The requested object does not exist in the selected service.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_UNKNOWN_INTERFACE</varname></term>
<listitem><para>The requested interface does not exist on the selected object.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_UNKNOWN_PROPERTY</varname></term>
<listitem><para>The requested property does not exist in the selected interface.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_PROPERTY_READ_ONLY</varname></term>
<listitem><para>A write operation was requested on a read-only property.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN</varname></term>
<listitem><para>The requested PID is not known.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_INVALID_SIGNATURE</varname></term>
<listitem><para>The specified message signature is not
valid.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_INCONSISTENT_MESSAGE</varname></term>
<listitem><para>The passed message does not validate
correctly.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_MATCH_RULE_NOT_FOUND</varname></term>
<listitem><para>The specified match rule does not exist.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_MATCH_RULE_INVALID</varname></term>
<listitem><para>The specified match rule is invalid.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>SD_BUS_ERROR_INTERACTIVE_AUTHORIZATION_REQUIRED</varname></term>
<listitem><para>Access to the requested operation is not
permitted, however, it might be available after interactive
authentication. This is usually returned by method calls
supporting a framework for additional interactive
authorization, when interactive authorization was not enabled
with the
<citerefentry><refentrytitle>sd_bus_message_set_allow_interactive_authorization</refentrytitle><manvolnum>3</manvolnum></citerefentry>
for the method call message.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para>The various error definitions 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>
file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_error</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_message_set_allow_interactive_authorization</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry project='die-net'><refentrytitle>strerror</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -44,11 +44,15 @@
<refnamediv>
<refname>sd_bus_error</refname>
<refname>SD_BUS_ERROR_MAKE_CONST</refname>
<refname>SD_BUS_ERROR_NULL</refname>
<refname>sd_bus_error_free</refname>
<refname>sd_bus_error_set</refname>
<refname>sd_bus_error_setf</refname>
<refname>sd_bus_error_set_const</refname>
<refname>sd_bus_error_set_errno</refname>
<refname>sd_bus_error_set_errnof</refname>
<refname>sd_bus_error_set_errnofv</refname>
<refname>sd_bus_error_get_errno</refname>
<refname>sd_bus_error_copy</refname>
<refname>sd_bus_error_is_set</refname>
@ -75,7 +79,7 @@
</para>
<funcprototype>
<funcdef>int <function>sd_bus_error_free</function></funcdef>
<funcdef>void <function>sd_bus_error_free</function></funcdef>
<paramdef>sd_bus_error *<parameter>e</parameter></paramdef>
</funcprototype>
@ -115,6 +119,14 @@
<paramdef>...</paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_error_set_errnofv</function></funcdef>
<paramdef>sd_bus_error *<parameter>e</parameter></paramdef>
<paramdef>int <parameter>error</parameter></paramdef>
<paramdef>const char *<parameter>format</parameter></paramdef>
<paramdef>va_list ap</paramdef>
</funcprototype>
<funcprototype>
<funcdef>int <function>sd_bus_error_get_errno</function></funcdef>
<paramdef>const sd_bus_error *<parameter>e</parameter></paramdef>
@ -138,234 +150,194 @@
</funcprototype>
</funcsynopsis>
<para>
<constant>SD_BUS_ERROR_FAILED</constant>
</para>
<para>
<constant>SD_BUS_ERROR_NO_MEMORY</constant>
</para>
<para>
<constant>SD_BUS_ERROR_SERVICE_UNKNOWN</constant>
</para>
<para>
<constant>SD_BUS_ERROR_NAME_HAS_NO_OWNER</constant>
</para>
<para>
<constant>SD_BUS_ERROR_NO_REPLY</constant>
</para>
<para>
<constant>SD_BUS_ERROR_IO_ERROR</constant>
</para>
<para>
<constant>SD_BUS_ERROR_BAD_ADDRESS</constant>
</para>
<para>
<constant>SD_BUS_ERROR_NOT_SUPPORTED</constant>
</para>
<para>
<constant>SD_BUS_ERROR_LIMITS_EXCEEDED</constant>
</para>
<para>
<constant>SD_BUS_ERROR_ACCESS_DENIED</constant>
</para>
<para>
<constant>SD_BUS_ERROR_AUTH_FAILED</constant>
</para>
<para>
<constant>SD_BUS_ERROR_NO_SERVER</constant>
</para>
<para>
<constant>SD_BUS_ERROR_TIMEOUT</constant>
</para>
<para>
<constant>SD_BUS_ERROR_NO_NETWORK</constant>
</para>
<para>
<constant>SD_BUS_ERROR_ADDRESS_IN_USE</constant>
</para>
<para>
<constant>SD_BUS_ERROR_DISCONNECTED</constant>
</para>
<para>
<constant>SD_BUS_ERROR_INVALID_ARGS</constant>
</para>
<para>
<constant>SD_BUS_ERROR_FILE_NOT_FOUND</constant>
</para>
<para>
<constant>SD_BUS_ERROR_FILE_EXISTS</constant>
</para>
<para>
<constant>SD_BUS_ERROR_UNKNOWN_METHOD</constant>
</para>
<para>
<constant>SD_BUS_ERROR_UNKNOWN_OBJECT</constant>
</para>
<para>
<constant>SD_BUS_ERROR_UNKNOWN_INTERFACE</constant>
</para>
<para>
<constant>SD_BUS_ERROR_UNKNOWN_PROPERTY</constant>
</para>
<para>
<constant>SD_BUS_ERROR_PROPERTY_READ_ONLY</constant>
</para>
<para>
<constant>SD_BUS_ERROR_UNIX_PROCESS_ID_UNKNOWN</constant>
</para>
<para>
<constant>SD_BUS_ERROR_INVALID_SIGNATURE</constant>
</para>
<para>
<constant>SD_BUS_ERROR_INCONSISTENT_MESSAGE</constant>
</para>
<para>
<constant>SD_BUS_ERROR_MATCH_RULE_NOT_FOUND</constant>
</para>
<para>
<constant>SD_BUS_ERROR_MATCH_RULE_INVALID</constant>
</para>
</refsynopsisdiv>
<refsect1>
<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
information about a D-Bus error condition. The functions described
below may 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
url="http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names">Valid
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>
Names</ulink>. A number of common, standardized error names are
described in
<citerefentry><refentrytitle>sd-bus-errors</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
but additional domain-specific errors may be defined by
applications. The <structfield>message</structfield> field usually
contains a human readable string describing the details, but might
be NULL. An unset <structname>sd_bus_error</structname> structure
should have both fields initialized to NULL. Set an error
structure to <constant>SD_BUS_ERROR_NULL</constant> in order to
reset both fields to NULL. When no longer necessary, resources
held by the <structname>sd_bus_error</structname>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
<para><function>sd_bus_error_set()</function> sets an error
structure to the specified name and message strings. The strings
will be copied into internal, newly allocated memory. It is
essential to free the error structure again when it is not
required anymore (see above). The function will return an
<varname>errno</varname>-like negative value (see <citerefentry
project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>)
determined from the specified error name. Various well-known
D-Bus errors are converted to well-known <varname>errno</varname>
counterparts, and the other ones to <constant>-EIO</constant>. See
<citerefentry><refentrytitle>sd-bus-errors</refentrytitle><manvolnum>3</manvolnum></citerefentry>
for a list of well-known error names. Additional error mappings
may be defined with
<citerefentry><refentrytitle>sd_bus_error_add_map</refentrytitle><manvolnum>3</manvolnum></citerefentry>. If
<parameter>e</parameter> is NULL no error structure is initialized
but the error is still converted into an
<varname>errno</varname>-style error. If
<parameter>name</parameter> is <constant>NULL</constant>, it is
assumed that no error occurred, and 0 is returned. This means that
this function may be conveniently used in a
<function>return</function> statement.</para>
<function>return</function> statement. If
<parameter>message</parameter> is NULL no message is set. This
call can fail if no memory may be allocated for the name and
message strings, in which case an
<constant>SD_BUS_ERROR_NO_MEMORY</constant> error might be set
instead and -ENOMEM returned. Do not use this call on error
structures that are already initialized. If you intend to reuse an
error structure free the old data stored in it with
<function>sd_bus_error_free()</function> first.</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 the
<structfield>message</structfield> field.</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 the string parameters
are not copied internally, and must hence remain constant and
valid for the lifetime of <parameter>e</parameter>. Use this call
to avoid memory allocations when setting error structures. Since
this call does not allocate memory it will not fail with an
out-of-memory condition, as
<function>sd_bus_error_set()</function> can, as described
above. Alternatively, the
<constant>SD_BUS_ERROR_MAKE_CONST()</constant> macro may be used
to generate a literal, constant bus error structure
on-the-fly.</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 project='die-net'><refentrytitle>strerror</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<para><function>sd_bus_error_set_errno()</function> will set
<structfield>name</structfield> from an
<varname>errno</varname>-like value that is converted to a D-Bus
error. <citerefentry
project='die-net'><refentrytitle>strerror_r</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>
if applicable, otherwise a name in the
<literal>System.Error.</literal> namespace will be generated. The
sign of the specified error number is ignored. The absolute value
is used implicitly. The call always returns a negative value, for
convenient usage in <function>return</function> statements. This
call might fail due to lack of memory, in which case an
<constant>SD_BUS_ERROR_NO_MEMORY</constant> error is set instead,
and -ENOMEM returned.</para>
<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
<para><function>sd_bus_error_set_errnof()</function> is similar to
<function>sd_bus_error_set_errno()</function>, but in addition to
<parameter>error</parameter>, takes a <citerefentry
project='man-pages'><refentrytitle>printf</refentrytitle><manvolnum>3</manvolnum></citerefentry>
format string and corresponding arguments. The
<structfield>message</structfield> field will be generated from
<parameter>format</parameter> and the arguments.</para>
<para><function>sd_bus_error_get_errno</function> will convert
<structname>e-&gt;name</structname> to an errno-like value using the
same rules as <function>sd_bus_error_set</function>. If
<para><function>sd_bus_error_set_errnofv()</function> is similar to
<function>sd_bus_error_set_errnof()</function> but takes the
format string parameters as <citerefentry
project='man-pages'><refentrytitle>va_arg</refentrytitle><manvolnum>3</manvolnum></citerefentry>
parameter list.</para>
<para><function>sd_bus_error_get_errno()</function> converts the
<structfield>name</structfield> field of an error structure to an
<varname>errno</varname>-like (positive) value using the same
rules as <function>sd_bus_error_set()</function>. If
<parameter>e</parameter> is <constant>NULL</constant>, 0 will be
returned.</para>
<para><function>sd_bus_error_copy</function> will initialize
<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>
<function>sd_bus_set_error_const()</function>, they will be shared.
Otherwise, they will be copied. Returns a converted
<varname>errno</varname>-like, negative error code.</para>
<para><function>sd_bus_error_is_set</function> will return
<constant>true</constant> if <parameter>e</parameter> is
<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,
<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,
<para><function>sd_bus_error_has_name()</function> will return a
non-zero value 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>
<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. The function may also be called safely
on unset errors (error structures with both fields set to NULL),
in which case it performs no operation. This call will reset the
error structure after freeing the data, so that all fields are set
to NULL. The structure may be reused afterwards.</para>
</refsect1>
<refsect1>
<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,
<para>The 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
will be returned.</para>
<function>sd_bus_error_set_errno()</function>,
<function>sd_bus_error_set_errnof()</function> and
<function>sd_bus_error_set_errnofv()</function>, when successful,
return the negative value of the <parameter>error</parameter>
parameter. If an error occurs, one of the negative error values
listed below will be returned.</para>
<para><function>sd_bus_error_get_errno</function> returns
<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-&gt;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_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_is_set</function> returns
<constant>true</constant> when <parameter>e</parameter> and
<parameter>e-&gt;name</parameter> are non-<constant>NULL</constant>,
<constant>false</constant> otherwise.</para>
<para><function>sd_bus_error_is_set()</function> returns a
non-zero value when <parameter>e</parameter> and the
<structfield>name</structfield> field are
non-<constant>NULL</constant>, zero 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-&gt;name</parameter>
is equal to <parameter>name</parameter>,
<constant>false</constant> otherwise.</para>
<para><function>sd_bus_error_has_name()</function> returns a
non-zero value when <parameter>e</parameter> is
non-<constant>NULL</constant> and the
<structfield>name</structfield> field is equal to
<parameter>name</parameter>, zero otherwise.</para>
</refsect1>
<refsect1>
<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>
<function>sd_bus_error_free()</function>. Usually error structures
are allocated on the stack or passed in as function parameters,
but they may also be allocated dynamically, in which case it is
the duty of the caller to <citerefentry
project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
the memory held by the structure itself after freeing its contents
with <function>sd_bus_error_free()</function>.</para>
</refsect1>
<refsect1>
@ -407,8 +379,10 @@
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus-errors</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_error_add_map</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry project='die-net'><refentrytitle>strerror</refentrytitle><manvolnum>3</manvolnum></citerefentry>
<citerefentry project='die-net'><refentrytitle>strerror_r</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>

View File

@ -0,0 +1,173 @@
<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
This file is part of systemd.
Copyright 2015 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="sd_bus_error_add_map">
<refentryinfo>
<title>sd_bus_error_add_map</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>sd_bus_error_add_map</refentrytitle>
<manvolnum>3</manvolnum>
</refmeta>
<refnamediv>
<refname>sd_bus_error_add_map</refname>
<refname>sd_bus_error_map</refname>
<refname>SD_BUS_ERROR_MAP</refname>
<refname>SD_BUS_ERROR_END</refname>
<refpurpose>Additional sd-dbus error mappings</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis>
<funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
<funcsynopsisinfo>typedef struct {
const char *name;
int code;
...
} sd_bus_error_map;</funcsynopsisinfo>
</funcsynopsis>
<para>
<constant>SD_BUS_ERROR_MAP(<replaceable>name</replaceable>, <replaceable>code</replaceable>)</constant>
</para>
<para>
<constant>SD_BUS_ERROR_MAP_END</constant>
</para>
<funcprototype>
<funcdef>int <function>sd_bus_error_add_map</function></funcdef>
<paramdef>const sd_bus_map *<parameter>map</parameter></paramdef>
</funcprototype>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>The <function>sd_bus_error_add_map()</function> call may be
used to register additional mappings for converting D-Bus errors
to Linux <varname>errno</varname>-style errors. The mappings
defined with this call are consulted by calls such as
<citerefentry><refentrytitle>sd_bus_error_set</refentrytitle><manvolnum>3</manvolnum></citerefentry>
or
<citerefentry><refentrytitle>sd_bus_error_get_errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>. By
default a number of generic, standardized mappings are known, as
documented in
<citerefentry><refentrytitle>sd-bus-errors</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Use
this call to add further, application-specific mappings.</para>
<para>The function takes a pointer to an array of
<structname>sd_bus_error_map</structname> structures. A reference
to the specified array is added to the lookup tables for error
mappings. Note that the structure is not copied, it is hence
essential that the array stays available and constant during the
entire remaining runtime of the process.</para>
<para>The mapping array should be put together with a series of
<constant>SD_BUS_ERROR_MAP()</constant> macro invocations, that
take a literal name string and a (positive)
<varname>errno</varname>-style error number. The last entry of the
array should be an invocation of the
<constant>SD_BUS_ERROR_MAP_END</constant> macro. The array should not be
put together without use of these two macros.</para>
<para>Note that the call is idempotent: it is safe to invoke it
multiple times with the parameter, which will only add the passed
mapping array once.</para>
<para>Note that the memory allocated by this call is not intended
to be freed during the lifetime of the process. It should not be
freed explicitly.</para>
</refsect1>
<refsect1>
<title>Return Value</title>
<para><function>sd_bus_error_add_map()</function> returns a
positive value when the new array was added to the lookup
tables. It returns zero when the same array was already added
before. On error, a negative <varname>errno</varname>-style error
code is returned. See below for known error codes.</para>
</refsect1>
<refsect1>
<title>Errors</title>
<para>Returned errors may indicate the following problems:</para>
<variablelist>
<varlistentry>
<term><constant>-EINVAL</constant></term>
<listitem><para>The specified mapping array is invalid.</para></listitem>
</varlistentry>
<varlistentry>
<term><constant>-ENOMEM</constant></term>
<listitem><para>Memory allocation failed.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Notes</title>
<para>The various error definitions 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>
file.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd_bus_error</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-bus-errors</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry project='die-net'><refentrytitle>strerror_r</refentrytitle><manvolnum>3</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -440,7 +440,6 @@
</varlistentry>
</variablelist>
</refsect1>
<refsect1>