summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/deb/debsystem.cc11
-rw-r--r--apt-pkg/deb/dpkgpm.cc3
2 files changed, 11 insertions, 3 deletions
diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc
index 8533b1157..749969759 100644
--- a/apt-pkg/deb/debsystem.cc
+++ b/apt-pkg/deb/debsystem.cc
@@ -392,7 +392,16 @@ std::string debSystem::StripDpkgChrootDirectory(std::string const &File)/*{{{*/
/*}}}*/
std::string debSystem::GetDpkgExecutable() /*{{{*/
{
- return StripDpkgChrootDirectory(_config->Find("Dir::Bin::dpkg","dpkg"));
+ std::string dpkg_executable = _config->Find("Dir::Bin::dpkg","dpkg");
+ if (APT::String::Startswith(dpkg_executable, "/")) {
+ struct stat buf;
+ if (stat(dpkg_executable.c_str(), &buf) != 0) {
+ _error->Warning(_("The dpkg executable set in Dir::Bin::dpkg is "
+ "missing, falling back to using default dpkg."));
+ dpkg_executable = "dpkg";
+ }
+ }
+ return StripDpkgChrootDirectory(dpkg_executable);
}
/*}}}*/
std::vector<std::string> debSystem::GetDpkgBaseCommand() /*{{{*/
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index d176e85fc..a6be563ca 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -1773,7 +1773,6 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
// this loop is runs once per dpkg operation
vector<Item>::const_iterator I = List.cbegin();
- BuildDpkgCall Args;
while (I != List.end())
{
// Do all actions with the same Op in one run
@@ -1795,7 +1794,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress)
else
J = std::find_if(J, List.cend(), [&J](Item const &I) { return I.Op != J->Op; });
- Args.clearCallArguments();
+ BuildDpkgCall Args;
Args.reserve((J - I) + 10);
int fd[2];