summaryrefslogtreecommitdiff
path: root/src/process_url.c
diff options
context:
space:
mode:
authorMole Shang <[email protected]>2023-08-08 14:36:34 +0800
committerMole Shang <[email protected]>2023-08-08 14:37:43 +0800
commit4eada1b4a5f4bb96b13a49791e97fb59f5cc2936 (patch)
tree77a5ac8e0d839955b3a35bcba8922bb152116785 /src/process_url.c
parentbd141e0ac144c1ec2494d5dceeb6ca013f0da58f (diff)
downloadhinata-4eada1b4a5f4bb96b13a49791e97fb59f5cc2936.tar.gz
hinata-4eada1b4a5f4bb96b13a49791e97fb59f5cc2936.tar.bz2
hinata-4eada1b4a5f4bb96b13a49791e97fb59f5cc2936.zip
process_url: change strings to be dynamic allocated
Diffstat (limited to 'src/process_url.c')
-rw-r--r--src/process_url.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/process_url.c b/src/process_url.c
index 1bb411a..30b7f71 100644
--- a/src/process_url.c
+++ b/src/process_url.c
@@ -212,11 +212,12 @@ static int parse_url(const char *URL, const char *outdir, char *fn) {
for (unsigned short i = 0; i < results.n; i++) {
if (results.str[i]) {
DEBUG_PRINT("[%d] %s\n", i, results.str[i]);
+ curl_c->outfn = malloc(strlen(outdir) + strlen(results.str[i]) + 2);
gen_fullpathfn(curl_c->outfn, outdir, results.str[i]);
}
}
free_str_array(&results);
- if (curl_c->outfn[0] == '\0') {
+ if (!curl_c->outfn || curl_c->outfn[0] == '\0') {
// sprintf(curl_c->outfn, "%s%c%s", outdir, SPLITTER,
// "test");
LOG("libcurl",
@@ -227,9 +228,8 @@ static int parse_url(const char *URL, const char *outdir, char *fn) {
return 1;
}
} else {
- sprintf(curl_c->outfn, "%s%s%s", outdir,
- outdir[strlen(outdir) - 1] == SPLITTER_CHAR ? "" : SPLITTER_STR,
- fn);
+ curl_c->outfn = malloc(strlen(outdir) + strlen(fn) + 2);
+ gen_fullpathfn(curl_c->outfn, outdir, fn);
free_and_nullify(fn);
}
DEBUG_PRINT("File will be saved as: %s\n", curl_c->outfn);
@@ -365,11 +365,13 @@ static int merge_and_cleanup(curl_conf_t *curl_c) {
append_log("Error deleting file %s\n", curl_c->outfn);
}
}
+ append_log("Download %s finished.\n", curl_conf->outfn);
// Reset stat
corrupted = false;
curl_c->success_thrd = 0;
curl_c->total_thrd = 0;
free_and_nullify(curl_c->URL);
+ free_and_nullify(curl_c->outfn);
return 0;
}
@@ -505,7 +507,6 @@ void poll_status(status_t *stat) {
thrd_join(tid[i], &r);
}
merge_and_cleanup(curl_conf);
- append_log("Download %s finished.\n", curl_conf->outfn);
free_and_nullify(curl_conf);
// Perform the callback
if (is_empty_queue(&dl_queue) && callback_g) {