Always create directory hierarchy for Metalink.

Filenames contained in Metalink file can include directory information.
Filenames are unique in Metalink file, taking into account the directory
information. So we need to create the directory hierarchy.

Curl has --create-dirs option, but we create directory hierarchy for
Metalink downloads regardless of the option value.

This patch also put metalink int variable outside of HAVE_LIBMETALINK
guard. This reduces the number of #ifdefs.
This commit is contained in:
Tatsuhiro Tsujikawa 2012-05-14 22:46:15 +09:00 committed by Daniel Stenberg
parent 94eb132896
commit c3ef63f167

View File

@ -406,8 +406,9 @@ 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; /* nonzero for metalink download */
struct metalinkfile *mlfile;
metalink_resource_t **mlres;
#endif /* HAVE_LIBMETALINK */
@ -427,7 +428,6 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
mlres = mlfile->file->resources;
}
else {
metalink = 0;
mlfile = NULL;
mlres = NULL;
}
@ -642,7 +642,7 @@ int operate(struct Configurable *config, int argc, argv_item_t argv[])
/* Create the directory hierarchy, if not pre-existent to a multiple
file output call */
if(config->create_dirs) {
if(config->create_dirs || metalink) {
res = create_dir_hierarchy(outfile, config->errors);
/* create_dir_hierarchy shows error upon CURLE_WRITE_ERROR */
if(res == CURLE_WRITE_ERROR)