mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-05 07:38:20 +02:00
fix broken poll on Mac OSX - build patch by Benjamin Reed
* configure.in: check for OSX's deadlocking poll * dbus/dbus-sysdeps-unix.c (_dbus_poll): if we have a broken poll don't use poll
This commit is contained in:
parent
bd561f9a19
commit
d25151483f
3 changed files with 37 additions and 2 deletions
|
|
@ -1,3 +1,10 @@
|
|||
2008-03-04 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* fix broken poll on Mac OSX - build patch by Benjamin Reed
|
||||
* configure.in: check for OSX's deadlocking poll
|
||||
* dbus/dbus-sysdeps-unix.c (_dbus_poll): if we have a broken poll
|
||||
don't use poll
|
||||
|
||||
2008-03-04 John (J5) Palmieri <johnp@redhat.com>
|
||||
|
||||
* check if the linker supports a flag instead of just checking for GNU
|
||||
|
|
|
|||
30
configure.in
30
configure.in
|
|
@ -590,7 +590,35 @@ AC_DEFINE_UNQUOTED(DBUS_HAVE_ATOMIC_INT_COND, [$have_atomic_inc_cond],
|
|||
AC_CHECK_LIB(socket,socket)
|
||||
AC_CHECK_FUNC(gethostbyname,,[AC_CHECK_LIB(nsl,gethostbyname)])
|
||||
|
||||
AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep poll setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit)
|
||||
AC_CHECK_FUNCS(vsnprintf vasprintf nanosleep usleep setenv clearenv unsetenv socketpair getgrouplist fpathconf setrlimit poll)
|
||||
|
||||
#### Check for broken poll; taken from Glib's configure
|
||||
|
||||
AC_MSG_CHECKING([for broken poll])
|
||||
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
#include <poll.h>
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
#include <sys/poll.h>
|
||||
#endif
|
||||
int main(void) {
|
||||
struct pollfd fds[1];
|
||||
int fd;
|
||||
fd = open("/dev/null", 1);
|
||||
fds[0].fd = fd;
|
||||
fds[0].events = POLLIN;
|
||||
fds[0].revents = 0;
|
||||
if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
|
||||
exit(1); /* Does not work for devices -- fail */
|
||||
}
|
||||
exit(0);
|
||||
}]])],
|
||||
[broken_poll=no],
|
||||
[broken_poll=yes
|
||||
AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
|
||||
[broken_poll="no (cross compiling)"])
|
||||
AC_MSG_RESULT($broken_poll)
|
||||
|
||||
AC_MSG_CHECKING(for dirfd)
|
||||
AC_TRY_LINK([
|
||||
|
|
|
|||
|
|
@ -1843,7 +1843,7 @@ _dbus_poll (DBusPollFD *fds,
|
|||
int n_fds,
|
||||
int timeout_milliseconds)
|
||||
{
|
||||
#ifdef HAVE_POLL
|
||||
#if defined(HAVE_POLL) && !defined(BROKEN_POLL)
|
||||
/* This big thing is a constant expression and should get optimized
|
||||
* out of existence. So it's more robust than a configure check at
|
||||
* no cost.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue