]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/sd_bus_message_append.xml
Drop my copyright headers
[thirdparty/systemd.git] / man / sd_bus_message_append.xml
CommitLineData
3802a3d3 1<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
effbc8e4 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
12b42c76 3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
effbc8e4
ZJS
4
5<!--
572eb058 6 SPDX-License-Identifier: LGPL-2.1+
effbc8e4
ZJS
7-->
8
48f69d8f 9<refentry id="sd_bus_message_append"
effbc8e4
ZJS
10 xmlns:xi="http://www.w3.org/2001/XInclude">
11
12 <refentryinfo>
13 <title>sd_bus_message_append</title>
14 <productname>systemd</productname>
15
16 <authorgroup>
17 <author>
18 <contrib>A monkey with a typewriter</contrib>
19 <firstname>Zbigniew</firstname>
20 <surname>Jędrzejewski-Szmek</surname>
21 <email>zbyszek@in.waw.pl</email>
22 </author>
23 </authorgroup>
24 </refentryinfo>
25
26 <refmeta>
27 <refentrytitle>sd_bus_message_append</refentrytitle>
28 <manvolnum>3</manvolnum>
29 </refmeta>
30
31 <refnamediv>
32 <refname>sd_bus_message_append</refname>
19fe49f6 33 <refname>sd_bus_message_appendv</refname>
effbc8e4 34
e8216945
LP
35 <refpurpose>Attach fields to a D-Bus message based on a type
36 string</refpurpose>
effbc8e4
ZJS
37 </refnamediv>
38
39 <refsynopsisdiv>
40 <funcsynopsis>
41 <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
42
43 <funcprototype>
44 <funcdef>int sd_bus_message_append</funcdef>
45 <paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
46 <paramdef>const char *<parameter>types</parameter></paramdef>
1eecafb8 47 <paramdef>…</paramdef>
effbc8e4 48 </funcprototype>
19fe49f6
FDP
49
50 <funcprototype>
51 <funcdef>int sd_bus_message_appendv</funcdef>
52 <paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
53 <paramdef>const char *<parameter>types</parameter></paramdef>
54 <paramdef>va_list <parameter>ap</parameter></paramdef>
55 </funcprototype>
56
effbc8e4
ZJS
57 </funcsynopsis>
58 </refsynopsisdiv>
59
60 <refsect1>
61 <title>Description</title>
62
e8216945
LP
63 <para>The <function>sd_bus_message_append()</function> function
64 appends a sequence of fields to the D-Bus message object
65 <parameter>m</parameter>. The type string
66 <parameter>types</parameter> describes the types of the field
b938cb90 67 arguments that follow. For each type specified in the type string,
e8216945
LP
68 one or more arguments need to be specified, in the same order as
69 declared in the type string.</para>
effbc8e4 70
e8216945 71 <para>The type string is composed of the elements shown in the
effbc8e4
ZJS
72 table below. It contains zero or more single "complete types".
73 Each complete type may be one of the basic types or a fully
e8216945
LP
74 described container type. A container type may be a structure with
75 the contained types, a variant, an array with its element type, or
76 a dictionary entry with the contained types. The type string is
effbc8e4
ZJS
77 <constant>NUL</constant>-terminated.</para>
78
79 <para>In case of a basic type, one argument of the corresponding
80 type is expected.</para>
81
82 <para>A structure is denoted by a sequence of complete types
83 between <literal>(</literal> and <literal>)</literal>. This
84 sequence cannot be empty — it must contain at least one type.
85 Arguments corresponding to this nested sequence follow the same
86 rules as if they were not nested.</para>
87
ff9b60f3 88 <para>A variant is denoted by <literal>v</literal>. Corresponding
e8216945 89 arguments must begin with a type string denoting a complete type,
effbc8e4
ZJS
90 and following that, arguments corresponding to the specified type.
91 </para>
92
93 <para>An array is denoted by <literal>a</literal> followed by a
e8216945
LP
94 complete type. Corresponding arguments must begin with the number of
95 entries in the array, followed by the entries themselves,
96 matching the element type of the array.</para>
effbc8e4
ZJS
97
98 <para>A dictionary is an array of dictionary entries, denoted by
99 <literal>a</literal> followed by a pair of complete types between
100 <literal>{</literal> and <literal>}</literal>. The first of those
e8216945
LP
101 types must be a basic type. Corresponding arguments must begin
102 with the number of dictionary entries, followed by a pair of
103 values for each entry matching the element type of
104 the dictionary entries.</para>
105
19fe49f6
FDP
106 <para>The <function>sd_bus_message_appendv()</function> is equivalent to
107 the function <function>sd_bus_message_append()</function>,
108 except that it is called with a <literal>va_list</literal> instead of
109 a variable number of arguments. This function does not call the
110 <function>va_end()</function> macro. Because it invokes the
111 <function>va_arg()</function> macro, the value of ap
112 is undefined after the call.</para>
113
e8216945
LP
114 <para>For further details on the D-Bus type system, please consult
115 the <ulink
116 url="http://dbus.freedesktop.org/doc/dbus-specification.html#type-system">D-Bus
117 Specification</ulink>.</para>
effbc8e4
ZJS
118
119 <table>
e8216945 120 <title>Item type specifiers</title>
effbc8e4 121
e8216945 122 <tgroup cols='5'>
effbc8e4
ZJS
123 <xi:include href="sd_bus_message_append_basic.xml" xpointer="xpointer(//table[@id='format-specifiers'])//colspec" />
124 <xi:include href="sd_bus_message_append_basic.xml" xpointer="xpointer(//table[@id='format-specifiers']//thead)" />
125
126 <tbody>
127 <xi:include href="sd_bus_message_append_basic.xml" xpointer="xpointer(//table[@id='format-specifiers']//tbody/*)" />
128
129 <row>
130 <entry><literal>a</literal></entry>
131 <entry><constant>SD_BUS_TYPE_ARRAY</constant></entry>
132 <entry>array</entry>
133 <entry>determined by array type and size</entry>
e8216945 134 <entry>int, followed by array contents</entry>
effbc8e4
ZJS
135 </row>
136
137 <row>
138 <entry><literal>v</literal></entry>
139 <entry><constant>SD_BUS_TYPE_VARIANT</constant></entry>
140 <entry>variant</entry>
141 <entry>determined by the type argument</entry>
e8216945 142 <entry>signature string, followed by variant contents</entry>
effbc8e4
ZJS
143 </row>
144
145 <row>
146 <entry><literal>(</literal></entry>
147 <entry><constant>SD_BUS_TYPE_STRUCT_BEGIN</constant></entry>
148 <entry>array start</entry>
149 <entry morerows="1">determined by the nested types</entry>
e8216945 150 <entry morerows="1">structure contents</entry>
effbc8e4
ZJS
151 </row>
152 <row>
153 <entry><literal>)</literal></entry>
154 <entry><constant>SD_BUS_TYPE_STRUCT_END</constant></entry>
155 <entry>array end</entry>
156 </row>
157
158 <row>
159 <entry><literal>{</literal></entry>
160 <entry><constant>SD_BUS_TYPE_DICT_ENTRY_BEGIN</constant></entry>
161 <entry>dictionary entry start</entry>
162 <entry morerows="1">determined by the nested types</entry>
e8216945 163 <entry morerows="1">dictionary contents</entry>
effbc8e4
ZJS
164 </row>
165 <row>
166 <entry><literal>}</literal></entry>
167 <entry><constant>SD_BUS_TYPE_DICT_ENTRY_END</constant></entry>
168 <entry>dictionary entry end</entry>
169 </row>
170 </tbody>
171 </tgroup>
172 </table>
e8216945 173
caf15ff0
ZJS
174 <para>For types "s" and "g" (unicode string or signature), the pointer may be
175 <constant>NULL</constant>, which is equivalent to an empty string. See
176 <citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>
177 for the precise interpretation of those and other types.</para>
178
effbc8e4
ZJS
179 </refsect1>
180
181 <refsect1>
e8216945 182 <title>Types String Grammar</title>
effbc8e4
ZJS
183
184 <programlisting>types ::= complete_type*
185complete_type ::= basic_type | variant | structure | array | dictionary
186basic_type ::= "y" | "n" | "q" | "u" | "i" | "x" | "t" | "d" |
187 "b" | "h" |
188 "s" | "o" | "g"
189variant ::= "v"
190structure ::= "(" complete_type+ ")"
191array ::= "a" complete_type
192dictionary ::= "a" "{" basic_type complete_type "}"
193</programlisting>
194 </refsect1>
195
196 <refsect1>
197 <title>Examples</title>
198
199 <para>Append a single basic type (the string <literal>a string</literal>):
200 </para>
201
202 <programlisting>sd_bus_message *m;
1eecafb8 203
effbc8e4
ZJS
204sd_bus_message_append(m, "s", "a string");</programlisting>
205
206 <para>Append all types of integers:</para>
207
208 <programlisting>uint8_t y = 1;
209int16_t n = 2;
210uint16_t q = 3;
211int32_t i = 4;
212uint32_t u = 5;
213int32_t x = 6;
214uint32_t t = 7;
215double d = 8.0;
216sd_bus_message_append(m, "ynqiuxtd", y, n, q, i, u, x, t, d);</programlisting>
217
e8216945 218 <para>Append a structure composed of a string and a D-Bus path:</para>
effbc8e4
ZJS
219
220 <programlisting>sd_bus_message_append(m, "(so)", "a string", "/a/path");
221</programlisting>
222
223 <para>Append an array of UNIX file descriptors:</para>
224
225 <programlisting>sd_bus_message_append(m, "ah", 3, STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO);
226</programlisting>
227
228 <para>Append a variant, with the real type "g" (signature),
229 and value "sdbusisgood":</para>
230
231 <programlisting>sd_bus_message_append(m, "v", "g", "sdbusisgood");</programlisting>
232
233 <para>Append a dictionary containing the mapping {1=>"a", 2=>"b", 3=>""}:
234 </para>
235
236 <programlisting>sd_bus_message_append(m, "a{is}", 3, 1, "a", 2, "b", 3, NULL);
237 </programlisting>
238 </refsect1>
239
240 <refsect1>
241 <title>Return Value</title>
242
19fe49f6
FDP
243 <para>On success, these functions return 0 or a positive
244 integer. On failure, these functions return a negative
effbc8e4
ZJS
245 errno-style error code.</para>
246 </refsect1>
247
248 <xi:include href="sd_bus_message_append_basic.xml" xpointer="errors" />
249
7d6b2723 250 <xi:include href="libsystemd-pkgconfig.xml" />
effbc8e4
ZJS
251
252 <refsect1>
253 <title>See Also</title>
254
255 <para>
256 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
257 <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
e8216945
LP
258 <citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
259 <citerefentry><refentrytitle>sd_bus_message_append_array</refentrytitle><manvolnum>3</manvolnum></citerefentry>
effbc8e4
ZJS
260 </para>
261 </refsect1>
262
263</refentry>