From 8ec27835f40e3df1ce409bc3d913587c474a30c3 Mon Sep 17 00:00:00 2001 From: Nathan Jones Date: Fri, 9 Nov 2007 19:54:19 -0500 Subject: Implement TotalDownload option. Setting this option will change the download progress to show the amount downloaded, download rate, ETA, and download percent of the entire download list rather than per each individual file. The progress bar is still based on the completion of the current file regardless if the TotalDownload option is set. This closes FS#7205. Signed-off-by: Nathan Jones Signed-off-by: Dan McGee --- lib/libalpm/sync.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/libalpm/sync.c') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 10a72a7b..40766914 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -990,6 +990,7 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data) pmtrans_t *tr = NULL; int replaces = 0, retval = 0; const char *cachedir = NULL; + int dltotal = 0, dl = 0; ALPM_LOG_FUNC; @@ -998,6 +999,15 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data) cachedir = _alpm_filecache_setup(); trans->state = STATE_DOWNLOADING; + + /* Sum up the download sizes. This has to be in its own loop because + * the download loop is grouped by db. */ + for(j = trans->packages; j; j = j->next) { + pmsyncpkg_t *sync = j->data; + pmpkg_t *spkg = sync->pkg; + dltotal += alpm_pkg_download_size(spkg, db_local); + } + /* group sync records by repository and download */ for(i = handle->dbs_sync; i; i = i->next) { pmdb_t *current = i->data; @@ -1061,7 +1071,7 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data) if(files) { EVENT(trans, PM_TRANS_EVT_RETRIEVE_START, current->treename, NULL); - if(_alpm_downloadfiles(current->servers, cachedir, files)) { + if(_alpm_downloadfiles(current->servers, cachedir, files, &dl, dltotal)) { _alpm_log(PM_LOG_WARNING, _("failed to retrieve some files from %s\n"), current->treename); RET_ERR(PM_ERR_RETRIEVE, -1); -- cgit v1.2.3-54-g00ecf