2018-07-03 00:15:39 +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">
2016-06-21 18:52:32 +03:00
<!--
2017-11-18 19:22:32 +03:00
SPDX-License-Identifier: LGPL-2.1+
2018-06-12 20:00:24 +03:00
Copyright © 2016 Julian Orth
2016-06-21 18:52:32 +03:00
-->
<refentry id= "sd_bus_message_read_basic" >
<refentryinfo >
<title > sd_bus_message_read_basic</title>
<productname > systemd</productname>
</refentryinfo>
<refmeta >
<refentrytitle > sd_bus_message_read_basic</refentrytitle>
<manvolnum > 3</manvolnum>
</refmeta>
<refnamediv >
<refname > sd_bus_message_read_basic</refname>
<refpurpose > Read a basic type from a message</refpurpose>
</refnamediv>
<refsynopsisdiv >
<funcsynopsis >
<funcsynopsisinfo > #include < systemd/sd-bus.h> </funcsynopsisinfo>
<funcprototype >
<funcdef > int <function > sd_bus_message_read_basic</function> </funcdef>
<paramdef > sd_bus_message *<parameter > m</parameter> </paramdef>
<paramdef > char <parameter > type</parameter> </paramdef>
<paramdef > void *<parameter > p</parameter> </paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 >
<title > Description</title>
<para >
<function > sd_bus_message_read_basic()</function> reads a basic type from a
message and advances the read position in the message. The set of basic
types and their ascii codes passed in <parameter > type</parameter> are
described in the <ulink
url="https://dbus.freedesktop.org/doc/dbus-specification.html">D-Bus
Specification</ulink> .
</para>
<para >
2018-07-03 02:11:11 +03:00
If <parameter > p</parameter> is not <constant > NULL</constant> , it should contain
a pointer to an appropriate object. For example, if <parameter > type</parameter>
is <constant > 'y'</constant> , the object passed in <parameter > p</parameter>
2020-01-28 18:28:04 +03:00
should have type <type > uint8_t *</type> . If <parameter > type</parameter> is
2018-07-03 02:11:11 +03:00
<constant > 's'</constant> , the object passed in <parameter > p</parameter> should
2020-01-28 18:28:04 +03:00
have type <type > const char **</type> . Note that, if the basic type is a pointer
(e.g., <type > const char *</type> in the case of a string), the pointer is only
2018-07-03 02:11:11 +03:00
borrowed and the contents must be copied if they are to be used after the end
of the messages lifetime. Similarly, during the lifetime of such a pointer, the
message must not be modified. See the table below for a complete list of allowed
types.
2016-06-21 18:52:32 +03:00
</para>
2018-07-03 02:11:11 +03:00
<table id= 'format-specifiers' >
<title > Item type specifiers</title>
<tgroup cols= '4' >
<colspec colname= 'specifier' />
<colspec colname= 'constant' />
<colspec colname= 'description' />
<colspec colname= 'ctype' />
<thead >
<row >
<entry > Specifier</entry>
<entry > Constant</entry>
<entry > Description</entry>
<entry > Expected C Type</entry>
</row>
</thead>
<tbody >
<row >
<entry > <literal > y</literal> </entry>
<entry > <constant > SD_BUS_TYPE_BYTE</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 8bit unsigned integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > uint8_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > b</literal> </entry>
<entry > <constant > SD_BUS_TYPE_BOOLEAN</constant> </entry>
<entry > boolean</entry>
2020-01-28 18:31:40 +03:00
<entry > <type > int *</type> (NB: not <type > bool *</type> )</entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > n</literal> </entry>
<entry > <constant > SD_BUS_TYPE_INT16</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 16bit signed integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > int16_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > q</literal> </entry>
<entry > <constant > SD_BUS_TYPE_UINT16</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 16bit unsigned integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > uint16_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > i</literal> </entry>
<entry > <constant > SD_BUS_TYPE_INT32</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 32bit signed integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > int32_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > u</literal> </entry>
<entry > <constant > SD_BUS_TYPE_UINT32</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 32bit unsigned integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > uint32_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > x</literal> </entry>
<entry > <constant > SD_BUS_TYPE_INT64</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 64bit signed integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > int64_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > t</literal> </entry>
<entry > <constant > SD_BUS_TYPE_UINT64</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > 64bit unsigned integer</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > uint64_t *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > d</literal> </entry>
<entry > <constant > SD_BUS_TYPE_DOUBLE</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > IEEE 754 double precision floating-point</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > double *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > s</literal> </entry>
<entry > <constant > SD_BUS_TYPE_STRING</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > UTF-8 string</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > const char **</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > o</literal> </entry>
<entry > <constant > SD_BUS_TYPE_OBJECT_PATH</constant> </entry>
2020-02-21 22:43:26 +03:00
<entry > D-Bus object path string</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > const char **</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > g</literal> </entry>
<entry > <constant > SD_BUS_TYPE_SIGNATURE</constant> </entry>
2020-01-28 18:30:44 +03:00
<entry > D-Bus signature string</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > const char **</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
<row >
<entry > <literal > h</literal> </entry>
<entry > <constant > SD_BUS_TYPE_UNIX_FD</constant> </entry>
<entry > UNIX file descriptor</entry>
2020-01-28 18:28:04 +03:00
<entry > <type > int *</type> </entry>
2018-07-03 02:11:11 +03:00
</row>
</tbody>
</tgroup>
</table>
2016-06-21 18:52:32 +03:00
<para >
If there is no object of the specified type at the current position in the
message, an error is returned.
</para>
</refsect1>
<refsect1 >
<title > Return Value</title>
<para >
On success, <function > sd_bus_message_read_basic()</function> returns 0 or
a positive integer. On failure, it returns a negative errno-style error
code.
</para>
2019-03-21 16:53:00 +03:00
<refsect2 id= 'errors' >
<title > Errors</title>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<para > Returned errors may indicate the following problems:</para>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<variablelist >
<varlistentry >
<term > <constant > -EINVAL</constant> </term>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > Specified type string is invalid or the message parameter is
<constant > NULL</constant> .</para> </listitem>
</varlistentry>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<varlistentry >
<term > <constant > -ENXIO</constant> </term>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > The message does not contain the specified type at current position.
</para> </listitem>
</varlistentry>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<varlistentry >
<term > <constant > -EBADMSG</constant> </term>
2018-07-03 02:11:11 +03:00
2019-03-21 16:53:00 +03:00
<listitem > <para > The message cannot be parsed.</para> </listitem>
</varlistentry>
</variablelist>
</refsect2>
2018-07-03 02:11:11 +03:00
</refsect1>
2016-06-21 18:52:32 +03:00
<refsect1 >
<title > See Also</title>
<para >
<citerefentry > <refentrytitle > systemd</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > sd-bus</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
2018-07-03 02:11:11 +03:00
<citerefentry > <refentrytitle > sd_bus_message_append_basic</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
2018-08-11 10:35:26 +03:00
<citerefentry > <refentrytitle > sd_bus_message_skip</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
2018-07-03 02:11:11 +03:00
<citerefentry > <refentrytitle > sd_bus_message_read</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
2016-06-21 18:52:32 +03:00
</para>
</refsect1>
</refentry>