Commit 886a6677 authored by Anatol Pomozov's avatar Anatol Pomozov Committed by Allan McRae
Browse files

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's avatarAnatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae's avatarAllan McRae <allan@archlinux.org>
parent d0c487d4
......@@ -705,16 +705,14 @@ static struct dload_payload *build_payload(alpm_handle_t *handle,
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;
alpm_handle_t *handle = repo->handle;
for(i = handle->trans->add; i; i = i->next) {
for(alpm_list_t *i = handle->trans->add; i; i = i->next) {
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;
alpm_db_t *repo = spkg->origin_data.db;
if(!repo->servers) {
handle->pm_errno = ALPM_ERR_SERVER_NONE;
......@@ -802,9 +800,7 @@ static int download_files(alpm_handle_t *handle)
handle->totaldlcb(total_size);
}
for(i = handle->dbs_sync; i; i = i->next) {
errors += find_dl_candidates(i->data, &files);
}
errors += find_dl_candidates(handle, &files);
if(files) {
/* check for necessary disk space for download */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment