aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-06-30 21:17:44 +0900
committerYang Tse <yangsita@gmail.com>2012-07-02 16:28:01 +0200
commit89b431f60fd4d0a91ac120fbb78641f887671606 (patch)
tree02614ff44f8e3dc4cb3a9f67c7beb8606472810f /src
parent4e3320a679d3051d17048c50330f4b4cbe229855 (diff)
curl: Added runtime version check for libmetalink
Diffstat (limited to 'src')
-rw-r--r--src/tool_getparam.c16
-rw-r--r--src/tool_metalink.h11
2 files changed, 26 insertions, 1 deletions
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 4bdf0a59d..c9c6198ff 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -824,7 +824,21 @@ ParameterError getparameter(char *flag, /* f or -long-flag */
case 'J': /* --metalink */
{
#ifdef USE_METALINK
- config->use_metalink = toggle;
+ int major, minor, patch;
+ metalink_get_version(&major, &minor, &patch);
+ if((major*10000)+(minor*100)+patch < CURL_REQ_LIBMETALINK_VERS) {
+ warnf(config,
+ "--metalink option cannot be used because the version of "
+ "the linked libmetalink library is too old. "
+ "Required: %d.%d.%d, found %d.%d.%d\n",
+ CURL_REQ_LIBMETALINK_MAJOR,
+ CURL_REQ_LIBMETALINK_MINOR,
+ CURL_REQ_LIBMETALINK_PATCH,
+ major, minor, patch);
+ return PARAM_BAD_USE;
+ }
+ else
+ config->use_metalink = toggle;
#else
warnf(config, "--metalink option is ignored because the binary is "
"built without the Metalink support.\n");
diff --git a/src/tool_metalink.h b/src/tool_metalink.h
index 42ad28a4b..49a6e64b7 100644
--- a/src/tool_metalink.h
+++ b/src/tool_metalink.h
@@ -78,6 +78,17 @@ typedef struct metalinkfile {
#ifdef USE_METALINK
+/*
+ * curl requires libmetalink 0.1.0 or newer
+ */
+#define CURL_REQ_LIBMETALINK_MAJOR 0
+#define CURL_REQ_LIBMETALINK_MINOR 1
+#define CURL_REQ_LIBMETALINK_PATCH 0
+
+#define CURL_REQ_LIBMETALINK_VERS ((CURL_REQ_LIBMETALINK_MAJOR * 10000) + \
+ (CURL_REQ_LIBMETALINK_MINOR * 100) + \
+ CURL_REQ_LIBMETALINK_PATCH)
+
extern const digest_params MD5_DIGEST_PARAMS[1];
extern const digest_params SHA1_DIGEST_PARAMS[1];
extern const digest_params SHA256_DIGEST_PARAMS[1];