]> git.ipfire.org Git - pakfire.git/commitdiff
downloader: Merge create/add_transfer
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 12 Mar 2021 15:32:53 +0000 (15:32 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 12 Mar 2021 15:32:53 +0000 (15:32 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/downloader.c

index 6f898c94ba194f871ee22eeddc74197889205541..60a24d8442fdb98d11f9acf6975502be6290d39b 100644 (file)
@@ -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