index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Allan McRae <allan@archlinux.org> | 2019-11-15 23:29:20 +1000 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2019-11-15 23:29:20 +1000 |
commit | e6a6d3079315ce722fec39604fddbab1c7ac79b3 (patch) | |
tree | d82112bd5ad9ea693307c4cf57ce47a25ed70022 /lib/libalpm/sync.c | |
parent | b9faf652735c603d1bdf849a570185eb721f11c1 (diff) |
-rw-r--r-- | lib/libalpm/sync.c | 14 |
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 70c37890..97a351fe 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -731,6 +731,8 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files) alpm_pkg_t *spkg = i->data; if(spkg->origin != ALPM_PKG_FROM_FILE && repo == spkg->origin_data.db) { + char *fpath = NULL; + if(!repo->servers) { handle->pm_errno = ALPM_ERR_SERVER_NONE; _alpm_log(handle, ALPM_LOG_ERROR, "%s: %s\n", @@ -738,13 +740,21 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files) return 1; } - if(spkg->download_size != 0) { + ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1)); + + if(spkg->download_size == 0) { + /* check for file in cache - allows us to handle complete .part files */ + fpath = _alpm_filecache_find(handle, spkg->filename); + } + + if(spkg->download_size != 0 || !fpath) { struct dload_payload *payload; - ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1)); payload = build_payload(handle, spkg->filename, spkg->size, repo->servers); ASSERT(payload, return -1); *files = alpm_list_add(*files, payload); } + + FREE(fpath); } } |