summaryrefslogtreecommitdiff
path: root/src/pacman/sync.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pacman/sync.c')
-rw-r--r--src/pacman/sync.c47
1 files changed, 24 insertions, 23 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 0b9e790f..713d0864 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -224,29 +224,30 @@ static int sync_cleancache(int level)
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;
- }
-
- /* skip package deltas, we aren't smart enough to clean these yet */
- if(fnmatch("*.delta", ent->d_name, 0) == 0) {
- continue;
- }
-
- /* skip any partial downloads */
- if(fnmatch("*.part", ent->d_name, 0) == 0) {
- continue;
+ if (level <= 1) {
+ static const char * const glob_skips[] = {
+ /* skip signature files - they are removed with their package file */
+ "*.sig",
+ /* skip package database within the cache directory */
+ "*.db*",
+ /* skip source packages within the cache directory */
+ "*.src.tar.*",
+ /* skip package deltas, we aren't smart enough to clean these yet */
+ "*.delta",
+ /* skip any partial downloads */
+ "*.part"
+ };
+ size_t j;
+
+ for(j = 0; j < sizeof(glob_skips) / sizeof(glob_skips[0]); j++) {
+ if(fnmatch(glob_skips[j], ent->d_name, 0) == 0) {
+ delete = 0;
+ break;
+ }
+ }
+ if(delete == 0) {
+ continue;
+ }
}
/* build the full filepath */