From: Michael Tremer Date: Tue, 7 Sep 2021 16:50:26 +0000 (+0000) Subject: downloader: Use a simple callback function to write received data X-Git-Tag: 0.9.28~975 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2a38f87c10244e055b95d276854263ca1206c4f;p=pakfire.git downloader: Use a simple callback function to write received data Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index 959c08c17..25852aa19 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -560,6 +560,13 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader, return 0; } +static size_t pakfire_downloader_write(char* data, size_t size, size_t nmemb, void* userdata) { + struct pakfire_transfer* transfer = (struct pakfire_transfer*)userdata; + + // Write everything to the allocated file descriptor + return fwrite(data, size, nmemb, transfer->f); +} + static int pakfire_downloader_prepare_transfer(struct pakfire_downloader* downloader, struct pakfire_transfer* transfer) { // Increment tries @@ -616,8 +623,9 @@ static int pakfire_downloader_prepare_transfer(struct pakfire_downloader* downlo } } - // Write all data to the allocated file descriptor - curl_easy_setopt(transfer->handle, CURLOPT_WRITEDATA, transfer->f); + // Write all data to the callback function + curl_easy_setopt(transfer->handle, CURLOPT_WRITEFUNCTION, pakfire_downloader_write); + curl_easy_setopt(transfer->handle, CURLOPT_WRITEDATA, transfer); return 0; }