Doing FTP over an HTTP proxy without --proxytunnel makes curl do HTTP with an
FTP URL over the proxy. For such transfers, common FTP specific options do not
-work, including --ftp-ssl-reqd and --ftp-ssl-control.
+work, including --ssl-reqd and --ftp-ssl-control.
# OPTIONS
-## --ca
+## `--ca`
Displays the built-in path to the CA cert bundle this libcurl uses.
-## --cc
+## `--cc`
Displays the compiler used to build libcurl.
-## --cflags
+## `--cflags`
Set of compiler options (CFLAGS) to use when compiling files that use
libcurl. Currently that is only the include path to the curl include files.
-## --checkfor [version]
+## `--checkfor [version]`
Specify the oldest possible libcurl version string you want, and this script
returns 0 if the current installation is new enough or it returns 1 and
outputs a text saying that the current version is not new enough. (Added in
7.15.4)
-## --configure
+## `--configure`
Displays the arguments given to configure when building curl.
-## --feature
+## `--feature`
Lists what particular main features the installed libcurl was built with. At
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
any particular order. The keywords are separated by newlines. There may be
none, one, or several keywords in the list.
-## --help
+## `--help`
Displays the available options.
-## --libs
+## `--libs`
Shows the complete set of libs and other linker options you need in order to
link your application with libcurl.
-## --prefix
+## `--prefix`
This is the prefix used when libcurl was installed. libcurl is then installed
in $prefix/lib and its header files are installed in $prefix/include and so
-on. The prefix is set with "configure --prefix".
+on. The prefix is set with `configure --prefix`.
-## --protocols
+## `--protocols`
Lists what particular protocols the installed libcurl was built to support. At
the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
protocols are listed using uppercase and are separated by newlines. There may
be none, one, or several protocols in the list. (Added in 7.13.0)
-## --ssl-backends
+## `--ssl-backends`
Lists the SSL backends that were enabled when libcurl was built. It might be
no, one or several names. If more than one name, they appear comma-separated.
(Added in 7.58.0)
-## --static-libs
+## `--static-libs`
Shows the complete set of libs and other linker options you need in order to
link your application with libcurl statically. (Added in 7.17.1)
-## --version
+## `--version`
Outputs version information about the installed libcurl.
-## --vernum
+## `--vernum`
Outputs version information about the installed libcurl, in numerical mode.
This shows the version number, in hexadecimal, using 8 bits for each part:
# EXAMPLES
What linker options do I need when I link with libcurl?
-~~~
- $ curl-config --libs
-~~~
+
+ $ curl-config --libs
+
What compiler options do I need when I compile using libcurl functions?
-~~~
- $ curl-config --cflags
-~~~
+
+ $ curl-config --cflags
+
How do I know if libcurl was built with SSL support?
-~~~
- $ curl-config --feature | grep SSL
-~~~
+
+ $ curl-config --feature | grep SSL
+
What's the installed libcurl version?
-~~~
- $ curl-config --version
-~~~
+
+ $ curl-config --version
+
How do I build a single file with a one-line command?
-~~~
- $ `curl-config --cc --cflags` -o example source.c `curl-config --libs`
-~~~
+
+ $ `curl-config --cc --cflags` -o example source.c `curl-config --libs`
# DESCRIPTION
Given a *CURLoption* **id**, this function returns a pointer to the
-*curl_easyoption* struct, holding information about the
-curl_easy_setopt(3) option using that id. The option id is the CURLOPT_
-prefix ones provided in the standard curl/curl.h header file. This function
-returns the non-alias version of the cases where there is an alias function as
-well.
+*curl_easyoption* struct, holding information about the curl_easy_setopt(3)
+option using that id. The option id is the `CURLOPT_` prefixed ones provided
+in the standard curl/curl.h header file. This function returns the non-alias
+version of the cases where there is an alias function as well.
If libcurl has no option with the given id, this function returns NULL.
# DESCRIPTION
-Given a **name**, this function returns a pointer to the
-*curl_easyoption* struct, holding information about the
-curl_easy_setopt(3) option using that name. The name should be specified
-without the "CURLOPT_" prefix and the name comparison is made case
-insensitive.
+Given a **name**, this function returns a pointer to the *curl_easyoption*
+struct, holding information about the curl_easy_setopt(3) option using that
+name. The name should be specified without the `CURLOPT_` prefix and the name
+comparison is made case insensitive.
If libcurl has no option with the given name, this function returns NULL.
# RETURN VALUE
0 means everything was OK, non-zero means an error occurred corresponding to a
-CURL_FORMADD_* constant defined in *\<curl/curl.h\>*.
+`CURL_FORMADD_*` constant defined in *\<curl/curl.h\>*.
size_t len);"
~~~
-The curl_formget_callback is invoked for each part of the HTTP POST chain. The
-character buffer passed to the callback must not be freed. The callback should
-return the buffer length passed to it on success.
+The *curl_formget_callback* is invoked for each part of the HTTP POST chain.
+The character buffer passed to the callback must not be freed. The callback
+should return the buffer length passed to it on success.
If the **CURLFORM_STREAM** option is used in the formpost, it prevents
curl_formget(3) from working until you have performed the actual HTTP request.
*features* mask bit: CURL_VERSION_CONV
-libcurl was built with support for character conversions, as provided by the
-CURLOPT_CONV_* callbacks. Always 0 since 7.82.0. (Added in 7.15.4,
-deprecated.)
+libcurl was built with support for character conversions provided by
+callbacks. Always 0 since 7.82.0. (Added in 7.15.4, deprecated.)
## no name
many effects on the behavior of libcurl. Refer to the source code to determine
how exactly they are being used.
-## CURL_ALTSVC_HTTP
+## `CURL_ALTSVC_HTTP`
Bypass the AltSvc HTTPS protocol restriction if this variable exists.
-## CURL_DBG_SOCK_RBLOCK
+## `CURL_DBG_SOCK_RBLOCK`
The percentage of recv() calls that should be answered with a EAGAIN at random.
For TCP/UNIX sockets.
-## CURL_DBG_SOCK_RMAX
+## `CURL_DBG_SOCK_RMAX`
The maximum data that shall be received from the network in one recv() call.
For TCP/UNIX sockets. This is applied to every recv.
Example: **CURL_DBG_SOCK_RMAX=400** means recv buffer size is limited to a
maximum of 400 bytes.
-## CURL_DBG_SOCK_WBLOCK
+## `CURL_DBG_SOCK_WBLOCK`
The percentage of send() calls that should be answered with a EAGAIN at random.
For TCP/UNIX sockets.
-## CURL_DBG_SOCK_WPARTIAL
+## `CURL_DBG_SOCK_WPARTIAL`
The percentage of data that shall be written to the network. For TCP/UNIX
sockets. This is applied to every send.
Example: **CURL_DBG_SOCK_WPARTIAL=80** means a send with 1000 bytes would
only send 800.
-## CURL_DBG_QUIC_WBLOCK
+## `CURL_DBG_QUIC_WBLOCK`
The percentage of send() calls that should be answered with EAGAIN at random.
QUIC only.
-## CURL_DEBUG
+## `CURL_DEBUG`
Trace logging behavior as an alternative to calling curl_global_trace(3).
triggered by `-vv`, add tracing of TCP in addition and remove tracing of
HTTP/2.
-## CURL_DEBUG_SIZE
+## `CURL_DEBUG_SIZE`
Fake the size returned by CURLINFO_HEADER_SIZE and CURLINFO_REQUEST_SIZE.
-## CURL_GETHOSTNAME
+## `CURL_GETHOSTNAME`
Fake the local machine's unqualified hostname for NTLM and SMTP.
-## CURL_HSTS_HTTP
+## `CURL_HSTS_HTTP`
Bypass the HSTS HTTPS protocol restriction if this variable exists.
-## CURL_FORCETIME
+## `CURL_FORCETIME`
A time of 0 is used for AWS signatures and NTLM if this variable exists.
-## CURL_ENTROPY
+## `CURL_ENTROPY`
A fixed faked value to use instead of a proper random number so that functions
in libcurl that are otherwise getting random outputs can be tested for what
they generate.
-## CURL_SMALLREQSEND
+## `CURL_SMALLREQSEND`
An alternative size of HTTP data to be sent at a time only if smaller than the
current.
-## CURL_SMALLSENDS
+## `CURL_SMALLSENDS`
An alternative size of socket data to be sent at a time only if smaller than
the current.
-## CURL_TIME
+## `CURL_TIME`
Fake Unix timestamp to use for AltSvc, HSTS and CURLINFO variables that are
time related.
variables that are not time-related (such as CURLINFO_LOCAL_PORT), and in that
case the value is not a timestamp.
-## CURL_TRACE
+## `CURL_TRACE`
LDAP tracing is enabled if this variable exists and its value is 1 or greater.
OpenLDAP tracing is separate. Refer to CURL_OPENLDAP_TRACE.
-## CURL_OPENLDAP_TRACE
+## `CURL_OPENLDAP_TRACE`
OpenLDAP tracing is enabled if this variable exists and its value is 1 or
greater. There is a number of debug levels, refer to *openldap.c* comments.
-## CURL_WS_CHUNK_SIZE
+## `CURL_WS_CHUNK_SIZE`
Used to influence the buffer chunk size used for WebSocket encoding and
decoding.
-## CURL_WS_CHUNK_EAGAIN
+## `CURL_WS_CHUNK_EAGAIN`
Used to simulate blocking sends after this chunk size for WebSocket
connections.
-## CURL_FORBID_REUSE
+## `CURL_FORBID_REUSE`
Used to set the CURLOPT_FORBID_REUSE flag on each transfer initiated
by the curl command line tool. The value of the environment variable
does not matter.
-## CURL_GRACEFUL_SHUTDOWN
+## `CURL_GRACEFUL_SHUTDOWN`
Make a blocking, graceful shutdown of all remaining connections when
a multi handle is destroyed. This implicitly triggers for easy handles
possible protocols.
Pass a pointer to a long to receive the version used in the last http
-connection. The returned value is set to one of the CURLPROTO_* values:
+connection. The returned value is set to one of these values:
~~~c
CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_FTP, CURLPROTO_FTPS,
};
~~~
-The *backend* struct member is one of the defines in the CURLSSLBACKEND_*
-series: CURLSSLBACKEND_NONE (when built without TLS support),
-CURLSSLBACKEND_WOLFSSL, CURLSSLBACKEND_SECURETRANSPORT, CURLSSLBACKEND_GNUTLS,
-CURLSSLBACKEND_MBEDTLS, CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL or
-CURLSSLBACKEND_SCHANNEL. (Note that the OpenSSL
-forks are all reported as just OpenSSL here.)
+The *backend* struct member is one of these defines: CURLSSLBACKEND_NONE (when
+built without TLS support), CURLSSLBACKEND_WOLFSSL,
+CURLSSLBACKEND_SECURETRANSPORT, CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_MBEDTLS,
+CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL or CURLSSLBACKEND_SCHANNEL. (Note
+that the OpenSSL forks are all reported as just OpenSSL here.)
The *internals* struct member points to a TLS library specific pointer for
the active ("in use") SSL connection, with the following underlying types:
# DESCRIPTION
-Pass a long that holds a bitmask of CURLMIMEOPT_* defines. Each bit is a
-Boolean flag used while encoding a MIME tree or multipart form data.
+Pass a long that holds a bitmask of options. Each bit is a boolean flag used
+while encoding a MIME tree or multipart form data.
Available bits are:
CURLOPT_PROTOCOLS_STR(3) instead because this option cannot control all
available protocols.
-Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
+Pass a long that holds a bitmask of protocol bits. If used, this bitmask
limits what protocols libcurl may use in the transfer. This allows you to have
a libcurl built to support a wide range of protocols but still limit specific
transfers to only be allowed to use a subset of them. By default libcurl
CURLOPT_REDIR_PROTOCOLS_STR(3) instead because this option cannot
control all available protocols.
-Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
+Pass a long that holds a bitmask of protocol bits. If used, this bitmask
limits what protocols libcurl may use in a transfer that it follows to in a
-redirect when CURLOPT_FOLLOWLOCATION(3) is enabled. This allows you to
-limit specific transfers to only be allowed to use a subset of protocols in
+redirect when CURLOPT_FOLLOWLOCATION(3) is enabled. This allows you to limit
+specific transfers to only be allowed to use a subset of protocols in
redirections.
Protocols denied by CURLOPT_PROTOCOLS(3) are not overridden by this
~~~
If you are on Linux and somehow have a need for paths larger than 107 bytes,
-you can use the proc filesystem to bypass the limitation:
+you can use the *proc* filesystem to bypass the limitation:
~~~c
int dirfd = open(long_directory_path_to_socket, O_DIRECTORY | O_RDONLY);
# HISTORY
-This option was known as CURLOPT_FTP_SSL up to 7.16.4, and the constants were
-known as CURLFTPSSL_* Handled by LDAP since 7.81.0. Fully supported by the
-OpenLDAP backend only.
+This option was known as CURLOPT_FTP_SSL up to 7.16.4. Supported by LDAP since
+7.81.0. Fully supported by the OpenLDAP backend only.
# %AVAILABILITY%
A common technique is to use the write callback to store the incoming data
into a dynamically growing allocated buffer, and then this
CURLOPT_WRITEDATA(3) is used to point to a struct or the buffer to store data
-in. Like in the getinmemory example:
+in. Like in the *getinmemory* example:
https://curl.se/libcurl/c/getinmemory.html
# HISTORY