Return to curl_version_info.3 CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / docs / libcurl |
1.1 ! misho 1: .\" ************************************************************************** ! 2: .\" * _ _ ____ _ ! 3: .\" * Project ___| | | | _ \| | ! 4: .\" * / __| | | | |_) | | ! 5: .\" * | (__| |_| | _ <| |___ ! 6: .\" * \___|\___/|_| \_\_____| ! 7: .\" * ! 8: .\" * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. ! 9: .\" * ! 10: .\" * This software is licensed as described in the file COPYING, which ! 11: .\" * you should have received as part of this distribution. The terms ! 12: .\" * are also available at https://curl.haxx.se/docs/copyright.html. ! 13: .\" * ! 14: .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell ! 15: .\" * copies of the Software, and permit persons to whom the Software is ! 16: .\" * furnished to do so, under the terms of the COPYING file. ! 17: .\" * ! 18: .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY ! 19: .\" * KIND, either express or implied. ! 20: .\" * ! 21: .\" ************************************************************************** ! 22: .\" ! 23: .TH curl_version_info 3 "March 26, 2020" "libcurl 7.70.0" "libcurl Manual" ! 24: ! 25: .SH NAME ! 26: curl_version_info - returns run-time libcurl version info ! 27: .SH SYNOPSIS ! 28: .B #include <curl/curl.h> ! 29: .sp ! 30: .BI "curl_version_info_data *curl_version_info( CURLversion "age ");" ! 31: .ad ! 32: .SH DESCRIPTION ! 33: Returns a pointer to a filled in static struct with information about various ! 34: features in the running version of libcurl. \fIage\fP should be set to the ! 35: version of this functionality by the time you write your program. This way, ! 36: libcurl will always return a proper struct that your program understands, ! 37: while programs in the future might get a different ! 38: struct. \fBCURLVERSION_NOW\fP will be the most recent one for the library you ! 39: have installed: ! 40: ! 41: data = curl_version_info(CURLVERSION_NOW); ! 42: ! 43: Applications should use this information to judge if things are possible to do ! 44: or not, instead of using compile-time checks, as dynamic/DLL libraries can be ! 45: changed independent of applications. ! 46: ! 47: The curl_version_info_data struct looks like this ! 48: ! 49: .nf ! 50: typedef struct { ! 51: CURLversion age; /* see description below */ ! 52: ! 53: const char *version; /* human readable string */ ! 54: unsigned int version_num; /* numeric representation */ ! 55: const char *host; /* human readable string */ ! 56: int features; /* bitmask, see below */ ! 57: char *ssl_version; /* human readable string */ ! 58: long ssl_version_num; /* not used, always zero */ ! 59: const char *libz_version; /* human readable string */ ! 60: const char * const *protocols; /* protocols */ ! 61: ! 62: /* when 'age' is CURLVERSION_SECOND or higher, the members below exist */ ! 63: const char *ares; /* human readable string */ ! 64: int ares_num; /* number */ ! 65: ! 66: /* when 'age' is CURLVERSION_THIRD or higher, the members below exist */ ! 67: const char *libidn; /* human readable string */ ! 68: ! 69: /* when 'age' is CURLVERSION_FOURTH or higher (>= 7.16.1), the members ! 70: below exist */ ! 71: int iconv_ver_num; /* '_libiconv_version' if iconv support enabled */ ! 72: ! 73: const char *libssh_version; /* human readable string */ ! 74: ! 75: /* when 'age' is CURLVERSION_FIFTH or higher (>= 7.57.0), the members ! 76: below exist */ ! 77: unsigned int brotli_ver_num; /* Numeric Brotli version ! 78: (MAJOR << 24) | (MINOR << 12) | PATCH */ ! 79: const char *brotli_version; /* human readable string. */ ! 80: ! 81: /* when 'age' is CURLVERSION_SIXTH or higher (>= 7.66.0), the members ! 82: below exist */ ! 83: unsigned int nghttp2_ver_num; /* Numeric nghttp2 version ! 84: (MAJOR << 16) | (MINOR << 8) | PATCH */ ! 85: const char *nghttp2_version; /* human readable string. */ ! 86: ! 87: const char *quic_version; /* human readable quic (+ HTTP/3) library + ! 88: version or NULL */ ! 89: ! 90: /* when 'age' is CURLVERSION_SEVENTH or higher (>= 7.70.0), the members ! 91: below exist */ ! 92: const char *cainfo; /* the built-in default CURLOPT_CAINFO, might ! 93: be NULL */ ! 94: const char *capath; /* the built-in default CURLOPT_CAPATH, might ! 95: be NULL */ ! 96: } curl_version_info_data; ! 97: .fi ! 98: ! 99: \fIage\fP describes what the age of this struct is. The number depends on how ! 100: new the libcurl you're using is. You are however guaranteed to get a struct ! 101: that you have a matching struct for in the header, as you tell libcurl your ! 102: "age" with the input argument. ! 103: ! 104: \fIversion\fP is just an ascii string for the libcurl version. ! 105: ! 106: \fIversion_num\fP is a 24 bit number created like this: <8 bits major number> ! 107: | <8 bits minor number> | <8 bits patch number>. Version 7.9.8 is therefore ! 108: returned as 0x070908. ! 109: ! 110: \fIhost\fP is an ascii string showing what host information that this libcurl ! 111: was built for. As discovered by a configure script or set by the build ! 112: environment. ! 113: ! 114: \fIfeatures\fP can have none, one or more bits set, and the currently defined ! 115: bits are: ! 116: .RS ! 117: .IP CURL_VERSION_ALTSVC ! 118: HTTP Alt-Svc parsing and the associated options (Added in 7.64.1) ! 119: .IP CURL_VERSION_ASYNCHDNS ! 120: libcurl was built with support for asynchronous name lookups, which allows ! 121: more exact timeouts (even on Windows) and less blocking when using the multi ! 122: interface. (added in 7.10.7) ! 123: .IP CURL_VERSION_BROTLI ! 124: supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0) ! 125: .IP CURL_VERSION_CONV ! 126: libcurl was built with support for character conversions, as provided by the ! 127: CURLOPT_CONV_* callbacks. (Added in 7.15.4) ! 128: .IP CURL_VERSION_CURLDEBUG ! 129: libcurl was built with memory tracking debug capabilities. This is mainly of ! 130: interest for libcurl hackers. (added in 7.19.6) ! 131: .IP CURL_VERSION_DEBUG ! 132: libcurl was built with debug capabilities (added in 7.10.6) ! 133: .IP CURL_VERSION_GSSAPI ! 134: libcurl was built with support for GSS-API. This makes libcurl use provided ! 135: functions for Kerberos and SPNEGO authentication. It also allows libcurl ! 136: to use the current user credentials without the app having to pass them on. ! 137: (Added in 7.38.0) ! 138: .IP CURL_VERSION_GSSNEGOTIATE ! 139: supports HTTP GSS-Negotiate (added in 7.10.6) ! 140: .IP CURL_VERSION_HTTPS_PROXY ! 141: libcurl was built with support for HTTPS-proxy. ! 142: (Added in 7.52.0) ! 143: .IP CURL_VERSION_HTTP2 ! 144: libcurl was built with support for HTTP2. ! 145: (Added in 7.33.0) ! 146: .IP CURL_VERSION_HTTP3 ! 147: HTTP/3 and QUIC support are built-in (Added in 7.66.0) ! 148: .IP CURL_VERSION_IDN ! 149: libcurl was built with support for IDNA, domain names with international ! 150: letters. (Added in 7.12.0) ! 151: .IP CURL_VERSION_IPV6 ! 152: supports IPv6 ! 153: .IP CURL_VERSION_KERBEROS4 ! 154: supports Kerberos V4 (when using FTP) ! 155: .IP CURL_VERSION_KERBEROS5 ! 156: supports Kerberos V5 authentication for FTP, IMAP, POP3, SMTP and SOCKSv5 proxy ! 157: (Added in 7.40.0) ! 158: .IP CURL_VERSION_LARGEFILE ! 159: libcurl was built with support for large files. (Added in 7.11.1) ! 160: .IP CURL_VERSION_LIBZ ! 161: supports HTTP deflate using libz (Added in 7.10) ! 162: .IP CURL_VERSION_MULTI_SSL ! 163: libcurl was built with multiple SSL backends. For details, see ! 164: \fIcurl_global_sslset(3)\fP. ! 165: (Added in 7.56.0) ! 166: .IP CURL_VERSION_NTLM ! 167: supports HTTP NTLM (added in 7.10.6) ! 168: .IP CURL_VERSION_NTLM_WB ! 169: libcurl was built with support for NTLM delegation to a winbind helper. ! 170: (Added in 7.22.0) ! 171: .IP CURL_VERSION_PSL ! 172: libcurl was built with support for Mozilla's Public Suffix List. This makes ! 173: libcurl ignore cookies with a domain that's on the list. ! 174: (Added in 7.47.0) ! 175: .IP CURL_VERSION_SPNEGO ! 176: libcurl was built with support for SPNEGO authentication (Simple and Protected ! 177: GSS-API Negotiation Mechanism, defined in RFC 2478.) (added in 7.10.8) ! 178: .IP CURL_VERSION_SSL ! 179: supports SSL (HTTPS/FTPS) (Added in 7.10) ! 180: .IP CURL_VERSION_SSPI ! 181: libcurl was built with support for SSPI. This is only available on Windows and ! 182: makes libcurl use Windows-provided functions for Kerberos, NTLM, SPNEGO and ! 183: Digest authentication. It also allows libcurl to use the current user ! 184: credentials without the app having to pass them on. (Added in 7.13.2) ! 185: .IP CURL_VERSION_TLSAUTH_SRP ! 186: libcurl was built with support for TLS-SRP. (Added in 7.21.4) ! 187: .IP CURL_VERSION_UNIX_SOCKETS ! 188: libcurl was built with support for Unix domain sockets. ! 189: (Added in 7.40.0) ! 190: .RE ! 191: \fIssl_version\fP is an ASCII string for the TLS library name + version ! 192: used. If libcurl has no SSL support, this is NULL. For example "Schannel", ! 193: \&"SecureTransport" or "OpenSSL/1.1.0g". ! 194: ! 195: \fIssl_version_num\fP is always 0. ! 196: ! 197: \fIlibz_version\fP is an ASCII string (there is no numerical version). If ! 198: libcurl has no libz support, this is NULL. ! 199: ! 200: \fIprotocols\fP is a pointer to an array of char * pointers, containing the ! 201: names protocols that libcurl supports (using lowercase letters). The protocol ! 202: names are the same as would be used in URLs. The array is terminated by a NULL ! 203: entry. ! 204: .SH RETURN VALUE ! 205: A pointer to a curl_version_info_data struct. ! 206: .SH "SEE ALSO" ! 207: \fIcurl_version(3)\fP