2018-07-08 13:49:32 +03:00
<?xml version='1.0'?>
2019-03-14 16:40:58 +03:00
< !DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
2019-03-14 16:29:37 +03:00
<!-- SPDX - License - Identifier: LGPL - 2.1+ -->
2018-07-08 13:49:32 +03:00
<refentry id= "sd_bus_message_new_method_error"
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo >
<title > sd_bus_message_new_method_error</title>
<productname > systemd</productname>
</refentryinfo>
<refmeta >
<refentrytitle > sd_bus_message_new_method_error</refentrytitle>
<manvolnum > 3</manvolnum>
</refmeta>
<refnamediv >
<refname > sd_bus_message_new_method_error</refname>
<refname > sd_bus_message_new_method_errorf</refname>
<refname > sd_bus_message_new_method_errno</refname>
<refname > sd_bus_message_new_method_errnof</refname>
<refpurpose > Create a an error reply for a method call</refpurpose>
</refnamediv>
<refsynopsisdiv >
<funcsynopsis >
<funcsynopsisinfo > #include < systemd/sd-bus.h> </funcsynopsisinfo>
<funcprototype >
<funcdef > int sd_bus_message_new_method_error</funcdef>
<paramdef > sd_bus_message *<parameter > call</parameter> </paramdef>
<paramdef > sd_bus_message **<parameter > m</parameter> </paramdef>
<paramdef > const sd_bus_error *<parameter > e</parameter> </paramdef>
</funcprototype>
<funcprototype >
<funcdef > int sd_bus_message_new_method_errorf</funcdef>
<paramdef > sd_bus_message *<parameter > call</parameter> </paramdef>
<paramdef > sd_bus_message **<parameter > m</parameter> </paramdef>
<paramdef > const char *<parameter > name</parameter> </paramdef>
<paramdef > const char *<parameter > format</parameter> </paramdef>
<paramdef > …</paramdef>
</funcprototype>
<funcprototype >
<funcdef > int sd_bus_message_new_method_errno</funcdef>
<paramdef > sd_bus_message *<parameter > call</parameter> </paramdef>
<paramdef > sd_bus_message **<parameter > m</parameter> </paramdef>
<paramdef > int <parameter > error</parameter> </paramdef>
<paramdef > const sd_bus_error *<parameter > p</parameter> </paramdef>
</funcprototype>
<funcprototype >
<funcdef > int sd_bus_message_new_method_errnof</funcdef>
<paramdef > sd_bus_message *<parameter > call</parameter> </paramdef>
<paramdef > sd_bus_message **<parameter > m</parameter> </paramdef>
<paramdef > int <parameter > error</parameter> </paramdef>
<paramdef > const char *<parameter > format</parameter> </paramdef>
<paramdef > …</paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 >
<title > Description</title>
<para > The <function > sd_bus_message_new_method_error()</function> function creates
a new bus message object that is an error reply to the
<parameter > call</parameter> message, and returns it in the
<parameter > m</parameter> output parameter. The error information from error
<parameter > e</parameter> is appended: the <parameter > name</parameter> field of
<parameter > e</parameter> is used as the error identifier in the reply header (for
example an error name such as
<literal > org.freedesktop.DBus.Error.NotSupported</literal> or the equivalent
symbolic <constant > SD_BUS_ERROR_NOT_SUPPORTED</constant> ), and the
<parameter > message</parameter> field is set as the human readable error message
string if present. The error <parameter > e</parameter> must have the
<parameter > name</parameter> field set, see
<citerefentry > <refentrytitle > sd_bus_error_is_set</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> .
</para>
<para > The <function > sd_bus_message_new_method_errorf()</function> function
creates an error reply similarly to
<function > sd_bus_message_new_method_error()</function> , but instead of a ready
error structure, it takes an error identifier string <parameter > name</parameter> ,
plus a <citerefentry
project='man-pages'><refentrytitle > printf</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
format string <parameter > format</parameter> and corresponding arguments. An error
reply is sent with the error identifier <parameter > name</parameter> and the
formatted string as the message. <parameter > name</parameter> and
<parameter > format</parameter> must not be <constant > NULL</constant> .
</para>
<para > The <function > sd_bus_message_new_method_errno()</function> function creates
an error reply similarly to
<function > sd_bus_message_new_method_error()</function> , but in addition to the
error structure <parameter > p</parameter> , it takes an
<citerefentry > <refentrytitle > errno</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
error value in parameter <parameter > error</parameter> . If the error
<parameter > p</parameter> is set (see
<citerefentry > <refentrytitle > sd_bus_error_is_set</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ),
it is used in the reply. Otherwise, <parameter > error</parameter> is translated to
an error identifier and used to create a new error structure using
<citerefentry > <refentrytitle > sd_bus_error_set_errno</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
and that is used in the reply. (If <parameter > error</parameter> is zero, no error
is actually set, and an error reply with no information is created.)</para>
<para > The <function > sd_bus_message_new_method_errnof()</function> function
creates an error reply similarly to
<function > sd_bus_message_new_method_error()</function> . It takes an
<citerefentry > <refentrytitle > errno</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
error value in parameter <parameter > error</parameter> , plus a <citerefentry
project='man-pages'><refentrytitle > printf</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
format string <parameter > format</parameter> and corresponding arguments.
<literal > %m</literal> may be used in the format string to refer to the error
2019-04-27 03:22:40 +03:00
string corresponding to the specified errno code. The error message is initialized
2018-07-08 13:49:32 +03:00
using the error identifier generated from <constant > error</constant> and the
formatted string. (If <parameter > error</parameter> is zero, no error is actually
set, and an error reply with no information is created.)</para>
</refsect1>
<refsect1 >
<title > Return Value</title>
<para > These functions return 0 if the error reply was successfully created, and a
negative errno-style error code otherwise.</para>
2019-03-21 16:53:00 +03:00
<refsect2 id= 'errors' >
<title > Errors</title>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<para > Returned errors may indicate the following problems:</para>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<variablelist >
<varlistentry >
<term > <constant > -EINVAL</constant> </term>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > The call message <parameter > call</parameter> or the output
parameter <parameter > m</parameter> are <constant > NULL</constant> .</para>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<para > Message <parameter > call</parameter> is not a method call
message.</para>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<para > The error <parameter > error</parameter> parameter to
<function > sd_bus_message_new_method_error</function> is not set, see
<citerefentry > <refentrytitle > sd_bus_error_is_set</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> .
</para>
</listitem>
</varlistentry>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<varlistentry >
<term > <constant > -EPERM</constant> </term>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > Message <parameter > call</parameter> has been sealed.
</para> </listitem>
</varlistentry>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<varlistentry >
<term > <constant > -ENOTCONN</constant> </term>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > The bus to which message <parameter > call</parameter> is
attached is not connected.</para> </listitem>
</varlistentry>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<varlistentry >
<term > <constant > -ENOMEM</constant> </term>
2018-07-08 13:49:32 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > Memory allocation failed.</para> </listitem>
</varlistentry>
</variablelist>
</refsect2>
2018-07-08 13:49:32 +03:00
</refsect1>
<xi:include href= "libsystemd-pkgconfig.xml" />
<refsect1 >
<title > See Also</title>
<para >
<citerefentry > <refentrytitle > systemd</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > sd-bus</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
</para>
</refsect1>
</refentry>