---
name: "sd_bus_message_read_strv_extend"
section: "3"
platform: "linux"
package: "libsystemd-dev"
version: "257.13-1~deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/sd_bus_message_read_strv"
---

# sd\_bus\_message\_read\_strv\_extend(3)

Access an array of strings in a message

Part of [sd\_bus\_message\_read\_strv(3)](/sd_bus_message_read_strv/3.md).

## NAME

sd\_bus\_message\_read\_strv, sd\_bus\_message\_read\_strv\_extend - Access an array of strings in a message

## SYNOPSIS

```
#include <systemd/sd-bus.h>
```

**int sd\_bus\_message\_read\_strv(sd\_bus\_message \****m***, char \*\*\****l***);**

**int sd\_bus\_message\_read\_strv\_extend(sd\_bus\_message \****m***, char \*\*\****l***);**

## DESCRIPTION

**sd\_bus\_message\_read\_strv()** reads an array of string-like items from the message *m*. The "read pointer" in the message must be right before an array of strings (D-Bus type "as"), object paths (D-Bus type "ao"), or signatures (D-Bus type "ag"). On success, a pointer to a **NULL**-terminated array of strings (strv) is returned in the output parameter *l*. Note that ownership of this array is transferred to the caller. Hence, the caller is responsible for freeing this array and its contents. Also note that as a matter of optimization, if an empty array is encountered a **NULL** pointer might be returned here, and should be considered equivalent to an array with zero entries.

**sd\_bus\_message\_read\_strv\_extend()** is similar, but the second parameter is an input-output parameter. If *\*l* is **NULL**, if behaves identically to **sd\_bus\_message\_read\_strv()**. Otherwise, *\*l* must point to a strv, which will be reallocated and extended with additional strings. This function is particularly useful when combining multiple lists of strings in a message or messages into a single array of strings.

## RETURN VALUE

On success, these functions return a non-negative integer. On failure, they return a negative errno-style error code.

### Errors

Returned errors may indicate the following problems:

**-EINVAL**

*m* or *l* are **NULL**.

Added in version 246.

**-EPERM**

The message is not sealed.

Added in version 246.

**-EBADMSG**

The message cannot be parsed.

Added in version 246.

**-ENXIO**

The message "read pointer" is not right before an array of the appropriate type.

Added in version 248.

## HISTORY

**sd\_bus\_message\_read\_strv()** was added in version 246.

**sd\_bus\_message\_read\_strv\_extend()** was added in version 252.

## SEE ALSO

[**systemd**(1)](/systemd/1.md), [**sd-bus**(3)](/sd-bus/3.md), [**sd\_bus\_message\_read**(3)](/sd_bus_message_read/3.md)
