#ifndef PROCESS_URL_H_ #define PROCESS_URL_H_ #include #include #include #include "constants.h" #include "utils/utils.h" #define ERRTOSTRING(err) curl_easy_strerror(err) #define logerr(X) \ _Generic((X), CURLcode \ : logerr_b, CURLHcode \ : logerr_h, CURLUcode \ : logerr_u)(X) typedef struct curl_conf { curl_off_t dlnow_per_thrd[MAX_THREAD]; curl_off_t dlnow; curl_off_t dltotal; unsigned char success_thrd; unsigned char total_thrd; char *URL; char *outfn; str_array_t partfn; FILE *fplist[MAX_THREAD]; } curl_conf_t; typedef struct thrd_info { unsigned char no; curl_conf_t *curl_c; char range[UCHAR_MAX]; } thrd_info_t; typedef struct status { curl_off_t cur; curl_off_t total; bool is_done; } status_t; typedef struct str_data { char *string; size_t len; } str_data_t; typedef struct callback_struct { char *videofn; char *audiofn; char *filename; } callback_struct_t; typedef int (*callback_t)(void *); void curl_init(char *); void curl_cleanup(status_t *); void poll_status(status_t *); int get(const char *, char **); void add_url(const char *, const char *, const char *, const char *, callback_t, callback_struct_t *); #endif