X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fixups.h;h=ead019dcb93b44981b4e84c6e2acdc530c09d389;hb=7fb7f638de5f8f57e19b3e9c56904e775f93ef05;hp=98b6174a805c279f0a40aa8bc7b63fc075889259;hpb=d8023cde60406013265bdd5aaa6ab69b352b5de2;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 98b6174a80..ead019dcb9 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -1,8 +1,7 @@ /***************************************************************************** * fixups.h: portability fixups included from config.h ***************************************************************************** - * Copyright © 1998-2007 the VideoLAN project - * $Id$ + * 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 @@ -27,133 +26,164 @@ #ifndef LIBVLC_FIXUPS_H # define LIBVLC_FIXUPS_H 1 -#ifndef HAVE_STRDUP -# define strdup vlc_strdup +#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. +#endif + +#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 + +#ifndef HAVE_REWIND +# 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 -#ifndef HAVE_ASPRINTF -# define asprintf vlc_asprintf +#ifdef __cplusplus +extern "C" { #endif -#ifndef HAVE_STRNDUP -# define strndup vlc_strndup +#ifndef HAVE_STRDUP +char *strdup (const char *); +#endif + +#ifndef HAVE_VASPRINTF +int vasprintf (char **, const char *, va_list); +#endif + +#ifndef HAVE_ASPRINTF +int asprintf (char **, const char *, ...); #endif #ifndef HAVE_STRNLEN -# define strnlen vlc_strnlen +size_t strnlen (const char *, size_t); #endif -#ifndef HAVE_STRLCPY -# define strlcpy vlc_strlcpy +#ifndef HAVE_STRNDUP +char *strndup (const char *, size_t); #endif -#ifndef HAVE_ATOF -# define atof vlc_atof +#ifndef HAVE_STRLCPY +size_t strlcpy (char *, const char *, size_t); #endif #ifndef HAVE_STRTOF -# ifdef HAVE_STRTOD -# define strtof( a, b ) ((float)strtod (a, b)) -# endif +float strtof (const char *, char **); #endif -#ifndef HAVE_ATOLL -# define atoll vlc_atoll +#ifndef HAVE_ATOF +double atof (const char *); #endif #ifndef HAVE_STRTOLL -# define strtoll vlc_strtoll +long long int strtoll (const char *, char **, int); #endif -#ifndef HAVE_LLDIV -# define lldiv vlc_lldiv +#ifndef HAVE_STRSEP +char *strsep (char **, const char *); #endif -#ifndef HAVE_SCANDIR -# define scandir vlc_scandir -# define alphasort vlc_alphasort +#ifndef HAVE_ATOLL +long long atoll (const char *); #endif -#ifndef HAVE_GETENV -# define getenv vlc_getenv +#ifndef HAVE_LLDIV +lldiv_t lldiv (long long, long long); #endif #ifndef HAVE_STRCASECMP -# ifndef HAVE_STRICMP -# define strcasecmp vlc_strcasecmp -# else -# define strcasecmp stricmp -# endif +int strcasecmp (const char *, const char *); #endif #ifndef HAVE_STRNCASECMP -# ifndef HAVE_STRNICMP -# define strncasecmp vlc_strncasecmp -# else -# define strncasecmp strnicmp -# endif +int strncasecmp (const char *, const char *, size_t); #endif #ifndef HAVE_STRCASESTR -# ifndef HAVE_STRISTR -# define strcasestr vlc_strcasestr -# else -# define strcasestr stristr -# endif +char *strcasestr (const char *, const char *); +#endif + +#ifndef HAVE_GMTIME_R +struct tm *gmtime_r (const time_t *, struct tm *); #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) -{ - struct tm *s = localtime (timep); - if (s == NULL) - return NULL; +struct tm *localtime_r (const time_t *, struct tm *); +#endif - *result = *s; - return result; -} -static inline struct tm *gmtime_r (const time_t *timep, struct tm *result) -{ - struct tm *s = gmtime (timep); - if (s == NULL) - return NULL; +#ifndef HAVE_REWIND +void rewind (FILE *); +#endif - *result = *s; - return result; -} +#ifdef __cplusplus +} /* extern "C" */ #endif -#ifndef HAVE_DIRENT_H -typedef void DIR; -# ifndef FILENAME_MAX -# define FILENAME_MAX (260) -# endif -struct dirent +#ifndef HAVE_GETENV +static inline char *getenv (const char *name) { - long d_ino; /* Always zero. */ - unsigned short d_reclen; /* Always zero. */ - unsigned short d_namlen; /* Length of name in d_name. */ - char d_name[FILENAME_MAX]; /* File name. */ -}; -# 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 * ) ); + (void)name; + return NULL; +} +#endif + +/* 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 + +#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 +#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 +#endif + +/* libintl support */ +#define _(str) gettext(str) +#define gettext(str) vlc_gettext (str) +#define pgettext(ctx,id) vlc_pgettext(ctx,id) + +#define N_(str) gettext_noop (str) +#define gettext_noop(str) (str) + +#ifndef HAVE_SWAB +void swab (const void *, void *, ssize_t); #endif #endif /* !LIBVLC_FIXUPS_H */