X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fixups.h;h=9ad95f55376d6c540c72306d555be8311cd78013;hb=e593067f8d39b5f7797808b31fbc2df76b438bb6;hp=4e7a8ae12f93ab7e2612eccc5716c84ddd745c0b;hpb=bb29acd2f25176a70759862417b99b8cbd082e2d;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 4e7a8ae12f..9ad95f5537 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -26,132 +26,322 @@ #ifndef LIBVLC_FIXUPS_H # define LIBVLC_FIXUPS_H 1 -#ifndef HAVE_STRDUP -# define strdup vlc_strdup +#if !defined (HAVE_GMTIME_R) || !defined (HAVE_LOCALTIME_R) +# include /* time_t */ +#endif + +#ifndef HAVE_LLDIV +typedef struct +{ + long long quot; /* Quotient. */ + long long rem; /* Remainder. */ +} lldiv_t; +#endif + +#if !defined(HAVE_GETENV) || \ + !defined(HAVE_USELOCALE) +# include /* NULL */ +#endif + +#if !defined (HAVE_REWIND) || \ + !defined (HAVE_GETDELIM) +# include /* FILE */ +#endif + +#if !defined (HAVE_STRLCPY) || \ + !defined (HAVE_STRNDUP) || \ + !defined (HAVE_STRNLEN) +# include /* size_t */ #endif #ifndef HAVE_VASPRINTF -# define vasprintf vlc_vasprintf +# include /* va_list */ #endif +#if !defined (HAVE_GETDELIM) || \ + !defined (HAVE_GETPID) || \ + !defined (HAVE_SWAB) +# include /* ssize_t, pid_t */ +#endif + +#ifndef HAVE_DIRFD +# include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* stdio.h */ #ifndef HAVE_ASPRINTF -# define asprintf vlc_asprintf +int asprintf (char **, const char *, ...); #endif -#ifndef HAVE_STRNDUP -# define strndup vlc_strndup +#ifndef HAVE_FLOCKFILE +void flockfile (FILE *); +int ftrylockfile (FILE *); +void funlockfile (FILE *); +int getc_unlocked (FILE *); +int getchar_unlocked (void); +int putc_unlocked (int, FILE *); +int putchar_unlocked (int); +#endif + +#ifndef HAVE_GETDELIM +ssize_t getdelim (char **, size_t *, int, FILE *); +ssize_t getline (char **, size_t *, FILE *); +#endif + +#ifndef HAVE_REWIND +void rewind (FILE *); +#endif + +#ifndef HAVE_VASPRINTF +int vasprintf (char **, const char *, va_list); +#endif + +/* string.h */ +#ifndef HAVE_STRCASECMP +int strcasecmp (const char *, const char *); +#endif + +#ifndef HAVE_STRCASESTR +char *strcasestr (const char *, const char *); +#endif + +#ifndef HAVE_STRDUP +char *strdup (const char *); +#endif + +#ifndef HAVE_STRNCASECMP +int strncasecmp (const char *, const char *, size_t); #endif #ifndef HAVE_STRNLEN -# define strnlen vlc_strnlen +size_t strnlen (const char *, size_t); +#endif + +#ifndef HAVE_STRNDUP +char *strndup (const char *, size_t); #endif #ifndef HAVE_STRLCPY -# define strlcpy vlc_strlcpy +size_t strlcpy (char *, const char *, size_t); #endif -#ifndef HAVE_ATOF -# define atof vlc_atof +#ifndef HAVE_STRSEP +char *strsep (char **, const char *); #endif -#ifndef HAVE_STRTOF -# ifdef HAVE_STRTOD -# define strtof( a, b ) ((float)strtod (a, b)) -# endif +#ifndef HAVE_STRTOK_R +char *strtok_r(char *, const char *, char **); +#endif + +/* stdlib.h */ +#ifndef HAVE_ATOF +#ifndef __ANDROID__ +double atof (const char *); +#endif #endif #ifndef HAVE_ATOLL -# define atoll vlc_atoll +long long atoll (const char *); +#endif + +#ifndef HAVE_LLDIV +lldiv_t lldiv (long long, long long); +#endif + +#ifndef HAVE_STRTOF +#ifndef __ANDROID__ +float strtof (const char *, char **); +#endif #endif #ifndef HAVE_STRTOLL -# define strtoll vlc_strtoll +long long int strtoll (const char *, char **, int); #endif -#ifndef HAVE_LLDIV -# define lldiv vlc_lldiv +/* time.h */ +#ifndef HAVE_GMTIME_R +struct tm *gmtime_r (const time_t *, struct tm *); #endif -#ifndef HAVE_SCANDIR -# define scandir vlc_scandir -# define alphasort vlc_alphasort +#ifndef HAVE_LOCALTIME_R +struct tm *localtime_r (const time_t *, struct tm *); #endif -#ifndef HAVE_GETENV -# define getenv vlc_getenv +/* unistd.h */ +#ifndef HAVE_GETPID +pid_t getpid (void); #endif -#ifndef HAVE_STRCASECMP -# ifndef HAVE_STRICMP -# define strcasecmp vlc_strcasecmp -# else -# define strcasecmp stricmp -# endif +#ifndef HAVE_FSYNC +int fsync (int fd); #endif -#ifndef HAVE_STRNCASECMP -# ifndef HAVE_STRNICMP -# define strncasecmp vlc_strncasecmp -# else -# define strncasecmp strnicmp -# endif +/* dirent.h */ +#ifndef HAVE_DIRFD +#ifdef __APPLE__ +#undef dirfd +#endif +int dirfd (DIR *); #endif -#ifndef HAVE_STRCASESTR -# ifndef HAVE_STRISTR -# define strcasestr vlc_strcasestr -# else -# define strcasestr stristr -# endif +#ifdef __cplusplus +} /* extern "C" */ #endif -#ifndef HAVE_LOCALTIME_R -/* If localtime_r() is not provided, we assume localtime() uses - * thread-specific storage. */ -# include -static inline struct tm *localtime_r (const time_t *timep, struct tm *result) +/* stdlib.h */ +#ifndef HAVE_GETENV +static inline char *getenv (const char *name) { - struct tm *s = localtime (timep); - if (s == NULL) - return NULL; - - *result = *s; - return result; + (void)name; + return NULL; } -static inline struct tm *gmtime_r (const time_t *timep, struct tm *result) -{ - struct tm *s = gmtime (timep); - if (s == NULL) - return NULL; +#endif - *result = *s; - return result; -} +#ifndef HAVE_SETENV +int setenv (const char *, const char *, int); +int unsetenv (const char *); #endif +/* locale.h */ #ifndef HAVE_USELOCALE +#define LC_NUMERIC_MASK 0 +#define LC_MESSAGES_MASK 0 typedef void *locale_t; -# define newlocale( a, b, c ) ((locale_t)0) -# define uselocale( a ) ((locale_t)0) -# define freelocale( a ) (void)0 +static inline locale_t uselocale(locale_t loc) +{ + (void)loc; + return NULL; +} +static inline void freelocale(locale_t loc) +{ + (void)loc; +} +static inline locale_t newlocale(int mask, const char * locale, locale_t base) +{ + (void)mask; (void)locale; (void)base; + return NULL; +} #endif -#ifdef WIN32 -# define opendir Use_utf8_opendir_or_vlc_wopendir_instead! -# define readdir Use_utf8_readdir_or_vlc_wreaddir_instead! -# define closedir vlc_wclosedir +/* Alignment of critical static data structures */ +#ifdef ATTRIBUTE_ALIGNED_MAX +# define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align))) +#else +# define ATTR_ALIGN(align) #endif /* libintl support */ -#define _(str) vlc_gettext (str) +#define _(str) vlc_gettext (str) +#define N_(str) gettext_noop (str) +#define gettext_noop(str) (str) -#if defined (ENABLE_NLS) -# include -#else -# define dgettext(dom, str) ((char *)(str)) +#ifndef HAVE_SWAB +void swab (const void *, void *, ssize_t); #endif -#define N_(str) gettext_noop (str) -#define gettext_noop(str) (str) +/* Socket stuff */ +#ifndef HAVE_INET_PTON +# define inet_pton vlc_inet_pton +#endif + +#ifndef HAVE_INET_NTOP +# define inet_ntop vlc_inet_ntop +#endif + +#ifndef HAVE_STRUCT_POLLFD +enum +{ + POLLIN=1, + POLLOUT=2, + POLLPRI=4, + POLLERR=8, // unsupported stub + POLLHUP=16, // unsupported stub + POLLNVAL=32 // unsupported stub +}; + +struct pollfd +{ + int fd; + unsigned events; + unsigned revents; +}; +#endif +#ifndef HAVE_POLL +# define poll(a, b, c) vlc_poll(a, b, c) +#elif defined (HAVE_MAEMO) +# include +# define poll(a, b, c) vlc_poll(a, b, c) +int vlc_poll (struct pollfd *, unsigned, int); +#endif + +#ifndef HAVE_IF_NAMEINDEX +#include +struct if_nameindex +{ + unsigned if_index; + char *if_name; +}; +# ifndef HAVE_IF_NAMETOINDEX +# define if_nametoindex(name) atoi(name) +# endif +# define if_nameindex() (errno = ENOBUFS, NULL) +# define if_freenameindex(list) (void)0 +#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 +# 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 */ +#endif #endif /* !LIBVLC_FIXUPS_H */