From 919e5852f297045cdb409143df663ad630b123e8 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Mon, 29 Oct 2007 16:52:30 -0200 Subject: * Applied patch from Brian M. Carlson to add backward support for arches that lacks pselect support, closes: #448406. --- apt-pkg/deb/dpkgpm.cc | 24 ++++++++++++++++++++++++ debian/changelog | 5 ++++- 2 files changed, 28 insertions(+), 1 deletion(-) 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 + to add backward support for arches that lacks pselect support, + closes: #448406. - -- Otavio Salvador Mon, 29 Oct 2007 10:15:52 -0200 + -- Otavio Salvador Mon, 29 Oct 2007 15:53:32 -0200 apt (0.7.8) unstable; urgency=low -- cgit v1.2.3