-# define opendir vlc_opendir
-# define readdir vlc_readdir
-# define closedir vlc_closedir
-# define rewinddir vlc_rewindir
-# define seekdir vlc_seekdir
-# define telldir vlc_telldir
-VLC_EXPORT( void *, vlc_opendir, ( const char * ) );
-VLC_EXPORT( void *, vlc_readdir, ( void * ) );
-VLC_EXPORT( int, vlc_closedir, ( void * ) );
-VLC_INTERNAL( void, vlc_rewinddir, ( void * ) );
-VLC_INTERNAL( void, vlc_seekdir, ( void *, long ) );
-VLC_INTERNAL( long, vlc_telldir, ( void * ) );
+
+# define poll(a, b, c) vlc_poll(a, b, c)
+#elif defined (HAVE_MAEMO)
+# include <poll.h>
+# define poll(a, b, c) vlc_poll(a, b, c)
+int vlc_poll (struct pollfd *, unsigned, int);
+#endif
+
+/* search.h */
+#ifndef HAVE_SEARCH_H
+typedef struct entry {
+ char *key;
+ void *data;
+} ENTRY;
+
+typedef enum {
+ FIND, ENTER
+} ACTION;
+
+typedef enum {
+ preorder,
+ postorder,
+ endorder,
+ leaf
+} VISIT;
+
+void *tsearch( const void *key, void **rootp, int(*cmp)(const void *, const void *) );
+void *tfind( const void *key, const void **rootp, int(*cmp)(const void *, const void *) );
+void *tdelete( const void *key, void **rootp, int(*cmp)(const void *, const void *) );
+void twalk( const void *root, void(*action)(const void *nodep, VISIT which, int depth) );
+void tdestroy( void *root, void (*free_node)(void *nodep) );
+#else // HAVE_SEARCH_H
+# ifndef HAVE_TDESTROY
+# define tdestroy vlc_tdestroy
+# endif
+#endif
+
+/* Random numbers */
+#ifndef HAVE_NRAND48
+double erand48 (unsigned short subi[3]);
+long jrand48 (unsigned short subi[3]);
+long nrand48 (unsigned short subi[3]);
+#endif
+
+#ifdef __ANDROID__
+# undef __linux__
+# ifndef __cplusplus
+# define __cplusplus 0
+# endif
+# include <pthread.h>
+# if __cplusplus == 0
+# undef __cplusplus
+# endif
+char *tempnam(const char *, const char *);
+#endif // ANDROID
+
+#ifdef __OS2__
+# undef HAVE_FORK /* Implementation of fork() is imperfect on OS/2 */