summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <dreisner@archlinux.org>2011-09-04 20:59:17 +0200
committerDan McGee <dan@archlinux.org>2011-09-06 15:42:02 +0200
commit400942fedf35d4fc6b584b8f1552f1ec649136fe (patch)
treec8d8b0cfebbd6d80c652711542f8cdbb91193b93
parent7ea1ea88bbca64514d5aad64fe199191f0f2eea1 (diff)
downloadpacman-400942fedf35d4fc6b584b8f1552f1ec649136fe.tar.gz
pacman-400942fedf35d4fc6b584b8f1552f1ec649136fe.tar.xz
avoid blowing out the filecache list when using tmpdir
_alpm_filecache_setup() destroys the list of cachedirs when it finds no writeable directories in the config. This put us in an awkward situation where _alpm_filecache_find() would locate a downloaded file in a r/o cachedir, but then fail to install it after _alpm_filecache_setup() is called (with a NULL argument). Change this behavior to merely prepend the temporary directory to the list of available cachedirs. Dan exposed it in e07547ee4ed4, as now a package can be found in a directory we may not be able to actually store packages in. Reported-by: Rémy Oudompheng <remy@archlinux.org> Signed-off-by: Dave Reisner <dreisner@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/util.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index 44dead83..58274ed1 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -699,10 +699,8 @@ const char *_alpm_filecache_setup(alpm_handle_t *handle)
} else {
tmpdir = "/tmp";
}
- i = alpm_list_add(NULL, tmpdir);
- alpm_option_set_cachedirs(handle, i);
- alpm_list_free(i);
- cachedir = handle->cachedirs->data;
+ alpm_option_add_cachedir(handle, tmpdir);
+ cachedir = handle->cachedirs->prev->data;
_alpm_log(handle, ALPM_LOG_DEBUG, "using cachedir: %s\n", cachedir);
_alpm_log(handle, ALPM_LOG_WARNING,
_("couldn't find or create package cache, using %s instead\n"), cachedir);