From b9263fb4e1900457c9d5f3cc9e05896653130867 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Thu, 17 Mar 2011 09:01:30 -0400 Subject: 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 Signed-off-by: Dan McGee --- lib/libalpm/dload.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'lib') 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; -- cgit v1.2.3-70-g09d2