---
name: "CURLOPT_TELNETOPTIONS"
section: "3"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/CURLOPT_TELNETOPTIONS"
---

# CURLOPT\_TELNETOPTIONS(3)

set of telnet options

## NAME

CURLOPT\_TELNETOPTIONS - set of telnet options

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TELNETOPTIONS,
                          struct curl_slist *cmds);
```

## DESCRIPTION

Provide a pointer to a curl\_slist with variables to pass to the telnet negotiations. The variables should be in the format \<option=value\>. libcurl supports the options **TTYPE**, **XDISPLOC** and **NEW\_ENV**. See the TELNET standard for details.

Using this option multiple times makes the last set list override the previous ones. Set it to NULL to disable its use again.

libcurl does not copy the list, it needs to be kept around until after the transfer has completed.

## DEFAULT

NULL

## PROTOCOLS

This functionality affects telnet only

## EXAMPLE

```
int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode result;
    struct curl_slist *options;
    options = curl_slist_append(NULL, "TTTYPE=vt100");
    options = curl_slist_append(options, "USER=foobar");
    curl_easy_setopt(curl, CURLOPT_URL, "telnet://example.com/");
    curl_easy_setopt(curl, CURLOPT_TELNETOPTIONS, options);
    result = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
    curl_slist_free_all(options);
  }
}
```

## AVAILABILITY

Added in curl 7.7

## RETURN VALUE

*[curl\_easy\_setopt(3)](/curl_easy_setopt/3.md)* returns a CURLcode indicating success or error.

CURLE\_OK (0) means everything was OK, non-zero means an error occurred, see *[libcurl-errors(3)](/libcurl-errors/3.md)*.

## SEE ALSO

[**CURLOPT\_HTTPHEADER**(3)](/CURLOPT_HTTPHEADER/3.md), [**CURLOPT\_QUOTE**(3)](/CURLOPT_QUOTE/3.md)
