# sd_bus_message_append_string_memfd

## NAME



           sd_bus_message_append_string_memfd,
           sd_bus_message_append_string_iovec,
           sd_bus_message_append_string_space - Attach a string to a message
    


## SYNOPSIS



           **#include <systemd/sd-bus.h>**
    
           **int sd_bus_message_append_string_memfd(sd_bus_message ***_m_**,**
                                                  **int** _memfd_**);**
    
           **int sd_bus_message_append_string_iovec(sd_bus_message ***_m_**,**
                                                  **const struct iovec ***_iov_**,**
                                                  **unsigned** _n_**);**
    
           **int sd_bus_message_append_string_space(sd_bus_message ***_m_**,**
                                                  **size_t** _size_**, char ****_s_**);**
    


## DESCRIPTION



           The functions **sd_bus_message_append_string_memfd()** and
           **sd_bus_message_append_string_iovec()** can be used to append a
           single string (item of type "s") to message _m_.
    
           In case of **sd_bus_message_append_string_memfd()** , the contents of
           _memfd_ are the string. They must satisfy the same constraints as
           described for the "s" type in sd_bus_message_append_basic(3).
    
           In case of **sd_bus_message_append_string_iovec()** , the payload of
           _iov_ is the string. It must satisfy the same constraints as
           described for the "s" type in sd_bus_message_append_basic(3).
    
           The _iov_ argument must point to _n_ struct iovec structures. Each
           structure may have the iov_base field set, in which case the
           memory pointed to will be copied into the message, or unset, in
           which case a block of spaces (ASCII 32) of length iov_len will be
           inserted. The memory pointed at by _iov_ may be changed after this
           call.
    
           The **sd_bus_message_append_string_space()** function appends space
           for a string to message _m_. It behaves similar to
           **sd_bus_message_append_basic()** with type "s", but instead of
           copying a string into the message, it returns a pointer to the
           destination area to the caller in pointer _p_. Space for the string
           of length _size_ plus the terminating **NUL** is allocated.
    


## RETURN VALUE



           On success, those calls return 0 or a positive integer. On
           failure, they return a negative errno-style error code.
    
       **Errors**
           Returned errors may indicate the following problems:
    
           **-EINVAL**
               Specified parameter is invalid.
    
           **-EPERM**
               Message has been sealed.
    
           **-ESTALE**
               Message is in invalid state.
    
           **-ENXIO**
               Message cannot be appended to.
    
           **-ENOMEM**
               Memory allocation failed.
    


## NOTES



           Functions described here are available as a shared library, which
           can be compiled against and linked to with the
           **libsystemd pkg-config**(1) file.
    
           The code described here uses getenv(3), which is declared to be
           not multi-thread-safe. This means that the code calling the
           functions described here must not call setenv(3) from a parallel
           thread. It is recommended to only do calls to **setenv()** from an
           early phase of the program when no other threads have been
           started.
    


## NOTES



            1. The D-Bus specification
               https://dbus.freedesktop.org/doc/dbus-specification.html
    


* * *