---
name: "upscli_readline_timeout"
section: "3"
platform: "linux"
package: "libupsclient-dev"
version: "2.8.1-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/upscli_readline"
---

# upscli\_readline\_timeout(3)

read a single response from a UPS

Part of [upscli\_readline(3)](/upscli_readline/3.md).

## NAME

upscli\_readline, upscli\_readline\_timeout - 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);
```

## 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 two 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).

## 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)
