diff options
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | docs/libcurl/Makefile.am | 2 | ||||
-rw-r--r-- | docs/libcurl/curl_version_info.3 | 81 | ||||
-rw-r--r-- | docs/libcurl/index.html | 68 | ||||
-rw-r--r-- | include/curl/curl.h | 16 | ||||
-rw-r--r-- | lib/version.c | 11 |
6 files changed, 135 insertions, 46 deletions
@@ -7,6 +7,9 @@ Changelog +Daniel (26 Sep 2002) +- Extended curl_version_info() more and wrote a man page for it. + Daniel (25 Sep 2002) - libcurl could leak memory when downloading multiple files using http ranges. diff --git a/docs/libcurl/Makefile.am b/docs/libcurl/Makefile.am index 4e549cb44..3a6c266c0 100644 --- a/docs/libcurl/Makefile.am +++ b/docs/libcurl/Makefile.am @@ -19,6 +19,7 @@ man_MANS = \ curl_slist_append.3 \ curl_slist_free_all.3 \ curl_version.3 \ + curl_version_info.3 \ curl_escape.3 \ curl_unescape.3 \ curl_free.3 \ @@ -53,6 +54,7 @@ HTMLPAGES = \ curl_slist_append.html \ curl_slist_free_all.html \ curl_version.html \ + curl_version_info.html \ curl_escape.html \ curl_unescape.html \ curl_free.html \ diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3 new file mode 100644 index 000000000..83becb608 --- /dev/null +++ b/docs/libcurl/curl_version_info.3 @@ -0,0 +1,81 @@ +.\" You can view this file with: +.\" nroff -man [file] +.\" $Id$ +.\" +.TH curl_version_info 3 "25 Sep 2002" "libcurl 7.10" "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( );" +.ad +.SH DESCRIPTION +Returns a pointer to a filled in struct with information about various +run-time features in libcurl. + +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 { + 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; /* number */ + char *libz_version; /* human readable string */ + const char *protocols[]; /* list of protocols */ +} curl_version_info_data; +.fi + +\fIversion\fP is just an ascii string for the libcurl version. + +\fIversion_num\fP is a 6 digit hexadecimal number created like this: <2 digits +major number> | <2 digits minor number> | <2 digits 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: +.TP 5.5 +.B CURL_VERSION_IPV6 +supports IPv6 +.TP +.B CURL_VERSION_KERBEROS4 +supports kerberos4 (when using FTP) +.TP +.B CURL_VERSION_SSL +supports SSL (HTTPS/FTPS) +.TP +.B CURL_VERSION_LIBZ +supports HTTP deflate using libz +.PP +\fIssl_version\fP is an ascii string for the OpenSSL version used. If libcurl +has no SSL support, this is NULL. + +\fIssl_version_num\fP is the numerical OpenSSL version value as defined by the +OpenSSL project. If libcurl has no SSL support, this is 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 +.SH BUGS +No known bugs. diff --git a/docs/libcurl/index.html b/docs/libcurl/index.html index a14679860..a1d5f8301 100644 --- a/docs/libcurl/index.html +++ b/docs/libcurl/index.html @@ -8,46 +8,46 @@ HTML> <H1 ALIGN="CENTER">Index to Curl documentation</H1> <H2>Programs</H2> -<P><A HREF="curl-config.html">curl-config.html</A> -<P><A HREF="curl.html">curl.html</A> +<P><A HREF="curl-config.html">curl-config</A> +<P><A HREF="curl.html">curl</A> <h2>Overviews</h2> -<P><A HREF="libcurl.html">libcurl.html</A> -<p><a href="libcurl-multi.html">libcurl-multi.html</a> -<p><a href="libcurl-errors.html">libcurl-errors.html</a> +<P><A HREF="libcurl.html">libcurl</A> +<p><a href="libcurl-multi.html">libcurl-multi</a> +<p><a href="libcurl-errors.html">libcurl-errors</a> <H2>Library routines</H2> -<P><A HREF="curl_easy_cleanup.html">curl_easy_cleanup.html</A> -<P><A HREF="curl_easy_duphandle.html">curl_easy_duphandle.html</A> -<P><A HREF="curl_easy_getinfo.html">curl_easy_getinfo.html</A> +<P><A HREF="curl_easy_cleanup.html">curl_easy_cleanup</A> +<P><A HREF="curl_easy_duphandle.html">curl_easy_duphandle</A> +<P><A HREF="curl_easy_getinfo.html">curl_easy_getinfo</A> <P><A HREF="curl_easy_init.html">curl_easy_init.html</A> -<P><A HREF="curl_easy_perform.html">curl_easy_perform.html</A> -<P><A HREF="curl_easy_setopt.html">curl_easy_setopt.html</A> -<P><A HREF="curl_escape.html">curl_escape.html</A> -<P><A HREF="curl_formadd.html">curl_formadd.html</A> -<P><A HREF="curl_formfree.html">curl_formfree.html</A> -<P><A HREF="curl_formparse.html">curl_formparse.html</A> -<P><A HREF="curl_free.html">curl_free.html</A> -<P><A HREF="curl_getdate.html">curl_getdate.html</A> -<P><A HREF="curl_getenv.html">curl_getenv.html</A> -<P><A HREF="curl_global_cleanup.html">curl_global_cleanup.html</A> -<P><A HREF="curl_global_init.html">curl_global_init.html</A> -<P><A HREF="curl_mprintf.html">curl_mprintf.html</A> -<P><A HREF="curl_slist_append.html">curl_slist_append.html</A> -<P><A HREF="curl_slist_free_all.html">curl_slist_free_all.html</A> -<P><A HREF="curl_strequal.html">curl_strequal.html</A> -<P><A HREF="curl_strnequal.html">curl_strnequal.html</A> -<P><A HREF="curl_unescape.html">curl_unescape.html</A> -<P><A HREF="curl_version.html">curl_version.html</A> +<P><A HREF="curl_easy_perform.html">curl_easy_perform</A> +<P><A HREF="curl_easy_setopt.html">curl_easy_setopt</A> +<P><A HREF="curl_escape.html">curl_escape</A> +<P><A HREF="curl_formadd.html">curl_formadd</A> +<P><A HREF="curl_formfree.html">curl_formfree</A> +<P><A HREF="curl_formparse.html">curl_formparse</A> +<P><A HREF="curl_free.html">curl_free</A> +<P><A HREF="curl_getdate.html">curl_getdate</A> +<P><A HREF="curl_getenv.html">curl_getenv</A> +<P><A HREF="curl_global_cleanup.html">curl_global_cleanup</A> +<P><A HREF="curl_global_init.html">curl_global_init</A> +<P><A HREF="curl_mprintf.html">curl_mprintf</A> +<P><A HREF="curl_slist_append.html">curl_slist_append</A> +<P><A HREF="curl_slist_free_all.html">curl_slist_free_all</A> +<P><A HREF="curl_strequal.html">curl_strequal</A> +<P><A HREF="curl_strnequal.html">curl_strnequal</A> +<P><A HREF="curl_unescape.html">curl_unescape</A> +<P><A HREF="curl_version.html">curl_version</A> +<P><A HREF="curl_version_info.html">curl_version_info</A> <hr> -<p><a href="curl_multi_add_handle.html">curl_multi_add_handle.html</a> -<p><a href="curl_multi_cleanup.html">curl_multi_cleanup.html</a> -<p><a href="curl_multi_fdset.html">curl_multi_fdset.html</a> -<p><a href="curl_multi_info_read.html">curl_multi_info_read.html</a> -<p><a href="curl_multi_init.html">curl_multi_init.html</a> -<p><a href="curl_multi_perform.html">curl_multi_perform.html</a> -<p><a href="curl_multi_remove_handle.html">curl_multi_remove_handle.html</a> - +<p><a href="curl_multi_add_handle.html">curl_multi_add_handle</a> +<p><a href="curl_multi_cleanup.html">curl_multi_cleanup</a> +<p><a href="curl_multi_fdset.html">curl_multi_fdset</a> +<p><a href="curl_multi_info_read.html">curl_multi_info_read</a> +<p><a href="curl_multi_init.html">curl_multi_init</a> +<p><a href="curl_multi_perform.html">curl_multi_perform</a> +<p><a href="curl_multi_remove_handle.html">curl_multi_remove_handle</a> </BODY> </HTML> diff --git a/include/curl/curl.h b/include/curl/curl.h index de1e5aeb2..e5ba70379 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -916,29 +916,25 @@ CURLcode curl_share_destroy (curl_share *); * Structures for querying information about the curl library at runtime. */ -/* declared as a struct to allow future expansion while remaining backwards - * and binary compatible; any new fields in these two structs must be added - * after the existing fields */ -typedef struct { - const char *protoname; -} curl_runtime_protocol_info; - typedef struct { const char *version; /* LIBCURL_VERSION */ unsigned int version_num; /* LIBCURL_VERSION_NUM */ + const char *host; /* OS/host/cpu/machine when configured */ int features; /* bitmask, see defines below */ char *ssl_version; /* human readable string */ long ssl_version_num; /* number */ - char *libz_version; /* human readable string */ + const char *libz_version; /* human readable string */ /* protocols is terminated by an entry with a NULL protoname */ - const curl_runtime_protocol_info *protocols; + const char *protocols[1]; } curl_version_info_data; #define CURL_VERSION_IPV6 (1<<0) #define CURL_VERSION_KERBEROS4 (1<<1) +#define CURL_VERSION_SSL (1<<2) +#define CURL_VERSION_LIBZ (1<<3) /* returns a pointer to a static copy of the version info struct */ -const curl_version_info_data *curl_version_info(void); +curl_version_info_data *curl_version_info(void); #ifdef __cplusplus } diff --git a/lib/version.c b/lib/version.c index 6456194fd..33cea4619 100644 --- a/lib/version.c +++ b/lib/version.c @@ -120,7 +120,7 @@ char *curl_version(void) /* data for curl_version_info */ -static const curl_runtime_protocol_info protocols[] = { +static const char *protocols[] = { #ifndef CURL_DISABLE_FTP { "ftp" }, #endif @@ -157,6 +157,7 @@ static const curl_runtime_protocol_info protocols[] = { static curl_version_info_data version_info = { LIBCURL_VERSION, LIBCURL_VERSION_NUM, + OS, /* as found by configure or set by hand at build-time */ 0 /* features is 0 by default */ #ifdef ENABLE_IPV6 | CURL_VERSION_IPV6 @@ -164,6 +165,12 @@ static curl_version_info_data version_info = { #ifdef KRB4 | CURL_VERSION_KERBEROS4 #endif +#ifdef USE_SSLEAY + | CURL_VERSION_SSL +#endif +#ifdef HAVE_LIBZ + | CURL_VERSION_LIBZ +#endif , NULL, /* ssl_version */ 0, /* ssl_version_num */ @@ -171,7 +178,7 @@ static curl_version_info_data version_info = { protocols }; -const curl_version_info_data *curl_version_info(void) +curl_version_info_data *curl_version_info(void) { #ifdef USE_SSLEAY static char ssl_buffer[80]; |