1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-12-22 15:58:50 -05:00

sync: extract build_payload() method from find_dl_candidates

This is done by both the delta and regular file code, so we can extract
a little helper method. Done mostly to satisfy my "why are we repeating
code here" itch.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-10-21 11:19:45 -05:00
parent 6f2faf16ba
commit 0b155677cf
2 changed files with 19 additions and 15 deletions

View File

@ -38,7 +38,7 @@ struct dload_payload {
int allow_resume; int allow_resume;
int errors_ok; int errors_ok;
int unlink_on_fail; int unlink_on_fail;
const alpm_list_t *servers; alpm_list_t *servers;
#ifdef HAVE_LIBCURL #ifdef HAVE_LIBCURL
CURLcode curlerr; /* last error produced by curl */ CURLcode curlerr; /* last error produced by curl */
#endif #endif

View File

@ -790,6 +790,18 @@ static int validate_deltas(alpm_handle_t *handle, alpm_list_t *deltas)
return 0; return 0;
} }
static struct dload_payload *build_payload(alpm_handle_t *handle,
const char *filename, size_t size, alpm_list_t *servers)
{
struct dload_payload *payload;
CALLOC(payload, 1, sizeof(*payload), RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
STRDUP(payload->remote_name, filename, RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
payload->max_size = size;
payload->servers = servers;
return payload;
}
static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files, alpm_list_t **deltas) static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files, alpm_list_t **deltas)
{ {
alpm_list_t *i; alpm_list_t *i;
@ -814,14 +826,10 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files, alpm_list_t
for(dlts = delta_path; dlts; dlts = dlts->next) { for(dlts = delta_path; dlts; dlts = dlts->next) {
alpm_delta_t *delta = dlts->data; alpm_delta_t *delta = dlts->data;
if(delta->download_size != 0) { if(delta->download_size != 0) {
struct dload_payload *dpayload; struct dload_payload *payload = build_payload(
handle, delta->delta, delta->download_size, repo->servers);
CALLOC(dpayload, 1, sizeof(*dpayload), RET_ERR(handle, ALPM_ERR_MEMORY, -1)); ASSERT(payload, return -1);
STRDUP(dpayload->remote_name, delta->delta, RET_ERR(handle, ALPM_ERR_MEMORY, -1)); *files = alpm_list_add(*files, payload);
dpayload->max_size = delta->download_size;
dpayload->servers = repo->servers;
*files = alpm_list_add(*files, dpayload);
} }
/* keep a list of all the delta files for md5sums */ /* keep a list of all the delta files for md5sums */
*deltas = alpm_list_add(*deltas, delta); *deltas = alpm_list_add(*deltas, delta);
@ -829,13 +837,9 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files, alpm_list_t
} else if(spkg->download_size != 0) { } else if(spkg->download_size != 0) {
struct dload_payload *payload; struct dload_payload *payload;
ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1)); ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1));
CALLOC(payload, 1, sizeof(*payload), RET_ERR(handle, ALPM_ERR_MEMORY, -1)); payload = build_payload(handle, spkg->filename, spkg->size, repo->servers);
STRDUP(payload->remote_name, spkg->filename, RET_ERR(handle, ALPM_ERR_MEMORY, -1)); ASSERT(payload, return -1);
payload->max_size = spkg->size;
payload->servers = repo->servers;
*files = alpm_list_add(*files, payload); *files = alpm_list_add(*files, payload);
} }
} }