Skip special files when cleaning package cache

Ignore *.sig, *.db*, and *.src.tar* when cleaning the package cache.

Fixes FS#25166.

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2012-03-09 23:16:40 +10:00 committed by Dan McGee
parent ff58e5cb2d
commit 47d0df6c10
1 changed files with 17 additions and 0 deletions

View File

@ -28,6 +28,7 @@
#include <errno.h>
#include <dirent.h>
#include <sys/stat.h>
#include <fnmatch.h>
#include <alpm.h>
#include <alpm_list.h>
@ -224,6 +225,22 @@ static int sync_cleancache(int level)
if(strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0) {
continue;
}
/* skip signature files - they are removed with their package file */
if(fnmatch("*.sig", ent->d_name, 0) == 0) {
continue;
}
/* skip package database within the cache directory */
if(fnmatch("*.db*", ent->d_name, 0) == 0) {
continue;
}
/* skip source packages within the cache directory */
if(fnmatch("*.src.tar*", ent->d_name, 0) == 0) {
continue;
}
/* build the full filepath */
snprintf(path, PATH_MAX, "%s%s", cachedir, ent->d_name);