mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
Don't stat cachedir immediately
By attempting to stat the cachedir when we load the pacman config, pacman bails out if it is a non-existant directory, even if it will never be needed. This is unfortunate as it is only used for sync transactions anyway. Instead, wait until we need it in _alpm_filecache_setup to actually do anything. Reported as FS#9096. Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
5aa873edb6
commit
1a0aaa20df
@ -362,7 +362,6 @@ int SYMEXPORT alpm_option_set_dbpath(const char *dbpath)
|
||||
|
||||
int SYMEXPORT alpm_option_add_cachedir(const char *cachedir)
|
||||
{
|
||||
struct stat st;
|
||||
char *newcachedir;
|
||||
size_t cachedirlen;
|
||||
|
||||
@ -372,10 +371,9 @@ int SYMEXPORT alpm_option_add_cachedir(const char *cachedir)
|
||||
pm_errno = PM_ERR_WRONG_ARGS;
|
||||
return(-1);
|
||||
}
|
||||
if(stat(cachedir, &st) == -1 || !S_ISDIR(st.st_mode)) {
|
||||
pm_errno = PM_ERR_NOT_A_DIR;
|
||||
return(-1);
|
||||
}
|
||||
/* don't stat the cachedir yet, as it may not even be needed. we can
|
||||
* fail later if it is needed and the path is invalid. */
|
||||
|
||||
/* verify cachedir ends in a '/' */
|
||||
cachedirlen = strlen(cachedir);
|
||||
if(cachedir[cachedirlen-1] != '/') {
|
||||
|
@ -571,8 +571,6 @@ const char *_alpm_filecache_setup(void)
|
||||
/* cache directory does not exist.... try creating it */
|
||||
_alpm_log(PM_LOG_WARNING, _("no %s cache exists, creating...\n"),
|
||||
cachedir);
|
||||
alpm_logaction("warning: no %s cache exists, creating...\n",
|
||||
cachedir);
|
||||
if(_alpm_makepath(cachedir) == 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "using cachedir: %s\n", cachedir);
|
||||
return(cachedir);
|
||||
@ -590,7 +588,6 @@ const char *_alpm_filecache_setup(void)
|
||||
alpm_option_set_cachedirs(tmp);
|
||||
_alpm_log(PM_LOG_DEBUG, "using cachedir: %s", "/tmp/\n");
|
||||
_alpm_log(PM_LOG_WARNING, _("couldn't create package cache, using /tmp instead\n"));
|
||||
alpm_logaction("warning: couldn't create package cache, using /tmp instead\n");
|
||||
return(alpm_list_getdata(tmp));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user