summaryrefslogtreecommitdiff
path: root/src/cmdline/cmdline_clean.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmdline/cmdline_clean.cc')
-rw-r--r--src/cmdline/cmdline_clean.cc73
1 files changed, 32 insertions, 41 deletions
diff --git a/src/cmdline/cmdline_clean.cc b/src/cmdline/cmdline_clean.cc
index 683f654d..3a9670f7 100644
--- a/src/cmdline/cmdline_clean.cc
+++ b/src/cmdline/cmdline_clean.cc
@@ -51,7 +51,7 @@ using boost::shared_ptr;
int cmdline_clean(int argc, char *argv[], bool simulate)
{
- const shared_ptr<terminal_io> term = create_terminal();
+ const string archivedir = aptcfg->FindDir("Dir::Cache::archives");
_error->DumpErrors();
@@ -61,21 +61,20 @@ int cmdline_clean(int argc, char *argv[], bool simulate)
return -1;
}
- shared_ptr<OpProgress> progress = make_text_progress(false, term, term, term);
-
- apt_init(progress.get(), false);
-
- if(_error->PendingError())
+ if(simulate)
{
- _error->DumpErrors();
- return -1;
+ printf(_("Del %s* %spartial/*\n"), archivedir.c_str(), archivedir.c_str());
+ return 0;
}
- // In case we aren't root.
- if(!simulate)
- apt_cache_file->GainLock();
- else
- apt_cache_file->ReleaseLock();
+ // Lock the archive directory
+ FileFd lock;
+ if (_config->FindB("Debug::NoLocking",false) == false)
+ {
+ lock.Fd(GetLock(archivedir + "lock"));
+ if (_error->PendingError() == true)
+ _error->Error(_("Unable to lock the download directory"));
+ }
if(_error->PendingError())
{
@@ -83,19 +82,9 @@ int cmdline_clean(int argc, char *argv[], bool simulate)
return -1;
}
- if(aptcfg)
- {
- if(simulate)
- printf(_("Del %s* %spartial/*\n"),
- aptcfg->FindDir("Dir::Cache::archives").c_str(),
- aptcfg->FindDir("Dir::Cache::archives").c_str());
- else
- {
- pkgAcquire fetcher;
- fetcher.Clean(aptcfg->FindDir("Dir::Cache::archives"));
- fetcher.Clean(aptcfg->FindDir("Dir::Cache::archives")+"partial/");
- }
- }
+ pkgAcquire fetcher;
+ fetcher.Clean(archivedir);
+ fetcher.Clean(archivedir+"partial/");
int rval=_error->PendingError() ? -1 : 0;
@@ -135,6 +124,7 @@ public:
int cmdline_autoclean(int argc, char *argv[], bool simulate)
{
+ const string archivedir = aptcfg->FindDir("Dir::Cache::archives");
const shared_ptr<terminal_io> term = create_terminal();
_error->DumpErrors();
@@ -145,21 +135,23 @@ int cmdline_autoclean(int argc, char *argv[], bool simulate)
return -1;
}
- shared_ptr<OpProgress> progress = make_text_progress(false, term, term, term);
-
- apt_init(progress.get(), false);
-
- if(_error->PendingError())
+ // Lock the archive directory
+ FileFd lock;
+ if (!simulate &&
+ _config->FindB("Debug::NoLocking",false) == false)
{
- _error->DumpErrors();
- return -1;
+ lock.Fd(GetLock(archivedir + "lock"));
+ if (_error->PendingError() == true)
+ {
+ _error->Error(_("Unable to lock the download directory"));
+ _error->DumpErrors();
+ return -1;
+ }
}
- // In case we aren't root.
- if(!simulate)
- apt_cache_file->GainLock();
- else
- apt_cache_file->ReleaseLock();
+ shared_ptr<OpProgress> progress = make_text_progress(false, term, term, term);
+
+ apt_init(progress.get(), false);
if(_error->PendingError())
{
@@ -169,9 +161,8 @@ int cmdline_autoclean(int argc, char *argv[], bool simulate)
LogCleaner cleaner(simulate);
int rval=0;
- if(!(cleaner.Go(aptcfg->FindDir("Dir::Cache::archives"), *apt_cache_file) &&
- cleaner.Go(aptcfg->FindDir("Dir::Cache::archives")+"partial/",
- *apt_cache_file)) ||
+ if(!(cleaner.Go(archivedir, *apt_cache_file) &&
+ cleaner.Go(archivedir+"partial/", *apt_cache_file)) ||
_error->PendingError())
rval=-1;