summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-09-25 07:08:41 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-09-25 07:08:41 +0000
commitc0460660d5a0c8f2be98adf79d2f27b5fa8f707a (patch)
tree8c9c485f1996a9dadc431ca633fee23b5f402629
parentb03f4919fb71e250e9b3cd991c37de31d0bbe093 (diff)
downloadgnurl-c0460660d5a0c8f2be98adf79d2f27b5fa8f707a.tar.gz
gnurl-c0460660d5a0c8f2be98adf79d2f27b5fa8f707a.tar.bz2
gnurl-c0460660d5a0c8f2be98adf79d2f27b5fa8f707a.zip
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.
-rw-r--r--include/curl/curl.h21
-rw-r--r--lib/url.c3
-rw-r--r--lib/version.c47
3 files changed, 71 insertions, 0 deletions
diff --git a/include/curl/curl.h b/include/curl/curl.h
index e4b63430a..65deb5247 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -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
diff --git a/lib/url.c b/lib/url.c
index 394d3d0c9..abca0b986 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -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");
}
diff --git a/lib/version.c b/lib/version.c
index 78e956c93..9c347685b 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -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")