summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <d@falconindy.com>2011-03-17 09:01:30 -0400
committerDan McGee <dan@archlinux.org>2011-03-23 11:04:42 -0500
commitb9263fb4e1900457c9d5f3cc9e05896653130867 (patch)
tree483b3751513cb11fc9150cf4f0d28f86e4847fdd
parent47e41b2023f0d13f213b771db96297968fe0f280 (diff)
downloadpacman-b9263fb4e1900457c9d5f3cc9e05896653130867.tar.gz
pacman-b9263fb4e1900457c9d5f3cc9e05896653130867.zip
lib/dload.c: Check for dlcb == NULL earlier
Our curl callback does a whole lot of work for nothing if the front end never defined a callback to receive the data we'd calculate for it. Signed-off-by: Dave Reisner <d@falconindy.com> Signed-off-by: Dan McGee <dan@archlinux.org>
-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;