diff options
author | Matt Zimmerman <matt.zimmerman@canonical.com> | 2005-01-19 08:25:10 +0000 |
---|---|---|
committer | Matt Zimmerman <matt.zimmerman@canonical.com> | 2005-01-19 08:25:10 +0000 |
commit | 007dc9e082687e65a7ed89fc416bab05eaa5f96f (patch) | |
tree | 8b996ae97cb04713cb3b0e824255d0fe3d6dfcf5 /apt-pkg/deb/dpkgpm.cc | |
parent | 47f17da4f65ee4887f46e4442ce2843e3e744d89 (diff) |
Merge michael.vogt@canonical.com--2004/apt--status-fd--0
Patches applied:
* 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/dpkgpm.cc')
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 19 |
1 files changed, 17 insertions, 2 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) |