[pacman-dev] [PATCH] avoid blowing out the filecache list when using tmpdir

Dave Reisner d at falconindy.com
Sun Sep 4 15:10:01 EDT 2011

_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 broke it in e07547ee4ed4.

Reported-by: Rémy Oudompheng <remy at archlinux.org>
Signed-off-by: Dave Reisner <dreisner at archlinux.org>
 lib/libalpm/util.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index 44dead8..58274ed 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);

More information about the pacman-dev mailing list