call download progress callback for signatures

pacman may not care about them, but other front-ends do.

Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
This commit is contained in:
Andrew Gregory 2021-04-27 19:11:27 -07:00 committed by Allan McRae
parent eb1a63a516
commit 72238aa046
2 changed files with 19 additions and 11 deletions

View file

@ -166,11 +166,6 @@ static int dload_progress_cb(void *file, curl_off_t dltotal, curl_off_t dlnow,
off_t current_size, total_size; off_t current_size, total_size;
alpm_download_event_progress_t cb_data = {0}; alpm_download_event_progress_t cb_data = {0};
/* do not print signature files progress bar */
if(payload->signature) {
return 0;
}
/* avoid displaying progress bar for redirects with a body */ /* avoid displaying progress bar for redirects with a body */
if(payload->respcode >= 300) { if(payload->respcode >= 300) {
return 0; return 0;
@ -669,7 +664,7 @@ cleanup:
unlink(payload->tempfile_name); unlink(payload->tempfile_name);
} }
if(handle->dlcb && !payload->signature) { if(handle->dlcb) {
alpm_download_event_completed_t cb_data = {0}; alpm_download_event_completed_t cb_data = {0};
cb_data.total = bytes_dl; cb_data.total = bytes_dl;
cb_data.result = ret; cb_data.result = ret;
@ -782,6 +777,12 @@ static int curl_add_payload(alpm_handle_t *handle, CURLM *curlm,
curl_easy_setopt(curl, CURLOPT_WRITEDATA, payload->localf); curl_easy_setopt(curl, CURLOPT_WRITEDATA, payload->localf);
curl_multi_add_handle(curlm, curl); curl_multi_add_handle(curlm, curl);
if(handle->dlcb) {
alpm_download_event_init_t cb_data = {.optional = payload->errors_ok};
handle->dlcb(handle->dlcb_ctx, payload->remote_name, ALPM_DOWNLOAD_INIT, &cb_data);
}
return 0; return 0;
cleanup: cleanup:
@ -810,11 +811,6 @@ static int curl_download_internal(alpm_handle_t *handle,
struct dload_payload *payload = payloads->data; struct dload_payload *payload = payloads->data;
if(curl_add_payload(handle, curlm, payload, localpath) == 0) { if(curl_add_payload(handle, curlm, payload, localpath) == 0) {
if(handle->dlcb && !payload->signature) {
alpm_download_event_init_t cb_data = {.optional = payload->errors_ok};
handle->dlcb(handle->dlcb_ctx, payload->remote_name, ALPM_DOWNLOAD_INIT, &cb_data);
}
payloads = payloads->next; payloads = payloads->next;
} else { } else {
/* The payload failed to start. Do not start any new downloads. /* The payload failed to start. Do not start any new downloads.

View file

@ -1070,10 +1070,22 @@ static void dload_complete_event(const char *filename, alpm_download_event_compl
} }
} }
static int strendswith(const char *haystack, const char *needle)
{
size_t hlen = strlen(haystack), nlen = strlen(needle);
return hlen >= nlen && strcmp(haystack + hlen - nlen, needle) == 0;
}
/* Callback to handle display of download progress */ /* Callback to handle display of download progress */
void cb_download(void *ctx, const char *filename, alpm_download_event_type_t event, void *data) void cb_download(void *ctx, const char *filename, alpm_download_event_type_t event, void *data)
{ {
(void)ctx; (void)ctx;
/* do not print signature files progress bar */
if(strendswith(filename, ".sig")) {
return;
}
if(event == ALPM_DOWNLOAD_INIT) { if(event == ALPM_DOWNLOAD_INIT) {
dload_init_event(filename, data); dload_init_event(filename, data);
} else if(event == ALPM_DOWNLOAD_PROGRESS) { } else if(event == ALPM_DOWNLOAD_PROGRESS) {