diff options
author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-06-30 21:17:44 +0900 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2012-07-02 16:28:01 +0200 |
commit | 89b431f60fd4d0a91ac120fbb78641f887671606 (patch) | |
tree | 02614ff44f8e3dc4cb3a9f67c7beb8606472810f /src | |
parent | 4e3320a679d3051d17048c50330f4b4cbe229855 (diff) |
curl: Added runtime version check for libmetalink
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_getparam.c | 16 | ||||
-rw-r--r-- | src/tool_metalink.h | 11 |
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]; |