From: Michael Tremer Date: Fri, 12 Mar 2021 15:32:53 +0000 (+0000) Subject: downloader: Merge create/add_transfer X-Git-Tag: 0.9.28~1285^2~553 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a91632a8463e9a9ae2e5d459b9042e707365bcee;p=pakfire.git downloader: Merge create/add_transfer Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index 6f898c94b..60a24d844 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -396,11 +396,19 @@ static int debug_callback(CURL *handle, curl_infotype type, } #endif -static struct pakfire_transfer* pakfire_downloader_create_transfer( +int pakfire_downloader_add_transfer( struct pakfire_downloader* downloader, const char* url, const char* path) { + DEBUG(downloader->pakfire, "Adding download of %s\n", url); + + // Do not allow relative URLs when no mirrors are set + if (!pakfire_url_is_absolute(url) && downloader->num_mirrors == 0) { + ERROR(downloader->pakfire, "Relative URLs cannot be used without any mirrors set\n"); + return EINVAL; + } + struct pakfire_transfer* transfer = calloc(1, sizeof(*transfer)); if (!transfer) - return NULL; + return ENOMEM; // Copy URL snprintf(transfer->url, sizeof(transfer->url) - 1, "%s", url); @@ -444,12 +452,16 @@ static struct pakfire_transfer* pakfire_downloader_create_transfer( curl_easy_setopt(transfer->handle, CURLOPT_WRITEDATA, transfer->f); - return transfer; + // Push this transfer onto the queue + TAILQ_INSERT_HEAD(&downloader->transfers, transfer, nodes); + + // Success + return 0; ERROR: pakfire_transfer_free(transfer); - return NULL; + return 1; } static const char* curl_http_version(long v) { @@ -606,27 +618,6 @@ int pakfire_downloader_retrieve(struct pakfire_downloader* downloader, return pakfire_downloader_run(downloader); } -int pakfire_downloader_add_transfer(struct pakfire_downloader* downloader, - const char* url, const char* path) { - DEBUG(downloader->pakfire, "Adding download of %s\n", url); - - // Do not allow relative URLs when no mirrors are set - if (!pakfire_url_is_absolute(url) && downloader->num_mirrors == 0) { - ERROR(downloader->pakfire, "Relative URLs cannot be used without any mirrors set\n"); - return EINVAL; - } - - struct pakfire_transfer* transfer = - pakfire_downloader_create_transfer(downloader, url, path); - if (!transfer) - return 1; - - // Push this transfer onto the queue - TAILQ_INSERT_HEAD(&downloader->transfers, transfer, nodes); - - return 0; -} - static int pakfire_downloader_activate_transfer(struct pakfire_downloader* downloader, struct pakfire_transfer* transfer) { // Simply set absolute URLs