1
0
mirror of https://github.com/moparisthebest/pacman synced 2025-01-08 12:28:00 -05:00

Make delta validation/application more logical

The call to apply was tucked inside validate, and the EVENT callbacks
were done outside the function rather than inside. Reorganize things a
bit to make more sense.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-09-01 16:00:48 -05:00
parent 16fd66f879
commit 062c391919

View File

@ -630,7 +630,7 @@ static int endswith(const char *filename, const char *extension)
static int apply_deltas(alpm_handle_t *handle)
{
alpm_list_t *i;
int ret = 0;
int deltas_found = 0, ret = 0;
const char *cachedir = _alpm_filecache_setup(handle);
alpm_trans_t *trans = handle->trans;
@ -643,6 +643,13 @@ static int apply_deltas(alpm_handle_t *handle)
continue;
}
if(!deltas_found) {
/* only show this if we actually have deltas to apply, and it is before
* the very first one */
EVENT(trans, ALPM_TRANS_EVT_DELTA_PATCHES_START, NULL, NULL);
deltas_found = 1;
}
for(dlts = delta_path; dlts; dlts = dlts->next) {
alpm_delta_t *d = dlts->data;
char *delta, *from, *to;
@ -702,6 +709,9 @@ static int apply_deltas(alpm_handle_t *handle)
}
}
}
if(deltas_found) {
EVENT(trans, ALPM_TRANS_EVT_DELTA_PATCHES_DONE, NULL, NULL);
}
return ret;
}
@ -732,7 +742,7 @@ static int prompt_to_delete(alpm_trans_t *trans, const char *filepath,
static int validate_deltas(alpm_handle_t *handle, alpm_list_t *deltas,
alpm_list_t **data)
{
int errors = 0, ret = 0;
int errors = 0;
alpm_list_t *i;
alpm_trans_t *trans = handle->trans;
@ -747,8 +757,7 @@ static int validate_deltas(alpm_handle_t *handle, alpm_list_t *deltas,
alpm_delta_t *d = alpm_list_getdata(i);
char *filepath = _alpm_filecache_find(handle, d->delta);
ret = _alpm_test_checksum(filepath, d->delta_md5, ALPM_CSUM_MD5);
if(ret != 0) {
if(_alpm_test_checksum(filepath, d->delta_md5, ALPM_CSUM_MD5)) {
prompt_to_delete(trans, filepath, ALPM_ERR_DLT_INVALID);
errors++;
*data = alpm_list_add(*data, strdup(d->delta));
@ -759,13 +768,7 @@ static int validate_deltas(alpm_handle_t *handle, alpm_list_t *deltas,
handle->pm_errno = ALPM_ERR_DLT_INVALID;
return -1;
}
EVENT(trans, ALPM_TRANS_EVT_DELTA_INTEGRITY_DONE, NULL, NULL);
/* Use the deltas to generate the packages */
EVENT(trans, ALPM_TRANS_EVT_DELTA_PATCHES_START, NULL, NULL);
ret = apply_deltas(handle);
EVENT(trans, ALPM_TRANS_EVT_DELTA_PATCHES_DONE, NULL, NULL);
return ret;
return 0;
}
static int download_files(alpm_handle_t *handle, alpm_list_t **deltas)
@ -909,6 +912,11 @@ int _alpm_sync_commit(alpm_handle_t *handle, alpm_list_t **data)
}
alpm_list_free(deltas);
/* Use the deltas to generate the packages */
if(apply_deltas(handle)) {
return -1;
}
/* get the total size of all packages so we can adjust the progress bar more
* realistically if there are small and huge packages involved */
current = total_bytes = 0;