summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/dload.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index ba8ca949..7e9c3476 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -95,6 +95,16 @@ static int curl_progress(void *filename, double dltotal, double dlnow,
(void)ultotal;
(void)ulnow;
+ /* SIGINT sent, abort by alerting curl */
+ if(dload_interrupted) {
+ return 1;
+ }
+
+ /* none of what follows matters if the front end has no callback */
+ if(handle->dlcb == NULL) {
+ return 0;
+ }
+
if(DOUBLE_EQ(dltotal, 0) || DOUBLE_EQ(prevprogress, dltotal)) {
return 0;
}
@@ -102,18 +112,10 @@ static int curl_progress(void *filename, double dltotal, double dlnow,
/* initialize the progress bar here to avoid displaying it when
* a repo is up to date and nothing gets downloaded */
if(DOUBLE_EQ(prevprogress, 0)) {
- if(handle->dlcb) {
- handle->dlcb((const char*)filename, 0, (long)dltotal);
- }
- }
-
- if(dload_interrupted) {
- return 1;
+ handle->dlcb((const char*)filename, 0, (long)dltotal);
}
- if(handle->dlcb) {
- handle->dlcb((const char*)filename, (long)dlnow, (long)dltotal);
- }
+ handle->dlcb((const char*)filename, (long)dlnow, (long)dltotal);
prevprogress = dlnow;