[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