| SD_BUS_MESSAGE_APPEND_STRING_MEMFD(3) | sd_bus_message_append_string_memfd | SD_BUS_MESSAGE_APPEND_STRING_MEMFD(3) |
.SH "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
.SH "SYNOPSIS"
#include <systemd/sd-bus.h>
.HP 936u int
sd_bus_message_append_string_memfd(sd_bus_message *m,
int memfd, uint64_t offset,
uint64_t size);
.HP 936u int
sd_bus_message_append_string_iovec(sd_bus_message *m,
const struct iovec *iov,
unsigned n);
.HP 936u int
sd_bus_message_append_string_space(sd_bus_message *m,
size_t size, char **ret);
.SH "DESCRIPTION"
.PP 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.
.PP In case of sd_bus_message_append_string_memfd(), the contents of
memfd starting at the specified offset and of the specified
size are used as the string. size must include the terminating
NUL byte, i.e. the resulting string has length size - 1. If
offset is zero and size is UINT64_MAX, the full
contents of the memory file descriptor are used, and hence must themselves
end in a NUL byte. If offset plus size exceeds the
actual size of the memory file descriptor, this call fails with
-EMSGSIZE. The memory file descriptor is sealed by this call if it
has not been sealed yet, and cannot be modified after this call. The
appended contents must satisfy the same constraints as described for the s
type in sd_bus_message_append_basic(3).
.PP 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).
.PP 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.
.PP 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 ret. Space for the string of length size
plus the terminating NUL is allocated.
.SH "RETURN VALUE"
.PP On success, those calls return 0 or a positive integer. On failure, they
return a negative errno-style error code.
.SS "Errors"
.PP Returned errors may indicate the following problems:
.PP -EINVAL
Specified parameter is invalid.
.RE
.PP -EPERM
Message has been sealed.
.RE
.PP -ESTALE
Message is in invalid state.
.RE
.PP -ENXIO
Message cannot be appended to.
.RE
.PP -ENOMEM
Memory allocation failed.
.RE
.SH "NOTES"
.PP Functions described here are available as a shared library, which can be
compiled against and linked to with the
libsystemd pkg-config(1) file.
.PP All functions listed here are thread-agnostic and only a single thread
may operate on a given object at any given time. Different threads may
access the same object at different times. Multiple independent objects may
be used from different threads in parallel.
.PP 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.
.SH "SEE ALSO"
.PP systemd(1), sd-bus(3),
sd_bus_message_append_basic(3), The D-Bus specification[1]
NOTES
- 1.
- The D-Bus specification
| systemd 262.2 |