| .\" ************************************************************************** |
| .\" * _ _ ____ _ |
| .\" * Project ___| | | | _ \| | |
| .\" * / __| | | | |_) | | |
| .\" * | (__| |_| | _ <| |___ |
| .\" * \___|\___/|_| \_\_____| |
| .\" * |
| .\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. |
| .\" * |
| .\" * This software is licensed as described in the file COPYING, which |
| .\" * you should have received as part of this distribution. The terms |
| .\" * are also available at https://curl.se/docs/copyright.html. |
| .\" * |
| .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| .\" * copies of the Software, and permit persons to whom the Software is |
| .\" * furnished to do so, under the terms of the COPYING file. |
| .\" * |
| .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| .\" * KIND, either express or implied. |
| .\" * |
| .\" ************************************************************************** |
| .\" |
| .TH curl_version_info 3 "2 Nov 2014" "libcurl 7.40.0" "libcurl Manual" |
| .SH NAME |
| curl_version_info - returns run-time libcurl version info |
| .SH SYNOPSIS |
| .B #include <curl/curl.h> |
| .sp |
| .BI "curl_version_info_data *curl_version_info( CURLversion "age ");" |
| .ad |
| .SH DESCRIPTION |
| Returns a pointer to a filled in static struct with information about various |
| features in the running version of libcurl. \fIage\fP should be set to the |
| version of this functionality by the time you write your program. This way, |
| libcurl will always return a proper struct that your program understands, |
| while programs in the future might get a different |
| struct. \fBCURLVERSION_NOW\fP will be the most recent one for the library you |
| have installed: |
| |
| data = curl_version_info(CURLVERSION_NOW); |
| |
| Applications should use this information to judge if things are possible to do |
| or not, instead of using compile-time checks, as dynamic/DLL libraries can be |
| changed independent of applications. |
| |
| The curl_version_info_data struct looks like this |
| |
| .nf |
| typedef struct { |
| CURLversion age; /* see description below */ |
| |
| const char *version; /* human readable string */ |
| unsigned int version_num; /* numeric representation */ |
| const char *host; /* human readable string */ |
| int features; /* bitmask, see below */ |
| char *ssl_version; /* human readable string */ |
| long ssl_version_num; /* not used, always zero */ |
| const char *libz_version; /* human readable string */ |
| const char * const *protocols; /* protocols */ |
| |
| /* when 'age' is CURLVERSION_SECOND or higher, the members below exist */ |
| const char *ares; /* human readable string */ |
| int ares_num; /* number */ |
| |
| /* when 'age' is CURLVERSION_THIRD or higher, the members below exist */ |
| const char *libidn; /* human readable string */ |
| |
| /* when 'age' is CURLVERSION_FOURTH or higher (>= 7.16.1), the members |
| below exist */ |
| int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */ |
| |
| const char *libssh_version; /* human readable string */ |
| |
| /* when 'age' is CURLVERSION_FIFTH or higher (>= 7.57.0), the members |
| below exist */ |
| unsigned int brotli_ver_num; /* Numeric Brotli version |
| (MAJOR << 24) | (MINOR << 12) | PATCH */ |
| const char *brotli_version; /* human readable string. */ |
| |
| /* when 'age' is CURLVERSION_SIXTH or higher (>= 7.66.0), the members |
| below exist */ |
| unsigned int nghttp2_ver_num; /* Numeric nghttp2 version |
| (MAJOR << 16) | (MINOR << 8) | PATCH */ |
| const char *nghttp2_version; /* human readable string. */ |
| |
| const char *quic_version; /* human readable quic (+ HTTP/3) library + |
| version or NULL */ |
| |
| /* when 'age' is CURLVERSION_SEVENTH or higher (>= 7.70.0), the members |
| below exist */ |
| const char *cainfo; /* the built-in default CURLOPT_CAINFO, might |
| be NULL */ |
| const char *capath; /* the built-in default CURLOPT_CAPATH, might |
| be NULL */ |
| /* when 'age' is CURLVERSION_EIGHTH or higher (>= 7.71.0), the members |
| below exist */ |
| unsigned int zstd_ver_num; /* Numeric Zstd version |
| (MAJOR << 24) | (MINOR << 12) | PATCH */ |
| const char *zstd_version; /* human readable string. */ |
| } curl_version_info_data; |
| .fi |
| |
| \fIage\fP describes what the age of this struct is. The number depends on how |
| new the libcurl you're using is. You are however guaranteed to get a struct |
| that you have a matching struct for in the header, as you tell libcurl your |
| "age" with the input argument. |
| |
| \fIversion\fP is just an ascii string for the libcurl version. |
| |
| \fIversion_num\fP is a 24 bit number created like this: <8 bits major number> |
| | <8 bits minor number> | <8 bits patch number>. Version 7.9.8 is therefore |
| returned as 0x070908. |
| |
| \fIhost\fP is an ascii string showing what host information that this libcurl |
| was built for. As discovered by a configure script or set by the build |
| environment. |
| |
| \fIfeatures\fP can have none, one or more bits set, and the currently defined |
| bits are: |
| .RS |
| .IP CURL_VERSION_ALTSVC |
| HTTP Alt-Svc parsing and the associated options (Added in 7.64.1) |
| .IP CURL_VERSION_ASYNCHDNS |
| libcurl was built with support for asynchronous name lookups, which allows |
| more exact timeouts (even on Windows) and less blocking when using the multi |
| interface. (added in 7.10.7) |
| .IP CURL_VERSION_BROTLI |
| supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0) |
| .IP CURL_VERSION_ZSTD |
| supports HTTP zstd content encoding using zstd library (Added in 7.72.0) |
| .IP CURL_VERSION_CONV |
| libcurl was built with support for character conversions, as provided by the |
| CURLOPT_CONV_* callbacks. (Added in 7.15.4) |
| .IP CURL_VERSION_CURLDEBUG |
| libcurl was built with memory tracking debug capabilities. This is mainly of |
| interest for libcurl hackers. (added in 7.19.6) |
| .IP CURL_VERSION_DEBUG |
| libcurl was built with debug capabilities (added in 7.10.6) |
| .IP CURL_VERSION_GSSAPI |
| libcurl was built with support for GSS-API. This makes libcurl use provided |
| functions for Kerberos and SPNEGO authentication. It also allows libcurl |
| to use the current user credentials without the app having to pass them on. |
| (Added in 7.38.0) |
| .IP CURL_VERSION_GSSNEGOTIATE |
| supports HTTP GSS-Negotiate (added in 7.10.6) |
| .IP CURL_VERSION_HSTS |
| libcurl was built with support for HSTS (HTTP Strict Transport Security) |
| (Added in 7.74.0) |
| .IP CURL_VERSION_HTTPS_PROXY |
| libcurl was built with support for HTTPS-proxy. |
| (Added in 7.52.0) |
| .IP CURL_VERSION_HTTP2 |
| libcurl was built with support for HTTP2. |
| (Added in 7.33.0) |
| .IP CURL_VERSION_HTTP3 |
| HTTP/3 and QUIC support are built-in (Added in 7.66.0) |
| .IP CURL_VERSION_IDN |
| libcurl was built with support for IDNA, domain names with international |
| letters. (Added in 7.12.0) |
| .IP CURL_VERSION_IPV6 |
| supports IPv6 |
| .IP CURL_VERSION_KERBEROS4 |
| supports Kerberos V4 (when using FTP). Legacy bit. Deprecated since 7.33.0. |
| .IP CURL_VERSION_KERBEROS5 |
| supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy |
| (Added in 7.40.0) |
| .IP CURL_VERSION_LARGEFILE |
| libcurl was built with support for large files. (Added in 7.11.1) |
| .IP CURL_VERSION_UNICODE |
| libcurl was built with Unicode support on Windows. This makes non-ASCII |
| characters work in filenames and options passed to libcurl. (Added in 7.72.0) |
| .IP CURL_VERSION_LIBZ |
| supports HTTP deflate using libz (Added in 7.10) |
| .IP CURL_VERSION_MULTI_SSL |
| libcurl was built with multiple SSL backends. For details, see |
| \fIcurl_global_sslset(3)\fP. |
| (Added in 7.56.0) |
| .IP CURL_VERSION_NTLM |
| supports HTTP NTLM (added in 7.10.6) |
| .IP CURL_VERSION_NTLM_WB |
| libcurl was built with support for NTLM delegation to a winbind helper. |
| (Added in 7.22.0) |
| .IP CURL_VERSION_PSL |
| libcurl was built with support for Mozilla's Public Suffix List. This makes |
| libcurl ignore cookies with a domain that's on the list. |
| (Added in 7.47.0) |
| .IP CURL_VERSION_SPNEGO |
| libcurl was built with support for SPNEGO authentication (Simple and Protected |
| GSS-API Negotiation Mechanism, defined in RFC 2478.) (added in 7.10.8) |
| .IP CURL_VERSION_SSL |
| supports SSL (HTTPS/FTPS) (Added in 7.10) |
| .IP CURL_VERSION_SSPI |
| libcurl was built with support for SSPI. This is only available on Windows and |
| makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and |
| Digest authentication. It also allows libcurl to use the current user |
| credentials without the app having to pass them on. (Added in 7.13.2) |
| .IP CURL_VERSION_TLSAUTH_SRP |
| libcurl was built with support for TLS-SRP (in one or more of the built-in TLS |
| backends). (Added in 7.21.4) |
| .IP CURL_VERSION_UNIX_SOCKETS |
| libcurl was built with support for Unix domain sockets. |
| (Added in 7.40.0) |
| .RE |
| \fIssl_version\fP is an ASCII string for the TLS library name + version |
| used. If libcurl has no SSL support, this is NULL. For example "Schannel", |
| \&"SecureTransport" or "OpenSSL/1.1.0g". |
| |
| \fIssl_version_num\fP is always 0. |
| |
| \fIlibz_version\fP is an ASCII string (there is no numerical version). If |
| libcurl has no libz support, this is NULL. |
| |
| \fIprotocols\fP is a pointer to an array of char * pointers, containing the |
| names protocols that libcurl supports (using lowercase letters). The protocol |
| names are the same as would be used in URLs. The array is terminated by a NULL |
| entry. |
| .SH RETURN VALUE |
| A pointer to a curl_version_info_data struct. |
| .SH "SEE ALSO" |
| \fIcurl_version(3)\fP |