X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fixups.h;h=b949d24629133a5c1471a60ba27b49fee1ddc42e;hb=b4d7ab2bf417e6fc92f42d2228cdc134db19ef8a;hp=b433834bbfefa6d5dc3936ae6574c463c5b85de3;hpb=818639153101c70514bc001d465485d23899a320;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index b433834bbf..b949d24629 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -1,21 +1,21 @@ /***************************************************************************** - * fixups.h: portability fixups included from config.h + * vlc_fixups.h: portability fixups included from config.h ***************************************************************************** * Copyright © 1998-2008 the VideoLAN project * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /** @@ -26,76 +26,179 @@ #ifndef LIBVLC_FIXUPS_H # define LIBVLC_FIXUPS_H 1 -#ifdef __MINGW32_VERSION -# if __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 14 -# error This mingw-runtime is too old, it has a broken vsnprintf -# endif -/* mingw-runtime provides the whole printf family in a c99 compliant way. */ -/* the way to enable this is to define __USE_MINGW_ANSI_STDIO, or something - * such as _ISOC99_SOURCE; the former is done by configure.ac */ -/* This isn't done here, since some modules don't include config.h and - * therefore this as the first include file */ -#elif defined UNDER_CE -# error Window CE support for *printf needs fixing. +#if !defined (HAVE_GMTIME_R) || !defined (HAVE_LOCALTIME_R) +# include /* time_t */ #endif -#ifndef HAVE_STRDUP -char *strdup (const char *); +#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_POSIX_MEMALIGN) || \ + !defined (HAVE_STRLCPY) || \ + !defined (HAVE_STRNDUP) || \ + !defined (HAVE_STRNLEN) +# include /* size_t */ #endif #ifndef HAVE_VASPRINTF -# include -int vasprintf (char **, const char *, va_list); +# include /* va_list */ #endif +#if !defined (HAVE_GETDELIM) || \ + !defined (HAVE_GETPID) || \ + !defined (HAVE_SWAB) +# include /* ssize_t, pid_t */ +#endif + +#if !defined (HAVE_DIRFD) || \ + !defined (HAVE_FDOPENDIR) +# include +#endif + +#ifdef __cplusplus +# define VLC_NOTHROW throw () +extern "C" { +#else +# define VLC_NOTHROW +#endif + +/* stdio.h */ #ifndef HAVE_ASPRINTF int asprintf (char **, const char *, ...); #endif +#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_STRVERSCMP +int strverscmp (const char *, const char *); +#endif + #ifndef HAVE_STRNLEN -# include size_t strnlen (const char *, size_t); #endif #ifndef HAVE_STRNDUP -# include char *strndup (const char *, size_t); #endif #ifndef HAVE_STRLCPY -# include size_t strlcpy (char *, const char *, size_t); #endif -#ifndef HAVE_STRTOF -float strtof (const char *, char **); +#ifndef HAVE_STRSEP +char *strsep (char **, const char *); +#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 +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 long long int strtoll (const char *, char **, int); #endif -#ifndef HAVE_STRSEP -char *strsep (char **, const char *); +/* time.h */ +#ifndef HAVE_GMTIME_R +struct tm *gmtime_r (const time_t *, struct tm *); #endif -#ifndef HAVE_ATOLL -long long atoll (const char *); +#ifndef HAVE_LOCALTIME_R +struct tm *localtime_r (const time_t *, struct tm *); #endif -#ifndef HAVE_LLDIV -typedef struct { - long long quot; /* Quotient. */ - long long rem; /* Remainder. */ -} lldiv_t; +/* unistd.h */ +#ifndef HAVE_GETPID +pid_t getpid (void) VLC_NOTHROW; +#endif -lldiv_t lldiv (long long, long long); +#ifndef HAVE_FSYNC +int fsync (int fd); #endif +/* dirent.h */ +#ifndef HAVE_DIRFD +int (dirfd) (DIR *); +#endif + +#ifndef HAVE_FDOPENDIR +DIR *fdopendir (int); +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +/* stdlib.h */ #ifndef HAVE_GETENV static inline char *getenv (const char *name) { @@ -104,31 +207,41 @@ static inline char *getenv (const char *name) } #endif -#ifndef HAVE_STRCASECMP -int strcasecmp (const char *, const char *); +#ifndef HAVE_SETENV +int setenv (const char *, const char *, int); +int unsetenv (const char *); #endif -#ifndef HAVE_STRNCASECMP -int strncasecmp (const char *, const char *, size_t); +#ifndef HAVE_POSIX_MEMALIGN +int posix_memalign (void **, size_t, size_t); #endif -#ifndef HAVE_STRCASESTR -char *strcasestr (const char *, const char * -#endif - -#ifndef HAVE_GMTIME_R -# include -struct tm *gmtime_r (const time_t *, struct tm *); +/* locale.h */ +#ifndef HAVE_USELOCALE +#define LC_ALL_MASK 0 +#define LC_NUMERIC_MASK 0 +#define LC_MESSAGES_MASK 0 +#define LC_GLOBAL_LOCALE ((locale_t)(uintptr_t)1) +typedef void *locale_t; +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 -#ifndef HAVE_LOCALTIME_R -# include -struct tm *localtime_r (const time_t *, struct tm *); -#endif - -#ifndef HAVE_REWIND -# include -void rewind (FILE *); +#if !defined (HAVE_STATIC_ASSERT) +# define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) +# define static_assert _Static_assert #endif /* Alignment of critical static data structures */ @@ -138,28 +251,126 @@ void rewind (FILE *); # define ATTR_ALIGN(align) #endif -#ifndef HAVE_USELOCALE -typedef void *locale_t; -# define newlocale( a, b, c ) ((locale_t)0) -# define uselocale( a ) ((locale_t)0) -# define freelocale( a ) (void)0 +/* libintl support */ +#define _(str) vlc_gettext (str) +#define N_(str) gettext_noop (str) +#define gettext_noop(str) (str) + +#ifdef __cplusplus +extern "C" { #endif -#ifdef WIN32 -# include -# define opendir Use_utf8_opendir_or_vlc_wopendir_instead! -# define readdir Use_utf8_readdir_or_vlc_wreaddir_instead! -# define closedir vlc_wclosedir +#ifndef HAVE_SWAB +void swab (const void *, void *, ssize_t); #endif -/* libintl support */ -#define _(str) vlc_gettext (str) +/* Socket stuff */ +#ifndef HAVE_INET_PTON +int inet_pton(int, const char *, void *); +const char *inet_ntop(int, const void *, char *, int); +#endif -#if defined (ENABLE_NLS) -# include +#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 +struct pollfd; +int poll (struct pollfd *, unsigned, int); #endif -#define N_(str) gettext_noop (str) -#define gettext_noop(str) (str) +#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 __cplusplus +} /* extern "C" */ +#endif + +#ifdef __OS2__ +# undef HAVE_FORK /* Implementation of fork() is imperfect on OS/2 */ + +struct addrinfo +{ + int ai_flags; + int ai_family; + int ai_socktype; + int ai_protocol; + size_t ai_addrlen; + struct sockaddr *ai_addr; + char *ai_canonname; + struct addrinfo *ai_next; +}; +#endif + +/* math.h */ + +#ifndef HAVE_NANF +#define nanf(tagp) NAN +#endif + +#ifdef _WIN32 +FILE *vlc_win32_tmpfile(void); +#endif #endif /* !LIBVLC_FIXUPS_H */