summaryrefslogtreecommitdiff
path: root/apt-private/private-install.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2013-10-13 15:05:04 +0200
committerMichael Vogt <mvo@debian.org>2013-10-13 15:05:04 +0200
commite6ad8031b774af9bdd5d460d9983450bb5a03d0d (patch)
treec337e4b089a091770b181c9575ab61eea9cb0074 /apt-private/private-install.cc
parent6c5ae8ed079e01082f606614641b19b7c08893ad (diff)
downloadapt-e6ad8031b774af9bdd5d460d9983450bb5a03d0d.tar.gz
move the status-fd progress reporting out of the pkgDPkgPM class, at this point, breaks ABI/API, lets see what we can do about this
Diffstat (limited to 'apt-private/private-install.cc')
-rw-r--r--apt-private/private-install.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc
index 643a6b37..d1066c86 100644
--- a/apt-private/private-install.cc
+++ b/apt-private/private-install.cc
@@ -23,6 +23,7 @@
#include <apt-pkg/pkgsystem.h>
#include <apt-pkg/pkgrecords.h>
#include <apt-pkg/indexfile.h>
+#include <apt-pkg/iprogress.h>
#include <set>
#include <locale.h>
@@ -104,7 +105,11 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask, bool Safety)
{
pkgSimulate PM(Cache);
int status_fd = _config->FindI("APT::Status-Fd",-1);
- pkgPackageManager::OrderResult Res = PM.DoInstall(status_fd);
+ APT::Progress::PackageManager *progress = NULL;
+ if (status_fd > 0)
+ progress = new APT::Progress::PackageManagerProgressFd(status_fd);
+ pkgPackageManager::OrderResult Res = PM.DoInstall(progress);
+ delete progress;
if (Res == pkgPackageManager::Failed)
return false;
if (Res != pkgPackageManager::Completed)
@@ -332,8 +337,23 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask, bool Safety)
}
_system->UnLock();
+
+ // FIXME: make this a factory
+ // select the right progress
int status_fd = _config->FindI("APT::Status-Fd",-1);
- pkgPackageManager::OrderResult Res = PM->DoInstall(status_fd);
+ APT::Progress::PackageManager *progress = NULL;
+ if (status_fd > 0)
+ progress = new APT::Progress::PackageManagerProgressFd(status_fd);
+ else if(_config->FindB("Dpkg::Progress-Fancy", false) == true)
+ progress = new APT::Progress::PackageManagerFancy();
+ else if (_config->FindB("Dpkg::Progress",
+ _config->FindB("DpkgPM::Progress", false)) == true)
+ progress = new APT::Progress::PackageManagerText();
+ else
+ progress = new APT::Progress::PackageManager();
+ pkgPackageManager::OrderResult Res = PM->DoInstall(progress);
+ delete progress;
+
if (Res == pkgPackageManager::Failed || _error->PendingError() == true)
return false;
if (Res == pkgPackageManager::Completed)