---
name: "upscli_readline"
section: "3"
platform: "linux"
package: "nut"
version: "2.8.5-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/upscli_readline"
---

# upscli\_readline(3)

Read a single response from a UPS

## NAME

upscli\_readline, upscli\_readline\_timeout, upscli\_readline\_timeout\_may\_disconnect - Read a single response from a UPS

## SYNOPSIS

```
        #include <upsclient.h>
        #include <time.h> /* or <sys/time.h> on some platforms */
        int upscli_readline(UPSCONN_t *ups, char *buf, size_t buflen);
        int upscli_readline_timeout(UPSCONN_t *ups, char *buf, size_t buflen,
                const time_t timeout);
        int upscli_readline_timeout_may_disconnect(UPSCONN_t *ups,
                char *buf, size_t buflen, const time_t timeout,
                int may_disconnect);
```

## DESCRIPTION

The **upscli\_readline()** and **upscli\_readline\_timeout()** functions take the pointer *ups* to a UPSCONN\_t state structure, receive a single line from the server, and copy up to *buflen* bytes of the response into the buffer *buf*.

Some parsing of the string occurs during reception. In particular, ERR messages from [**upsd**(8)](/upsd/8.md) are detected and will cause this function to return *-1*.

The difference between the three functions is that **upscli\_readline\_timeout()** lets the caller decide the amount of time (*timeout* seconds) after which it should give up and return, whereas **upscli\_readline()** does not offer this freedom, and uses NUT default network timeout (5 seconds). Both of these disconnect upon errors. The **upscli\_readline\_timeout\_may\_disconnect()** further allows to enable or disable such disconnections.

## RETURN VALUE

The **upscli\_readline()** and **upscli\_readline\_timeout()** functions return *0* on success, or *-1* if an error occurs.

## SEE ALSO

[**upscli\_fd**(3)](/upscli_fd/3.md), [**upscli\_get**(3)](/upscli_get/3.md), [**upscli\_readline**(3)](/upscli_readline/3.md), [**upscli\_sendline**(3)](/upscli_sendline/3.md), [**upscli\_ssl**(3)](/upscli_ssl/3.md), [**upscli\_strerror**(3)](/upscli_strerror/3.md), [**upscli\_upserror**(3)](/upscli_upserror/3.md)
