get an argument and add a 'age' field to the struct

This commit is contained in:
Daniel Stenberg 2002-09-30 19:51:05 +00:00
parent 84fa12c885
commit dc9e415602
3 changed files with 45 additions and 17 deletions

View File

@ -2,17 +2,23 @@
.\" nroff -man [file] .\" nroff -man [file]
.\" $Id$ .\" $Id$
.\" .\"
.TH curl_version_info 3 "25 Sep 2002" "libcurl 7.10" "libcurl Manual" .TH curl_version_info 3 "30 Sep 2002" "libcurl 7.10" "libcurl Manual"
.SH NAME .SH NAME
curl_version_info - returns run-time libcurl version info curl_version_info - returns run-time libcurl version info
.SH SYNOPSIS .SH SYNOPSIS
.B #include <curl/curl.h> .B #include <curl/curl.h>
.sp .sp
.BI "curl_version_info_data *curl_version_info( );" .BI "curl_version_info_data *curl_version_info( CURLversion "type ");"
.ad .ad
.SH DESCRIPTION .SH DESCRIPTION
Returns a pointer to a filled in struct with information about various Returns a pointer to a filled in struct with information about various
run-time features in libcurl. run-time features in libcurl. \fItype\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 an different struct. CURLVERSION_NOW 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 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 or not, instead of using compile-time checks, as dynamic/DLL libraries can be
@ -22,6 +28,7 @@ The curl_version_info_data struct looks like this
.nf .nf
typedef struct { typedef struct {
CURLversion age; /* 0 - this kind of struct */
const char *version; /* human readable string */ const char *version; /* human readable string */
unsigned int version_num; /* numeric representation */ unsigned int version_num; /* numeric representation */
const char *host; /* human readable string */ const char *host; /* human readable string */
@ -33,6 +40,11 @@ typedef struct {
} curl_version_info_data; } curl_version_info_data;
.fi .fi
\fIage\fP describes what kind of struct this is. It is always 0 now. In a
future libcurl, if this struct changes, this age counter may be increased, and
then the struct for number 1 will look different (except for this first struct
field).
\fIversion\fP is just an ascii string for the libcurl version. \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 \fIversion_num\fP is a 6 digit hexadecimal number created like this: <2 digits

View File

@ -688,7 +688,8 @@ int curl_formparse(char *, struct curl_httppost **,
#undef CFINIT #undef CFINIT
#endif #endif
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
defined(__HP_aCC)
#define CFINIT(name) CURLFORM_ ## name #define CFINIT(name) CURLFORM_ ## name
#else #else
/* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ /* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */
@ -916,7 +917,20 @@ CURLcode curl_share_destroy (curl_share *);
* Structures for querying information about the curl library at runtime. * Structures for querying information about the curl library at runtime.
*/ */
typedef enum {
CURLVERSION_FIRST,
CURLVERSION_LAST /* never actually use this */
} CURLversion;
/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by
basicly all programs ever, that want to get version information. It is
meant to be a built-in version number for what kind of struct the caller
expects. If the struct ever changes, we redfine the NOW to another enum
from above. */
#define CURLVERSION_NOW CURLVERSION_FIRST
typedef struct { typedef struct {
CURLversion age; /* age of the returned struct */
const char *version; /* LIBCURL_VERSION */ const char *version; /* LIBCURL_VERSION */
unsigned int version_num; /* LIBCURL_VERSION_NUM */ unsigned int version_num; /* LIBCURL_VERSION_NUM */
const char *host; /* OS/host/cpu/machine when configured */ const char *host; /* OS/host/cpu/machine when configured */
@ -925,7 +939,7 @@ typedef struct {
long ssl_version_num; /* number */ long ssl_version_num; /* number */
const char *libz_version; /* human readable string */ const char *libz_version; /* human readable string */
/* protocols is terminated by an entry with a NULL protoname */ /* protocols is terminated by an entry with a NULL protoname */
const char *protocols[1]; const char **protocols;
} curl_version_info_data; } curl_version_info_data;
#define CURL_VERSION_IPV6 (1<<0) #define CURL_VERSION_IPV6 (1<<0)
@ -934,7 +948,7 @@ typedef struct {
#define CURL_VERSION_LIBZ (1<<3) #define CURL_VERSION_LIBZ (1<<3)
/* returns a pointer to a static copy of the version info struct */ /* returns a pointer to a static copy of the version info struct */
curl_version_info_data *curl_version_info(void); curl_version_info_data *curl_version_info(CURLversion);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -122,39 +122,40 @@ char *curl_version(void)
static const char *protocols[] = { static const char *protocols[] = {
#ifndef CURL_DISABLE_FTP #ifndef CURL_DISABLE_FTP
{ "ftp" }, "ftp",
#endif #endif
#ifndef CURL_DISABLE_GOPHER #ifndef CURL_DISABLE_GOPHER
{ "gopher" }, "gopher",
#endif #endif
#ifndef CURL_DISABLE_TELNET #ifndef CURL_DISABLE_TELNET
{ "telnet" }, "telnet",
#endif #endif
#ifndef CURL_DISABLE_DICT #ifndef CURL_DISABLE_DICT
{ "dict" }, "dict",
#endif #endif
#ifndef CURL_DISABLE_LDAP #ifndef CURL_DISABLE_LDAP
{ "ldap" }, "ldap",
#endif #endif
#ifndef CURL_DISABLE_HTTP #ifndef CURL_DISABLE_HTTP
{ "http" }, "http",
#endif #endif
#ifndef CURL_DISABLE_FILE #ifndef CURL_DISABLE_FILE
{ "file" }, "file",
#endif #endif
#ifdef USE_SSLEAY #ifdef USE_SSLEAY
#ifndef CURL_DISABLE_HTTP #ifndef CURL_DISABLE_HTTP
{ "https" }, "https",
#endif #endif
#ifndef CURL_DISABLE_FTP #ifndef CURL_DISABLE_FTP
{ "ftps" }, "ftps",
#endif #endif
#endif #endif
{ NULL } NULL
}; };
static curl_version_info_data version_info = { static curl_version_info_data version_info = {
CURLVERSION_FIRST,
LIBCURL_VERSION, LIBCURL_VERSION,
LIBCURL_VERSION_NUM, LIBCURL_VERSION_NUM,
OS, /* as found by configure or set by hand at build-time */ OS, /* as found by configure or set by hand at build-time */
@ -178,7 +179,7 @@ static curl_version_info_data version_info = {
protocols protocols
}; };
curl_version_info_data *curl_version_info(void) curl_version_info_data *curl_version_info(CURLversion stamp)
{ {
#ifdef USE_SSLEAY #ifdef USE_SSLEAY
static char ssl_buffer[80]; static char ssl_buffer[80];
@ -194,6 +195,7 @@ curl_version_info_data *curl_version_info(void)
version_info.libz_version = zlibVersion(); version_info.libz_version = zlibVersion();
/* libz left NULL if non-existing */ /* libz left NULL if non-existing */
#endif #endif
(void)stamp; /* avoid compiler warnings, we don't use this */
return &version_info; return &version_info;
} }