---
name: "CURLOPT_FTP_ALTERNATIVE_TO_USER"
section: "3"
platform: "macos"
package: "curl"
version: "166.0.0.0.1"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/CURLOPT_FTP_ALTERNATIVE_TO_USER"
---

# CURLOPT\_FTP\_ALTERNATIVE\_TO\_USER(3)

command to use instead of USER with FTP

## NAME

CURLOPT\_FTP\_ALTERNATIVE\_TO\_USER - command to use instead of USER with FTP

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FTP_ALTERNATIVE_TO_USER,
                          char *cmd);
```

## DESCRIPTION

Pass a char pointer as parameter, pointing to a string which is used to authenticate if the usual FTP "USER user" and "PASS password" negotiation fails. This is currently only known to be required when connecting to Tumbleweed's Secure Transport FTPS server using client certificates for authentication.

The application does not have to keep the string around after setting this option.

## DEFAULT

NULL

## PROTOCOLS

FTP

## EXAMPLE

```
int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode res;
    curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/foo.bin");
    curl_easy_setopt(curl, CURLOPT_FTP_ALTERNATIVE_TO_USER, "two users");
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }
}
```

## AVAILABILITY

Added in 7.15.5

## RETURN VALUE

Returns CURLE\_OK if the option is supported, CURLE\_UNKNOWN\_OPTION if not, or CURLE\_OUT\_OF\_MEMORY if there was insufficient heap space.

## SEE ALSO

[**CURLOPT\_FTP\_ACCOUNT**(3)](/CURLOPT_FTP_ACCOUNT/3.md), [**CURLOPT\_FTP\_SKIP\_PASV\_IP**(3)](/CURLOPT_FTP_SKIP_PASV_IP/3.md), [**CURLOPT\_SERVER\_RESPONSE\_TIMEOUT**(3)](/CURLOPT_SERVER_RESPONSE_TIMEOUT/3.md), [**CURLOPT\_USERNAME**(3)](/CURLOPT_USERNAME/3.md)
