X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Furl.c;h=bcdf750bf3ebc0e32cc18fa2d1b312f0e393037e;hp=9135971ddbec368ae0a3e5a819fc20db45715cf5;hb=6230b73df0c2a47a175f25e34ef7bfe009ddf1f9;hpb=6a5a964d7e25defc52c75f0cacf65082c8464d9b diff --git a/src/url.c b/src/url.c index 9135971d..bcdf750b 100644 --- a/src/url.c +++ b/src/url.c @@ -1499,7 +1499,7 @@ append_dir_structure (const struct url *u, struct growable *dest) possible. Does not create directories on the file system. */ char * -url_file_name (const struct url *u) +url_file_name (const struct url *u, char *replaced_filename) { struct growable fnres; /* stands for "file name result" */ @@ -1554,18 +1554,29 @@ url_file_name (const struct url *u) append_dir_structure (u, &fnres); } - /* Add the file name. */ - if (fnres.tail) - append_char ('/', &fnres); - u_file = *u->file ? u->file : index_filename; - append_uri_pathel (u_file, u_file + strlen (u_file), false, &fnres); - - /* Append "?query" to the file name. */ - u_query = u->query && *u->query ? u->query : NULL; - if (u_query) + if (!replaced_filename) + { + /* Add the file name. */ + if (fnres.tail) + append_char ('/', &fnres); + u_file = *u->file ? u->file : index_filename; + append_uri_pathel (u_file, u_file + strlen (u_file), false, &fnres); + + /* Append "?query" to the file name. */ + u_query = u->query && *u->query ? u->query : NULL; + if (u_query) + { + append_char (FN_QUERY_SEP, &fnres); + append_uri_pathel (u_query, u_query + strlen (u_query), + true, &fnres); + } + } + else { - append_char (FN_QUERY_SEP, &fnres); - append_uri_pathel (u_query, u_query + strlen (u_query), true, &fnres); + if (fnres.tail) + append_char ('/', &fnres); + u_file = replaced_filename; + append_uri_pathel (u_file, u_file + strlen (u_file), false, &fnres); } /* Zero-terminate the file name. */