Ignore *.sig, *.db*, and *.src.tar* when cleaning the package cache. Fixes FS#25166. Signed-off-by: Allan McRae <allan@archlinux.org> --- Why didn't I know about fnmatch before... so much easier than the regex stuff I was doing before! src/pacman/sync.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pacman/sync.c b/src/pacman/sync.c index e69ca58..1df2a6f 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -26,6 +26,7 @@ #include <errno.h> #include <dirent.h> #include <sys/stat.h> +#include <fnmatch.h> #include <alpm.h> #include <alpm_list.h> @@ -222,6 +223,23 @@ 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 withing 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); -- 1.7.9.3