diff options
-rw-r--r-- | src/Makefile-metalink.inc | 1 | ||||
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/Makefile.inc | 6 | ||||
-rw-r--r-- | src/tool_cfgable.h | 5 | ||||
-rw-r--r-- | src/tool_getparam.c | 5 | ||||
-rw-r--r-- | src/tool_metalink.c | 126 | ||||
-rw-r--r-- | src/tool_metalink.h | 2 | ||||
-rw-r--r-- | src/tool_operate.c | 23 |
8 files changed, 73 insertions, 98 deletions
diff --git a/src/Makefile-metalink.inc b/src/Makefile-metalink.inc deleted file mode 100644 index b6eb4d2e4..000000000 --- a/src/Makefile-metalink.inc +++ /dev/null @@ -1 +0,0 @@ -curl_SOURCES += tool_metalink.c tool_metalink.h diff --git a/src/Makefile.am b/src/Makefile.am index 90c9716b6..6e8ce38a1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -50,9 +50,6 @@ AM_CPPFLAGS = -DCURL_STATICLIB endif include Makefile.inc -if HAVE_LIBMETALINK -include Makefile-metalink.inc -endif # HAVE_LIBMETALINK # This might hold -Werror CFLAGS += @CURL_CFLAG_EXTRAS@ @LIBMETALINK_CFLAGS@ diff --git a/src/Makefile.inc b/src/Makefile.inc index e070b3a66..3265ea9d8 100644 --- a/src/Makefile.inc +++ b/src/Makefile.inc @@ -50,7 +50,8 @@ CURL_CFILES = hugehelp.c \ tool_vms.c \ tool_writeenv.c \ tool_writeout.c \ - tool_xattr.c + tool_xattr.c \ + tool_metalink.c CURL_HFILES = hugehelp.h \ tool_binmode.h \ @@ -91,7 +92,8 @@ CURL_HFILES = hugehelp.h \ tool_vms.h \ tool_writeenv.h \ tool_writeout.h \ - tool_xattr.h + tool_xattr.h \ + tool_metalink.h curl_SOURCES = $(CURL_CFILES) $(CURLX_ONES) $(CURL_HFILES) diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h index 72f6cef30..2183c04df 100644 --- a/src/tool_cfgable.h +++ b/src/tool_cfgable.h @@ -25,9 +25,7 @@ #include "tool_sdecls.h" -#ifdef HAVE_LIBMETALINK #include "tool_metalink.h" -#endif /* HAVE_LIBMETALINK */ struct Configurable { CURL *easy; /* once we have one, we keep it here */ @@ -202,10 +200,9 @@ struct Configurable { bool xattr; /* store metadata in extended attributes */ long gssapi_delegation; bool ssl_allow_beast; /* allow this SSL vulnerability */ -#ifdef HAVE_LIBMETALINK + metalinkfile *metalinkfile_list; /* point to the first node */ metalinkfile *metalinkfile_last; /* point to the last/current node */ -#endif /* HAVE_LIBMETALINK */ }; /* struct Configurable */ void free_config_fields(struct Configurable *config); diff --git a/src/tool_getparam.c b/src/tool_getparam.c index a07c67176..c8dc7ae14 100644 --- a/src/tool_getparam.c +++ b/src/tool_getparam.c @@ -43,10 +43,7 @@ #include "tool_paramhlp.h" #include "tool_parsecfg.h" #include "tool_version.h" - -#ifdef HAVE_LIBMETALINK -# include "tool_metalink.h" -#endif /* HAVE_LIBMETALINK */ +#include "tool_metalink.h" #include "memdebug.h" /* keep this as LAST include */ diff --git a/src/tool_metalink.c b/src/tool_metalink.c index 461dbf148..6e18b4247 100644 --- a/src/tool_metalink.c +++ b/src/tool_metalink.c @@ -31,6 +31,8 @@ # include <fcntl.h> #endif +#include <metalink/metalink_parser.h> + #include "rawstr.h" #include "tool_metalink.h" @@ -412,6 +414,8 @@ int metalink_check_hash(struct Configurable *config, #endif /* METALINK_HASH_CHECK */ +#ifdef HAVE_LIBMETALINK + static metalink_checksum *new_metalink_checksum(const char *hash_name, const char *hash_value) { @@ -423,16 +427,6 @@ static metalink_checksum *new_metalink_checksum(const char *hash_name, return chksum; } -static void delete_metalink_checksum(metalink_checksum *chksum) -{ - if(chksum == NULL) { - return; - } - Curl_safefree(chksum->hash_value); - Curl_safefree(chksum->hash_name); - Curl_safefree(chksum); -} - static metalink_resource *new_metalink_resource(const char *url) { metalink_resource *res; @@ -442,15 +436,6 @@ static metalink_resource *new_metalink_resource(const char *url) return res; } -static void delete_metalink_resource(metalink_resource *res) -{ - if(res == NULL) { - return; - } - Curl_safefree(res->url); - Curl_safefree(res); -} - static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo) { metalinkfile *f; @@ -488,47 +473,6 @@ static metalinkfile *new_metalinkfile(metalink_file_t *fileinfo) return f; } -static void delete_metalinkfile(metalinkfile *mlfile) -{ - metalink_checksum *mc; - metalink_resource *res; - if(mlfile == NULL) { - return; - } - Curl_safefree(mlfile->filename); - for(mc = mlfile->checksum; mc;) { - metalink_checksum *next; - next = mc->next; - delete_metalink_checksum(mc); - mc = next; - } - for(res = mlfile->resource; res;) { - metalink_resource *next; - next = res->next; - delete_metalink_resource(res); - res = next; - } - Curl_safefree(mlfile); -} - -int count_next_metalink_resource(metalinkfile *mlfile) -{ - int count = 0; - metalink_resource *res; - for(res = mlfile->resource; res; res = res->next, ++count); - return count; -} - -void clean_metalink(struct Configurable *config) -{ - while(config->metalinkfile_list) { - metalinkfile *mlfile = config->metalinkfile_list; - config->metalinkfile_list = config->metalinkfile_list->next; - delete_metalinkfile(mlfile); - } - config->metalinkfile_last = 0; -} - int parse_metalink(struct Configurable *config, const char *infile) { metalink_error_t r; @@ -592,6 +536,8 @@ int parse_metalink(struct Configurable *config, const char *infile) return 0; } +#endif /* HAVE_LIBMETALINK */ + /* * Returns nonzero if content_type includes mediatype. */ @@ -612,3 +558,63 @@ int check_metalink_content_type(const char *content_type) { return check_content_type(content_type, "application/metalink+xml"); } + +int count_next_metalink_resource(metalinkfile *mlfile) +{ + int count = 0; + metalink_resource *res; + for(res = mlfile->resource; res; res = res->next, ++count); + return count; +} + +static void delete_metalink_checksum(metalink_checksum *chksum) +{ + if(chksum == NULL) { + return; + } + Curl_safefree(chksum->hash_value); + Curl_safefree(chksum->hash_name); + Curl_safefree(chksum); +} + +static void delete_metalink_resource(metalink_resource *res) +{ + if(res == NULL) { + return; + } + Curl_safefree(res->url); + Curl_safefree(res); +} + +static void delete_metalinkfile(metalinkfile *mlfile) +{ + metalink_checksum *mc; + metalink_resource *res; + if(mlfile == NULL) { + return; + } + Curl_safefree(mlfile->filename); + for(mc = mlfile->checksum; mc;) { + metalink_checksum *next; + next = mc->next; + delete_metalink_checksum(mc); + mc = next; + } + for(res = mlfile->resource; res;) { + metalink_resource *next; + next = res->next; + delete_metalink_resource(res); + res = next; + } + Curl_safefree(mlfile); +} + +void clean_metalink(struct Configurable *config) +{ + while(config->metalinkfile_list) { + metalinkfile *mlfile = config->metalinkfile_list; + config->metalinkfile_list = config->metalinkfile_list->next; + delete_metalinkfile(mlfile); + } + config->metalinkfile_last = 0; +} diff --git a/src/tool_metalink.h b/src/tool_metalink.h index bffa0deea..e3c66fc23 100644 --- a/src/tool_metalink.h +++ b/src/tool_metalink.h @@ -23,8 +23,6 @@ ***************************************************************************/ #include "tool_setup.h" -#include <metalink/metalink_parser.h> - struct Configurable; #if defined(USE_OPENSSL) || defined(USE_GNUTLS) diff --git a/src/tool_operate.c b/src/tool_operate.c index c0b66946c..75bb5b34d 100644 --- a/src/tool_operate.c +++ b/src/tool_operate.c @@ -129,9 +129,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) struct OutStruct heads; -#ifdef HAVE_LIBMETALINK metalinkfile *mlfile_last = NULL; -#endif /* HAVE_LIBMETALINK */ CURL *curl = NULL; char *httpgetfields = NULL; @@ -406,18 +404,14 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) int infilenum; URLGlob *inglob; - int metalink = 0; /* nonzero for metalink download. Put outside of - HAVE_LIBMETALINK to reduce #ifdef */ -#ifdef HAVE_LIBMETALINK + int metalink = 0; /* nonzero for metalink download. */ metalinkfile *mlfile; metalink_resource *mlres; -#endif /* HAVE_LIBMETALINK */ outfiles = NULL; infilenum = 1; inglob = NULL; -#ifdef HAVE_LIBMETALINK if(urlnode->flags & GETOUT_METALINK) { metalink = 1; if(mlfile_last == NULL) { @@ -431,7 +425,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) mlfile = NULL; mlres = NULL; } -#endif /* HAVE_LIBMETALINK */ /* urlnode->url is the full URL (it might be NULL) */ @@ -501,14 +494,12 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) break; } -#ifdef HAVE_LIBMETALINK if(metalink) { /* For Metalink download, we don't use glob. Instead we use the number of resources as urlnum. */ urlnum = count_next_metalink_resource(mlfile); } else -#endif /* HAVE_LIBMETALINK */ if(!config->globoff) { /* Unless explicitly shut off, we expand '{...}' and '[...]' expressions and return total number of URLs in pattern set */ @@ -540,9 +531,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) long retry_sleep; char *this_url; HeaderData hdrdata; -#ifdef HAVE_LIBMETALINK int metalink_next_res = 0; -#endif /* HAVE_LIBMETALINK */ outfile = NULL; infdopen = FALSE; @@ -554,7 +543,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) outs.stream = stdout; outs.config = config; -#ifdef HAVE_LIBMETALINK if(metalink) { /* For Metalink download, use name in Metalink file as filename. */ @@ -570,7 +558,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) } } else { -#endif /* HAVE_LIBMETALINK */ if(urls) { res = glob_next_url(&this_url, urls); if(res) @@ -595,9 +582,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) goto show_error; } } -#ifdef HAVE_LIBMETALINK } -#endif /* HAVE_LIBMETALINK */ if((urlnode->flags&GETOUT_USEREMOTE) || (outfile && !curlx_strequal("-", outfile)) ) { @@ -1443,7 +1428,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) continue; /* curl_easy_perform loop */ } } /* if retry_numretries */ -#ifdef HAVE_LIBMETALINK else if(metalink) { /* Metalink: Decide to try the next resource or not. Basically, we want to try the next resource if @@ -1466,7 +1450,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) else metalink_next_res = 1; } -#endif /* HAVE_LIBMETALINK */ /* In all ordinary cases, just break out of loop here */ break; /* curl_easy_perform loop */ @@ -1620,7 +1603,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) infd = STDIN_FILENO; } -#ifdef HAVE_LIBMETALINK if(metalink) { /* Should exit if error is fatal. */ if(is_fatal_error(res)) { @@ -1636,7 +1618,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) break; } else -#endif /* HAVE_LIBMETALINK */ if(urlnum > 1) { /* when url globbing, exit loop upon critical error */ if(is_fatal_error(res)) @@ -1736,10 +1717,8 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[]) if(config->errors_fopened && config->errors) fclose(config->errors); -#ifdef HAVE_LIBMETALINK /* Release metalink related resources here */ clean_metalink(config); -#endif /* HAVE_LIBMETALINK */ main_free(); /* cleanup */ |