Commit 9247daf9 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

enhanced curl_version_info

parent 9031e33b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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.

+2 −0
Original line number Diff line number Diff line
@@ -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 \
+81 −0
Original line number Diff line number Diff line
.\" 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.
+34 −34
Original line number Diff line number Diff line
@@ -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>
+6 −10
Original line number Diff line number Diff line
@@ -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
}
Loading