#ifndef PROCESS_URL_H_ #define PROCESS_URL_H_ #include #include #include #include #include "constants.h" #include "status.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]; bool need_callback; } curl_conf_t; typedef struct thrd_info { unsigned char no; curl_conf_t *curl_c; char range[UCHAR_MAX]; } thrd_info_t; typedef struct str_data { char *string; size_t len; } str_data_t; typedef str_array_t callback_struct_t; typedef int (*callback_t)(void *); void curl_init(char *); void curl_cleanup(status_t *); void poll_status(status_t *); void add_cookie(char **p_cookie); void set_referer(char *referer); int get(const char *, char **); bool get_info(const char *URL, curl_off_t *psize, char **p_content_type, char **p_cookie); void add_url(const char *, const char *, const char *, callback_t, callback_struct_t *); #endif