Eliminate extra loop over dbs_sync
Current flow looks like loop dbs_sync { loop pkgs { if pkg.db == db then process(pkg, db) } } Package sync transaction always has a counterpart in the dbs_sync list (I cannot come up with a use-case when it is not true). So the loop can be simplified to: loop pkgs { process(pkg, pkg.db) } Tested: 'ninja test' & manually by using pacman with this patch for a week Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
d0c487d4dc
commit
886a6677a8
1 changed files with 5 additions and 9 deletions
|
@ -705,16 +705,14 @@ static struct dload_payload *build_payload(alpm_handle_t *handle,
|
||||||
return payload;
|
return payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files)
|
static int find_dl_candidates(alpm_handle_t *handle, alpm_list_t **files)
|
||||||
{
|
{
|
||||||
alpm_list_t *i;
|
for(alpm_list_t *i = handle->trans->add; i; i = i->next) {
|
||||||
alpm_handle_t *handle = repo->handle;
|
|
||||||
|
|
||||||
for(i = handle->trans->add; i; i = i->next) {
|
|
||||||
alpm_pkg_t *spkg = i->data;
|
alpm_pkg_t *spkg = i->data;
|
||||||
|
|
||||||
if(spkg->origin != ALPM_PKG_FROM_FILE && repo == spkg->origin_data.db) {
|
if(spkg->origin != ALPM_PKG_FROM_FILE) {
|
||||||
char *fpath = NULL;
|
char *fpath = NULL;
|
||||||
|
alpm_db_t *repo = spkg->origin_data.db;
|
||||||
|
|
||||||
if(!repo->servers) {
|
if(!repo->servers) {
|
||||||
handle->pm_errno = ALPM_ERR_SERVER_NONE;
|
handle->pm_errno = ALPM_ERR_SERVER_NONE;
|
||||||
|
@ -802,9 +800,7 @@ static int download_files(alpm_handle_t *handle)
|
||||||
handle->totaldlcb(total_size);
|
handle->totaldlcb(total_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = handle->dbs_sync; i; i = i->next) {
|
errors += find_dl_candidates(handle, &files);
|
||||||
errors += find_dl_candidates(i->data, &files);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(files) {
|
if(files) {
|
||||||
/* check for necessary disk space for download */
|
/* check for necessary disk space for download */
|
||||||
|
|
Loading…
Add table
Reference in a new issue