# proc_pidinfo()-based closefrom() replacement.
AC_CHECK_HEADERS([libproc.h])
AC_CHECK_FUNCS([proc_pidinfo])
+ # poll(2) is broken for character-special devices (at least).
+ # cf. Apple bug 3710161 (not public, but searchable)
+ AC_DEFINE([BROKEN_POLL], [1],
+ [System poll(2) implementation is broken])
;;
*-*-dragonfly*)
SSHDLIBS="$SSHDLIBS -lcrypt"
*/
#include "includes.h"
-#if !defined(HAVE_PPOLL) || !defined(HAVE_POLL)
+#if !defined(HAVE_PPOLL) || !defined(HAVE_POLL) || defined(BROKEN_POLL)
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include "bsd-poll.h"
-#ifndef HAVE_PPOLL
+#if !defined(HAVE_PPOLL) || defined(BROKEN_POLL)
/*
* A minimal implementation of ppoll(2), built on top of pselect(2).
*
errno = saved_errno;
return ret;
}
-#endif /* HAVE_PPOLL */
+#endif /* !HAVE_PPOLL || BROKEN_POLL */
-#ifndef HAVE_POLL
+#if !defined(HAVE_POLL) || defined(BROKEN_POLL)
int
poll(struct pollfd *fds, nfds_t nfds, int timeout)
{
return ppoll(fds, nfds, tsp, NULL);
}
-#endif /* HAVE_POLL */
+#endif /* !HAVE_POLL || BROKEN_POLL */
-#endif /* HAVE_PPOLL || HAVE_POLL */
+#endif /* !HAVE_PPOLL || !HAVE_POLL || BROKEN_POLL */