deps/file-updater: Add func to get single remote file
This commit is contained in:
parent
e423492d61
commit
81fa5179cd
50
deps/file-updater/file-updater/file-updater.c
vendored
50
deps/file-updater/file-updater/file-updater.c
vendored
@ -523,3 +523,53 @@ update_info_t *update_info_create(
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
static void *single_file_thread(void *data)
|
||||
{
|
||||
struct update_info *info = data;
|
||||
struct file_download_data download_data;
|
||||
long response_code;
|
||||
|
||||
info->curl = curl_easy_init();
|
||||
if (!info->curl) {
|
||||
warn("Could not initialize Curl");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!do_http_request(info, info->url, &response_code))
|
||||
return NULL;
|
||||
if (!info->file_data.array || !info->file_data.array[0])
|
||||
return NULL;
|
||||
|
||||
download_data.name = info->url;
|
||||
download_data.version = 0;
|
||||
download_data.buffer.da = info->file_data.da;
|
||||
info->callback(info->param, &download_data);
|
||||
info->file_data.da = download_data.buffer.da;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
update_info_t *update_info_create_single(
|
||||
const char *log_prefix,
|
||||
const char *user_agent,
|
||||
const char *file_url,
|
||||
confirm_file_callback_t confirm_callback,
|
||||
void *param)
|
||||
{
|
||||
struct update_info *info;
|
||||
|
||||
if (!log_prefix)
|
||||
log_prefix = "";
|
||||
|
||||
info = bzalloc(sizeof(*info));
|
||||
info->log_prefix = bstrdup(log_prefix);
|
||||
info->user_agent = bstrdup(user_agent);
|
||||
info->url = bstrdup(file_url);
|
||||
info->callback = confirm_callback;
|
||||
info->param = param;
|
||||
|
||||
if (pthread_create(&info->thread, NULL, single_file_thread, info) == 0)
|
||||
info->thread_created = true;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <util/darray.h>
|
||||
|
||||
struct update_info;
|
||||
typedef struct update_info update_info_t;
|
||||
|
||||
@ -21,4 +23,10 @@ update_info_t *update_info_create(
|
||||
const char *cache_dir,
|
||||
confirm_file_callback_t confirm_callback,
|
||||
void *param);
|
||||
update_info_t *update_info_create_single(
|
||||
const char *log_prefix,
|
||||
const char *user_agent,
|
||||
const char *file_url,
|
||||
confirm_file_callback_t confirm_callback,
|
||||
void *param);
|
||||
void update_info_destroy(update_info_t *info);
|
||||
|
Loading…
x
Reference in New Issue
Block a user