Wez Furlong's curl_version_info() function added, still needs some

adjustments and possibly some improvments to feature all those things we
could possibly want from this.
This commit is contained in:
Daniel Stenberg 2002-09-25 07:08:41 +00:00
parent b03f4919fb
commit c0460660d5
3 changed files with 71 additions and 0 deletions

View File

@ -909,6 +909,27 @@ CURLcode curl_share_set_unlock_function (curl_share *, curl_unlock_function);
CURLcode curl_share_set_lock_data (curl_share *, void *);
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 */
/* protocols is terminated by an entry with a NULL protoname */
curl_runtime_protocol_info *protocols;
} curl_version_info_data;
/* returns a pointer to a static copy of the version info struct */
const curl_version_info_data *curl_version_info(void);
#ifdef __cplusplus
}
#endif

View File

@ -1832,6 +1832,9 @@ static CURLcode CreateConnection(struct SessionHandle *data,
* is based on the first letters of the server name.
*/
/* Note: if you add a new protocol, please update the list in
* lib/version.c too! */
if(strnequal(conn->gname, "FTP", 3)) {
strcpy(conn->protostr, "ftp");
}

View File

@ -105,6 +105,53 @@ char *curl_version(void)
return version;
}
/* data for curl_version_info */
static const curl_runtime_protocol_info protocols[] = {
#ifndef CURL_DISABLE_FTP
{ "ftp" },
#endif
#ifndef CURL_DISABLE_GOPHER
{ "gopher" },
#endif
#ifndef CURL_DISABLE_TELNET
{ "telnet" },
#endif
#ifndef CURL_DISABLE_DICT
{ "dict" },
#endif
#ifndef CURL_DISABLE_LDAP
{ "ldap" },
#endif
#ifndef CURL_DISABLE_HTTP
{ "http" },
#endif
#ifndef CURL_DISABLE_FILE
{ "file" },
#endif
#ifdef USE_SSLEAY
#ifndef CURL_DISABLE_HTTP
{ "https" },
#endif
#ifndef CURL_DISABLE_FTP
{ "ftps" },
#endif
#endif
{ NULL }
};
static const curl_version_info_data version_info = {
LIBCURL_VERSION,
LIBCURL_VERSION_NUM,
&protocols
};
const curl_version_info_data *curl_version_info(void)
{
return &version_info;
}
/*
* local variables:
* eval: (load-file "../curl-mode.el")