aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--docs/libcurl/Makefile.am2
-rw-r--r--docs/libcurl/curl_version_info.381
-rw-r--r--docs/libcurl/index.html68
-rw-r--r--include/curl/curl.h16
-rw-r--r--lib/version.c11
6 files changed, 135 insertions, 46 deletions
diff --git a/CHANGES b/CHANGES
index fbe917730..3060d77b9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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];