summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/extractors/bilibili.c13
-rw-r--r--src/extractors/extractor.c8
-rw-r--r--src/extractors/haokan.c4
-rw-r--r--src/extractors/youku.c14
-rw-r--r--src/main.c3
-rw-r--r--src/process_url.c33
-rw-r--r--src/ui.c4
-rw-r--r--src/utils/types.c7
-rw-r--r--src/utils/utils.c8
-rw-r--r--src/utils/utils.h2
10 files changed, 47 insertions, 49 deletions
diff --git a/src/extractors/bilibili.c b/src/extractors/bilibili.c
index c4a628f..6112bef 100644
--- a/src/extractors/bilibili.c
+++ b/src/extractors/bilibili.c
@@ -381,7 +381,7 @@ static int download(Bilibili_options *bilibili_options) {
get(bilibili_options->api, &resp);
if (get_dash(resp, &dash)) {
LOG("Bilibili", "Get dash failed.");
- free_and_nullify((void **)&resp);
+ free_and_nullify(resp);
dash_cleanup(&dash);
return 1;
};
@@ -414,7 +414,6 @@ static int download(Bilibili_options *bilibili_options) {
}
set_str_element(&callback_struct, 1, videofn);
add_url(video->baseUrl, NULL, videofn, NULL, NULL);
- free_and_nullify((void **)&videofn);
}
{
@@ -429,10 +428,8 @@ static int download(Bilibili_options *bilibili_options) {
}
set_str_element(&callback_struct, 2, audiofn);
add_url(audio->baseUrl, NULL, audiofn, &bilibili_merge, &callback_struct);
- free_and_nullify((void **)&audiofn);
}
- free_and_nullify((void **)&filename);
- free_and_nullify((void **)&resp);
+ free_and_nullify(resp);
dash_cleanup(&dash);
return 0;
}
@@ -481,18 +478,18 @@ void bilibili_extract(struct options *options) {
DEBUG_PRINT("title: %s\n", bilibili_options.title);
if (generate_api(&bilibili_options, 127)) {
- free_and_nullify((void **)&bilibili_options.api);
+ free_and_nullify(bilibili_options.api);
multipage_cleanup(&multipage_struct);
return;
}
DEBUG_PRINT("Generated API: %s\n", bilibili_options.api);
if (download(&bilibili_options)) {
- free_and_nullify((void **)&bilibili_options.api);
+ free_and_nullify(bilibili_options.api);
multipage_cleanup(&multipage_struct);
return;
}
- free_and_nullify((void **)&bilibili_options.api);
+ free_and_nullify(bilibili_options.api);
multipage_cleanup(&multipage_struct);
}
diff --git a/src/extractors/extractor.c b/src/extractors/extractor.c
index 833686e..c38c1f2 100644
--- a/src/extractors/extractor.c
+++ b/src/extractors/extractor.c
@@ -12,10 +12,10 @@ Site_map site_map = {{{"www.bilibili.com", SITE_BILIBILI},
3};
void options_cleanup(Options *options) {
- free_and_nullify((void **)&options->URL);
- free_and_nullify((void **)&options->path);
- free_and_nullify((void **)&options->query);
- free_and_nullify((void **)&options->pagedata);
+ free_and_nullify(options->URL);
+ free_and_nullify(options->path);
+ free_and_nullify(options->query);
+ free_and_nullify(options->pagedata);
}
int extract(void *v) {
diff --git a/src/extractors/haokan.c b/src/extractors/haokan.c
index e2a8aef..f289c3e 100644
--- a/src/extractors/haokan.c
+++ b/src/extractors/haokan.c
@@ -38,8 +38,8 @@ void haokan_extract(Options *options) {
end:
free_str_array(&results);
- free_and_nullify((void **)&filename);
- free_and_nullify((void **)&videoURL);
+ free_and_nullify(filename);
+ free_and_nullify(videoURL);
return;
}
free_str_array(&results);
diff --git a/src/extractors/youku.c b/src/extractors/youku.c
index 4e5bc47..e8fa0a5 100644
--- a/src/extractors/youku.c
+++ b/src/extractors/youku.c
@@ -67,9 +67,9 @@ static int parse_jsondata(cJSON *json, Youku_data *youku_data) {
}
static void youku_options_cleanup(Youku_options *youku_options) {
- free_and_nullify((void **)&youku_options->vid);
- free_and_nullify((void **)&youku_options->utid);
- free_and_nullify((void **)&youku_options->api);
+ free_and_nullify(youku_options->vid);
+ free_and_nullify(youku_options->utid);
+ free_and_nullify(youku_options->api);
cJSON_Delete(youku_options->json);
}
@@ -147,13 +147,13 @@ void youku_extract(Options *options) {
char *resp = NULL;
if (get(youku_options.api, &resp)) {
LOG("Youku", "Get API data failed.\n");
- free_and_nullify((void **)&resp);
+ free_and_nullify(resp);
goto end;
}
// DEBUG_PRINT("resp: %s\n", resp);
youku_options.json = cJSON_Parse(resp);
- free_and_nullify((void **)&resp);
+ free_and_nullify(resp);
Youku_data youku_data = {0};
if (parse_jsondata(youku_options.json, &youku_data)) {
LOG("Youku", "Parse jsondata failed.\n");
@@ -170,8 +170,8 @@ void youku_extract(Options *options) {
youku_data.height);
set_str_element(&callback_struct, 1, filename);
add_url(youku_data.m3u8_url, NULL, m3u8fn, youku_convert, &callback_struct);
- free_and_nullify((void **)&m3u8fn);
- free_and_nullify((void **)&filename);
+ free_and_nullify(m3u8fn);
+ free_and_nullify(filename);
end:
free_str_array(&results);
diff --git a/src/main.c b/src/main.c
index 4930b1c..3410f37 100644
--- a/src/main.c
+++ b/src/main.c
@@ -66,6 +66,7 @@ int main(void) {
if (cookie_datum.ok) {
printf("[tomlc99] Found cookie string in config.toml, applying...\n");
cookie = cookie_datum.u.s;
+ DEBUG_PRINT("Cookie: %s\n", cookie);
}
}
}
@@ -189,5 +190,5 @@ int main(void) {
curl_cleanup(&stat);
nk_glfw3_shutdown(&glfw);
glfwTerminate();
- return 0;
+ exit(0);
}
diff --git a/src/process_url.c b/src/process_url.c
index 843fedf..e09647a 100644
--- a/src/process_url.c
+++ b/src/process_url.c
@@ -145,7 +145,7 @@ static void gen_fullpathfn(char *fullpathfn, const char *outdir,
outdir[strlen(outdir) - 1] == SPLITTER_CHAR ? "" : SPLITTER_STR, fn);
}
-static int parse_url(const char *URL, const char *outdir, char **p_fn) {
+static int parse_url(const char *URL, const char *outdir, char *fn) {
CURLUcode ue = logerr(curl_url_set(h, CURLUPART_URL, URL, 0));
if (ue && ue != CURLUE_NO_QUERY) {
return 1;
@@ -205,7 +205,7 @@ static int parse_url(const char *URL, const char *outdir, char **p_fn) {
/* filename */
- if (p_fn == NULL) {
+ if (!fn) {
const char *patterns_str[1] = {"(?:.+\\/)([^#/?]+)"};
str_array_t results = create_str_array(0);
const str_array_t patterns = {(char **)patterns_str, 1};
@@ -229,9 +229,9 @@ static int parse_url(const char *URL, const char *outdir, char **p_fn) {
return 1;
}
} else {
- curl_c->outfn = malloc(strlen(outdir) + strlen(*p_fn) + 2);
- gen_fullpathfn(curl_c->outfn, outdir, *p_fn);
- free_and_nullify((void **)p_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);
DEBUG_PRINT("Got regular URL: %s\n", curl_c->URL);
@@ -349,8 +349,7 @@ static int pull_part(void *a) {
return (int)res;
}
-static int merge_and_cleanup(curl_conf_t **p_curl_c) {
- curl_conf_t *curl_c = *p_curl_c;
+static int merge_and_cleanup(curl_conf_t *curl_c) {
if (corrupted) {
append_log("Cancelling...\n");
} else {
@@ -390,9 +389,9 @@ static int merge_and_cleanup(curl_conf_t **p_curl_c) {
// Reset stat
curl_c->success_thrd = 0;
curl_c->total_thrd = 0;
- free_and_nullify((void **)&curl_c->URL);
- free_and_nullify((void **)&curl_c->outfn);
- free_and_nullify((void **)p_curl_c);
+ free_and_nullify(curl_c->URL);
+ free_and_nullify(curl_c->outfn);
+ free_and_nullify(curl_c);
return 0;
}
@@ -461,7 +460,7 @@ static char *callback_struct_convert_fullpath(char **p_filename) {
char *tmp = malloc(strlen(outdir_g) + strlen(*p_filename) + 2);
replace_illegal_char(*p_filename);
gen_fullpathfn(tmp, outdir_g, *p_filename);
- free_and_nullify((void **)p_filename);
+ free_and_nullify(*p_filename);
return tmp;
}
@@ -470,7 +469,7 @@ void add_cookie(char **p_cookie) {
if (cookie_g) {
char *tmp = malloc(strlen(cookie_g) + strlen(cookie) + 3);
sprintf(tmp, "%s; %s", cookie_g, cookie);
- free_and_nullify((void **)&cookie_g);
+ free_and_nullify(cookie_g);
cookie_g = tmp;
} else {
cookie_g = cookie;
@@ -501,13 +500,13 @@ void curl_cleanup(status_t *stat) {
}
mtx_unlock(&mtx);
if (!stat->is_done) {
- merge_and_cleanup(&curl_conf);
+ merge_and_cleanup(curl_conf);
}
mtx_destroy(&mtx);
cnd_destroy(&cnd);
}
free_queue(&dl_queue);
- free_and_nullify((void **)&cookie_g);
+ free_and_nullify(cookie_g);
curl_url_cleanup(h);
curl_global_cleanup();
}
@@ -542,7 +541,7 @@ void poll_status(status_t *stat) {
int r;
thrd_join(tid[i], &r);
}
- merge_and_cleanup(&curl_conf);
+ merge_and_cleanup(curl_conf);
// Perform the callback
if (is_empty_queue(&dl_queue) && callback_g && !corrupted) {
thrd_t cb_thrd;
@@ -567,7 +566,7 @@ int get(const char *URL, char **pdstr) {
CURLcode res = logerr(curl_easy_perform(curl));
*pdstr = malloc(pagedata.len + 1);
strcpy(*pdstr, pagedata.string);
- free_and_nullify((void **)&pagedata.string);
+ free_and_nullify(pagedata.string);
curl_easy_cleanup(curl);
return res;
}
@@ -605,7 +604,7 @@ void add_url(const char *URL, const char *outdir, const char *fn,
}
// Pass our cache (outdir_g) to parse_url()
- if (parse_url(URL, outdir_g, &filename)) {
+ if (parse_url(URL, outdir_g, filename)) {
DEBUG_PRINT("parse_url() failed with error.\n");
return; // Parse failed, quit the task directly
};
diff --git a/src/ui.c b/src/ui.c
index da3f965..57b1691 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -42,8 +42,8 @@ void load_ui(struct ui_struct *ui) {
sprintf(status_string, "%s/%s, %hhu%%", cur_ts, total_ts,
(unsigned char)pct);
- free_and_nullify((void **)&cur_ts);
- free_and_nullify((void **)&total_ts);
+ free_and_nullify(cur_ts);
+ free_and_nullify(total_ts);
}
}
if (ui->stat->is_done) {
diff --git a/src/utils/types.c b/src/utils/types.c
index f986ba3..e414f92 100644
--- a/src/utils/types.c
+++ b/src/utils/types.c
@@ -15,7 +15,7 @@ generic_array_t create_array(size_t elem_size, size_t n) {
}
void free_array(generic_array_t *array) {
- free_and_nullify((void **)&array->data);
+ free_and_nullify(array->data);
array->n = 0;
}
@@ -49,11 +49,12 @@ str_array_t create_str_array(size_t n) {
return array;
}
+// NOTE: would free both the array and all its elements
void free_str_array(str_array_t *array) {
for (size_t i = 0; i < array->n; i++) {
free(array->str[i]);
}
- free_and_nullify((void **)&array->str);
+ free_and_nullify(array->str);
array->n = 0;
}
@@ -115,7 +116,7 @@ data_t dequeue(queue_t *queue) {
node_t *temp = queue->front;
data_t data = temp->data;
queue->front = temp->next;
- free_and_nullify((void **)&temp);
+ free_and_nullify(temp);
if (queue->front == NULL) {
queue->rear = NULL;
diff --git a/src/utils/utils.c b/src/utils/utils.c
index f7de635..ae60eee 100644
--- a/src/utils/utils.c
+++ b/src/utils/utils.c
@@ -170,9 +170,9 @@ int repchr(char *str, char t, char r) {
return c;
}
-void free_and_nullify(void **p) {
- if (*p) {
- free(*p);
- *p = NULL;
+void free_and_nullify(void *p) {
+ if (p) {
+ free(p);
+ p = NULL;
}
}
diff --git a/src/utils/utils.h b/src/utils/utils.h
index a96ab70..5a26cf2 100644
--- a/src/utils/utils.h
+++ b/src/utils/utils.h
@@ -14,6 +14,6 @@ const char *mimeType2ext(const char *mimeType);
int repchr(char *str, char t, char r);
/* NOTICE: pass a pointer-to-pointer to free the original pointer. */
-void free_and_nullify(void **p);
+void free_and_nullify(void *p);
#endif