summaryrefslogtreecommitdiff
path: root/apt-pkg/deb
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2005-01-20 12:06:58 +0000
committerMichael Vogt <mvo@debian.org>2005-01-20 12:06:58 +0000
commitd3fbe3fe7968190312c953ee7ba0c567be33ef09 (patch)
treed52419c9d0e79425cca4dd35ccaeba5abaa330cc /apt-pkg/deb
parent67073e88fc4654be702fe3b176e94b86a484a858 (diff)
parenta2a5cd159fad8f9d07d31f791e89e1fdf672cdd9 (diff)
* starmeged with matt, added some comments to the unsetting of no_proxy in ftp.cc
Patches applied: * apt@packages.debian.org/apt--main--0--patch-49 Merge michael.vogt@canonical.com--2004/apt--status-fd--0 * apt@packages.debian.org/apt--main--0--patch-50 Increment libapt-pkg version * apt@packages.debian.org/apt--main--0--patch-51 0.6.30 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-32 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-1 * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-2 * changed version of the library * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-3 * merged with matt again * michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-4 * merged with apt--main--0 and fixed permissions in po/ * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-1 tag of michael.vogt@canonical.com--2004--laptop/apt--status-fd--0--patch-4 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-2 * merged with matt's tree * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-3 * removed a stupid "<<<" merge in the changelog * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-4 * star-merged with apt@packages.debian.org/apt--main--0 * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-5 * removed the "pre-fork/post-fork" change and put it into it's own branch, star-merged with matt so that it applies cleanly * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-6 * cleaned a incorrect log-file merge * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-7 * removed a conflict in =tagging-method * michael.vogt@canonical.com--2004/apt--status-fd--0--patch-8 * cleaned up the delta so that it no longer contains unreleated whitespace changes
Diffstat (limited to 'apt-pkg/deb')
-rw-r--r--apt-pkg/deb/dpkgpm.cc19
-rw-r--r--apt-pkg/deb/dpkgpm.h2
2 files changed, 18 insertions, 3 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc
index 85d46edba..61c48dcbb 100644
--- a/apt-pkg/deb/dpkgpm.cc
+++ b/apt-pkg/deb/dpkgpm.cc
@@ -326,7 +326,7 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf)
// DPkgPM::Go - Run the sequence /*{{{*/
// ---------------------------------------------------------------------
/* This globs the operations and calls dpkg */
-bool pkgDPkgPM::Go()
+bool pkgDPkgPM::Go(int status_fd)
{
unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);
unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
@@ -367,6 +367,17 @@ bool pkgDPkgPM::Go()
}
}
+ // if we got a status_fd argument, we pass it to apt
+ char status_fd_buf[20];
+ if(status_fd > 0)
+ {
+ Args[n++] = "--status-fd";
+ Size += strlen(Args[n-1]);
+ snprintf(status_fd_buf,20,"%i",status_fd);
+ Args[n++] = status_fd_buf;
+ Size += strlen(Args[n-1]);
+ }
+
switch (I->Op)
{
case Item::Remove:
@@ -440,7 +451,11 @@ bool pkgDPkgPM::Go()
sighandler_t old_SIGINT = signal(SIGINT,SIG_IGN);
// Fork dpkg
- pid_t Child = ExecFork();
+ pid_t Child;
+ if(status_fd > 0)
+ Child = ExecFork(status_fd);
+ else
+ Child = ExecFork();
// This is the child
if (Child == 0)
diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h
index 5d60b32d2..b59b9dc93 100644
--- a/apt-pkg/deb/dpkgpm.h
+++ b/apt-pkg/deb/dpkgpm.h
@@ -45,7 +45,7 @@ class pkgDPkgPM : public pkgPackageManager
virtual bool Install(PkgIterator Pkg,string File);
virtual bool Configure(PkgIterator Pkg);
virtual bool Remove(PkgIterator Pkg,bool Purge = false);
- virtual bool Go();
+ virtual bool Go(int status_fd=-1);
virtual void Reset();
public: