[vlc-devel] commit: poll(): ifndef HAVE_POLL means we don't use poll(), not that it doesn't exist. In OSX poll() is broken for sockets, so we don' t use it. Since poll is a kernel function in OSX however, the kernel implementation was used whenever we used poll(), instead of VLCs private poll() which was the intended behaviour. Renamed poll() to vlc_poll() to prevent this. (Derk-Jan Hartman )
git version control
git at videolan.org
Wed Aug 6 16:58:47 CEST 2008
vlc | branch: master | Derk-Jan Hartman <hartman at videolan.org> | Wed Aug 6 16:58:02 2008 +0200| [d934fc525f6be873a56c54dd97d0aa8f5fead910] | committer: Derk-Jan Hartman
poll(): ifndef HAVE_POLL means we don't use poll(), not that it doesn't exist. In OSX poll() is broken for sockets, so we don't use it. Since poll is a kernel function in OSX however, the kernel implementation was used whenever we used poll(), instead of VLCs private poll() which was the intended behaviour. Renamed poll() to vlc_poll() to prevent this.
This fixes #1687, receiving SAPs on Mac OS X.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d934fc525f6be873a56c54dd97d0aa8f5fead910
---
include/vlc_fixups.h | 4 ++++
include/vlc_network.h | 2 +-
src/extras/libc.c | 7 ++++++-
src/libvlc.h | 4 ++++
src/libvlccore.sym | 2 +-
src/network/poll.c | 2 +-
6 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h
index df250fc..1c20492 100644
--- a/include/vlc_fixups.h
+++ b/include/vlc_fixups.h
@@ -235,4 +235,8 @@ typedef void *locale_t;
#define N_(str) gettext_noop (str)
#define gettext_noop(str) (str)
+#ifndef HAVE_POLL
+#define poll vlc_poll
+#endif
+
#endif /* !LIBVLC_FIXUPS_H */
diff --git a/include/vlc_network.h b/include/vlc_network.h
index aca2b0a..bdba45f 100644
--- a/include/vlc_network.h
+++ b/include/vlc_network.h
@@ -181,7 +181,7 @@ struct pollfd
int revents;
};
- VLC_EXPORT (int, poll, (struct pollfd *fds, unsigned nfds, int timeout));
+ VLC_EXPORT (int, vlc_poll, (struct pollfd *fds, unsigned nfds, int timeout));
#endif
#ifdef WIN32
diff --git a/src/extras/libc.c b/src/extras/libc.c
index f58f05f..77db6ef 100644
--- a/src/extras/libc.c
+++ b/src/extras/libc.c
@@ -58,7 +58,12 @@
# include <sys/wait.h>
# include <fcntl.h>
# include <sys/socket.h>
-# include <sys/poll.h>
+#ifdef HAVE_POLL
+# include <poll.h>
+#else
+#undef _poll
+#include <vlc_network.h>
+#endif
#endif
#if defined(WIN32) || defined(UNDER_CE)
diff --git a/src/libvlc.h b/src/libvlc.h
index 0c7c295..6c1f281 100644
--- a/src/libvlc.h
+++ b/src/libvlc.h
@@ -322,4 +322,8 @@ void vlc_rewinddir (void *);
# define rewinddir vlc_rewinddir
#endif
+#ifndef HAVE_POLL
+# define _poll vlc_poll
+#endif
+
#endif
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 0d4039d..51184a6 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -278,7 +278,7 @@ playlist_ServicesDiscoveryRemove
playlist_TreeMove
__pl_Release
__pl_Yield
-poll
+vlc_poll
resolve_xml_special_chars
sdp_AddAttribute
sdp_AddMedia
diff --git a/src/network/poll.c b/src/network/poll.c
index df92479..7af929b 100644
--- a/src/network/poll.c
+++ b/src/network/poll.c
@@ -32,7 +32,7 @@
#include <stdlib.h>
#include <vlc_network.h>
-int poll (struct pollfd *fds, unsigned nfds, int timeout)
+int vlc_poll (struct pollfd *fds, unsigned nfds, int timeout)
{
fd_set rdset, wrset, exset;
struct timeval tv = { 0, 0 };
More information about the vlc-devel
mailing list