summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2012-06-16 01:12:22 +0200
committerDan McGee <dan@archlinux.org>2012-08-02 09:34:45 -0500
commit49dbebcc36e33f1df88a12b63cc3876838eb9dc5 (patch)
tree2e0db2d85a4a635d65b88e507c93d0f3bb77cf29
parent7193ce1ecd0089545d100fd11647cb346d15331b (diff)
downloadpacman-49dbebcc36e33f1df88a12b63cc3876838eb9dc5.tar.xz
Allow cleaning only some cachedirs
When cleaning the cache, ask for each cachedir separately. Allan: add some white space in output Signed-off-by: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--src/pacman/sync.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 713d0864..532a6672 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -172,10 +172,6 @@ static int sync_cleancache(int level)
alpm_list_t *cachedirs = alpm_option_get_cachedirs(config->handle);
int ret = 0;
- for(i = cachedirs; i; i = alpm_list_next(i)) {
- printf(_("Cache directory: %s\n"), (const char *)i->data);
- }
-
if(!config->cleanmethod) {
/* default to KeepInstalled if user did not specify */
config->cleanmethod = PM_CLEAN_KEEPINST;
@@ -189,22 +185,31 @@ static int sync_cleancache(int level)
if(config->cleanmethod & PM_CLEAN_KEEPCUR) {
printf(_(" All current sync database packages\n"));
}
- if(!yesno(_("Do you want to remove all other packages from cache?"))) {
- return 0;
- }
- printf(_("removing old packages from cache...\n"));
- } else {
- if(!noyes(_("Do you want to remove ALL files from cache?"))) {
- return 0;
- }
- printf(_("removing all files from cache...\n"));
}
+ printf("\n");
for(i = cachedirs; i; i = alpm_list_next(i)) {
const char *cachedir = i->data;
- DIR *dir = opendir(cachedir);
+ DIR *dir;
struct dirent *ent;
+ printf(_("Cache directory: %s\n"), (const char *)i->data);
+
+ if(level == 1) {
+ if(!yesno(_("Do you want to remove all other packages from cache?"))) {
+ printf("\n");
+ continue;
+ }
+ printf(_("removing old packages from cache...\n"));
+ } else {
+ if(!noyes(_("Do you want to remove ALL files from cache?"))) {
+ printf("\n");
+ continue;
+ }
+ printf(_("removing all files from cache...\n"));
+ }
+
+ dir = opendir(cachedir);
if(dir == NULL) {
pm_printf(ALPM_LOG_ERROR,
_("could not access cache directory %s\n"), cachedir);
@@ -310,6 +315,7 @@ static int sync_cleancache(int level)
}
}
closedir(dir);
+ printf("\n");
}
return ret;
@@ -930,7 +936,6 @@ int pacman_sync(alpm_list_t *targets)
}
ret += sync_cleancache(config->op_s_clean);
- printf("\n");
ret += sync_cleandb_all();
if(trans_release() == -1) {