X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fixups.h;h=df250fc81876a12b51f7a4e163606d48b00277ba;hb=588723d7c65ccdb0fa5cc39b3cae132176637300;hp=98b6174a805c279f0a40aa8bc7b63fc075889259;hpb=d8023cde60406013265bdd5aaa6ab69b352b5de2;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 98b6174a80..df250fc818 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 @@ -28,49 +27,102 @@ # define LIBVLC_FIXUPS_H 1 #ifndef HAVE_STRDUP -# define strdup vlc_strdup +# include +# include +static inline char *strdup (const char *str) +{ + size_t len = strlen (str) + 1; + char *res = (char *)malloc (len); + if (res) memcpy (res, str, len); + return res; +} #endif #ifndef HAVE_VASPRINTF -# define vasprintf vlc_vasprintf +# include +# include +# include +static inline int vasprintf (char **strp, const char *fmt, va_list ap) +{ + int len = vsnprintf (NULL, 0, fmt, ap) + 1; + char *res = (char *)malloc (len); + if (res == NULL) + return -1; + *strp = res; + return vsprintf (res, fmt, ap); +} #endif #ifndef HAVE_ASPRINTF -# define asprintf vlc_asprintf +# include +# include +static inline int asprintf (char **strp, const char *fmt, ...) +{ + va_list ap; + int ret; + va_start (ap, fmt); + ret = vasprintf (strp, fmt, ap); + va_end (ap); + return ret; +} #endif -#ifndef HAVE_STRNDUP -# define strndup vlc_strndup +#ifndef HAVE_STRNLEN +# include +static inline size_t strnlen (const char *str, size_t max) +{ + const char *end = (const char *) memchr (str, 0, max); + return end ? (size_t)(end - str) : max; +} #endif -#ifndef HAVE_STRNLEN -# define strnlen vlc_strnlen +#ifndef HAVE_STRNDUP +# include +# include +static inline char *strndup (const char *str, size_t max) +{ + size_t len = strnlen (str, max); + char *res = (char *) malloc (len + 1); + if (res) + { + memcpy (res, str, len); + res[len] = '\0'; + } + return res; +} #endif #ifndef HAVE_STRLCPY # define strlcpy vlc_strlcpy #endif -#ifndef HAVE_ATOF -# define atof vlc_atof -#endif - #ifndef HAVE_STRTOF -# ifdef HAVE_STRTOD -# define strtof( a, b ) ((float)strtod (a, b)) -# endif +# define strtof( a, b ) ((float)strtod (a, b)) #endif -#ifndef HAVE_ATOLL -# define atoll vlc_atoll +#ifndef HAVE_ATOF +# define atof( str ) (strtod ((str), (char **)NULL, 10)) #endif #ifndef HAVE_STRTOLL # define strtoll vlc_strtoll #endif +#ifndef HAVE_ATOLL +# define atoll( str ) (strtoll ((str), (char **)NULL, 10)) +#endif + #ifndef HAVE_LLDIV -# define lldiv vlc_lldiv +typedef struct { + long long quot; /* Quotient. */ + long long rem; /* Remainder. */ +} lldiv_t; + +static inline lldiv_t lldiv (long long numer, long long denom) +{ + lldiv_t d = { .quot = numer / denom, .rem = numer % denom }; + return d; +} #endif #ifndef HAVE_SCANDIR @@ -79,12 +131,25 @@ #endif #ifndef HAVE_GETENV -# define getenv vlc_getenv +static inline getenv (const char *name) +{ + (void)name; + return NULL; +} #endif #ifndef HAVE_STRCASECMP # ifndef HAVE_STRICMP -# define strcasecmp vlc_strcasecmp +# include +static inline int strcasecmp (const char *s1, const char *s2) +{ + for (size_t i = 0;; i++) + { + int d = tolower (s1[i]) - tolower (s2[i]); + if (d || !s1[i]) return d; + } + return 0; +} # else # define strcasecmp stricmp # endif @@ -92,7 +157,16 @@ #ifndef HAVE_STRNCASECMP # ifndef HAVE_STRNICMP -# define strncasecmp vlc_strncasecmp +# include +static inline int strncasecmp (const char *s1, const char *s2, size_t n) +{ + for (size_t i = 0; i < n; i++) + { + int d = tolower (s1[i]) - tolower (s2[i]); + if (d || !s1[i]) return d; + } + return 0; +} # else # define strncasecmp strnicmp # endif @@ -130,30 +204,35 @@ static inline struct tm *gmtime_r (const time_t *timep, struct tm *result) } #endif -#ifndef HAVE_DIRENT_H -typedef void DIR; -# ifndef FILENAME_MAX -# define FILENAME_MAX (260) -# endif -struct dirent -{ - 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 * ) ); +/* 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) vlc_gettext (str) + +#if defined (ENABLE_NLS) +# include +#endif + +#define N_(str) gettext_noop (str) +#define gettext_noop(str) (str) + #endif /* !LIBVLC_FIXUPS_H */