diff options
author | Otavio Salvador <otavio@ossystems.com.br> | 2007-10-29 16:52:30 -0200 |
---|---|---|
committer | Otavio Salvador <otavio@ossystems.com.br> | 2007-10-29 16:52:30 -0200 |
commit | 919e5852f297045cdb409143df663ad630b123e8 (patch) | |
tree | fa19a3f4d6cdd0b4e214f8237cef58fe455ef1eb | |
parent | 65d3c471aa471a57aa7bda36f2d10bee160bfd0a (diff) |
* Applied patch from Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
to add backward support for arches that lacks pselect support,
closes: #448406.
-rw-r--r-- | apt-pkg/deb/dpkgpm.cc | 24 | ||||
-rw-r--r-- | debian/changelog | 5 |
2 files changed, 28 insertions, 1 deletions
diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index ce4d4b44b..e3fe8d845 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -543,6 +543,27 @@ bool pkgDPkgPM::CloseLog() return true; } +/*{{{*/ +// This implements a racy version of pselect for those architectures +// that don't have a working implementation. +// FIXME: Probably can be removed on Lenny+1 +static int racy_pselect(int nfds, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, const struct timespec *timeout, + const sigset_t *sigmask) +{ + sigset_t origmask; + struct timeval tv; + int retval; + + tv.tv_sec = timeout->tv.tv_sec; + tv.tv_usec = timeout->tv.tv_nsec/1000; + + sigprocmask(SIG_SETMASK, &sigmask, &origmask); + retval = select(nfds, readfds, writefds, exceptfds, &tv); + sigprocmask(SIG_SETMASK, &origmask, 0); + return retval; +} +/*}}}*/ // DPkgPM::Go - Run the sequence /*{{{*/ // --------------------------------------------------------------------- @@ -855,6 +876,9 @@ bool pkgDPkgPM::Go(int OutStatusFd) tv.tv_nsec = 0; select_ret = pselect(max(master, _dpkgin)+1, &rfds, NULL, NULL, &tv, &original_sigmask); + if (select_ret < 0 && (errno == EINVAL || errno == ENOSYS)) + select_ret = racy_pselect(max(master, _dpkgin)+1, &rfds, NULL, + NULL, &tv, &original_sigmask); if (select_ret == 0) continue; else if (select_ret < 0 && errno == EINTR) diff --git a/debian/changelog b/debian/changelog index cd14b0caf..36c7aa2c2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,8 +12,11 @@ apt (0.7.9) UNRELEASED; urgency=low [ Otavio Salvador ] * Fix configure script to check for CURL library and headers presense. + * Applied patch from Brian M. Carlson <sandals@crustytoothpaste.ath.cx> + to add backward support for arches that lacks pselect support, + closes: #448406. - -- Otavio Salvador <otavio@debian.org> Mon, 29 Oct 2007 10:15:52 -0200 + -- Otavio Salvador <otavio@debian.org> Mon, 29 Oct 2007 15:53:32 -0200 apt (0.7.8) unstable; urgency=low |