<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="sd_bus_message_append_strv"
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_bus_message_append_strv</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_bus_message_append_strv</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_bus_message_append_strv</refname>

    <refpurpose>Attach an array of strings to a message</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>int sd_bus_message_append_strv</funcdef>
        <paramdef>sd_bus_message *<parameter>m</parameter></paramdef>
        <paramdef>char **<parameter>l</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>The <function>sd_bus_message_append()</function> function can be
    used to append an array of strings to message
    <parameter>m</parameter>. The parameter <parameter>l</parameter>
    shall point to a <constant>NULL</constant>-terminated array of pointers
    to <constant>NUL</constant>-terminated strings. Each string must
    satisfy the same constraints as described for the
    <literal>s</literal> type in
    <citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
    </para>

    <para>The memory pointed at by <parameter>p</parameter> and the
    contents of the strings themselves are copied into the memory area
    containing the message and may be changed after this call. Note
    that the signature of <parameter>l</parameter> parameter is to be
    treated as <type>const char *const *</type>, and the contents
    will not be modified.</para>
  </refsect1>

  <refsect1>
    <title>Return Value</title>

    <para>On success, this call returns 0 or a positive integer. On failure, a negative errno-style error
    code is returned.</para>

    <xi:include href="sd_bus_message_append_basic.xml" xpointer="errors" />
  </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>,
      <citerefentry><refentrytitle>sd_bus_message_append</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_message_append_array</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html">The D-Bus specification</ulink>
    </para>
  </refsect1>

</refentry>
