|
|
@@ -760,16 +760,13 @@ bool WaitFd(int Fd,bool write,unsigned long timeout)
|
|
|
return true;
|
|
|
}
|
|
|
/*}}}*/
|
|
|
-// ExecFork - Magical fork that sanitizes the context before execing /*{{{*/
|
|
|
+// MergeKeepFdsFromConfiguration - Merge APT::Keep-Fds configuration /*{{{*/
|
|
|
// ---------------------------------------------------------------------
|
|
|
-/* This is used if you want to cleanse the environment for the forked
|
|
|
- child, it fixes up the important signals and nukes all of the fds,
|
|
|
- otherwise acts like normal fork. */
|
|
|
-pid_t ExecFork()
|
|
|
+/* This is used to merge the APT::Keep-Fds with the provided KeepFDs
|
|
|
+ * set.
|
|
|
+ */
|
|
|
+void MergeKeepFdsFromConfiguration(std::set<int> &KeepFDs)
|
|
|
{
|
|
|
- set<int> KeepFDs;
|
|
|
-
|
|
|
- // FIXME: remove looking at APT::Keep-Fds eventually, its a hack
|
|
|
Configuration::Item const *Opts = _config->Tree("APT::Keep-Fds");
|
|
|
if (Opts != 0 && Opts->Child != 0)
|
|
|
{
|
|
|
@@ -782,6 +779,19 @@ pid_t ExecFork()
|
|
|
KeepFDs.insert(fd);
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
+ /*}}}*/
|
|
|
+// ExecFork - Magical fork that sanitizes the context before execing /*{{{*/
|
|
|
+// ---------------------------------------------------------------------
|
|
|
+/* This is used if you want to cleanse the environment for the forked
|
|
|
+ child, it fixes up the important signals and nukes all of the fds,
|
|
|
+ otherwise acts like normal fork. */
|
|
|
+pid_t ExecFork()
|
|
|
+{
|
|
|
+ set<int> KeepFDs;
|
|
|
+ // we need to merge the Keep-Fds as external tools like
|
|
|
+ // debconf-apt-progress use it
|
|
|
+ MergeKeepFdsFromConfiguration(KeepFDs);
|
|
|
return ExecFork(KeepFDs);
|
|
|
}
|
|
|
|