From dc5c436c5a5ec183854923ce2fef955e8118564e Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Tue, 7 Jul 2009 09:40:59 +0300 Subject: cache: delete also wget temporary files check for the full filename to match an expected pattern or delete it (so we delete files with .new, .new.backup, etc.). final part of remote package caching: fixes #49. --- src/cache.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/cache.c') diff --git a/src/cache.c b/src/cache.c index 68175c3..2e9dda7 100644 --- a/src/cache.c +++ b/src/cache.c @@ -67,6 +67,7 @@ static int cache_clean(struct apk_database *db) { DIR *dir; struct dirent *de; + struct apk_package *pkg; char path[256]; int delete, i; csum_t csum; @@ -102,13 +103,20 @@ static int cache_clean(struct apk_database *db) delete = (i >= db->num_repos); } else { /* Package - search for it */ - delete = (apk_db_get_pkg(db, csum) == NULL); + pkg = apk_db_get_pkg(db, csum); + if (pkg == NULL) + break; + + snprintf(path, sizeof(path), "%s-%s.apk", + pkg->name->name, pkg->version); + delete = strcmp(&de->d_name[sizeof(csum_t)*2+1], + path); } } while (0); if (delete) { if (apk_verbosity >= 2) - apk_message("Deleting %s", de->d_name); + apk_message("deleting %s", de->d_name); if (!(apk_flags & APK_SIMULATE)) unlink(de->d_name); } -- cgit v1.2.3