X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fixups.h;h=df250fc81876a12b51f7a4e163606d48b00277ba;hb=f2b2e37c04b2921e29daa3260dc696646ad4f10c;hp=3f185ab0c649d3bb51bd7384abdb8174fd394876;hpb=cb63940a0b567471603b667c391770309ad15c31;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 3f185ab0c6..df250fc818 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -26,33 +26,63 @@ #ifndef LIBVLC_FIXUPS_H # define LIBVLC_FIXUPS_H 1 +#ifndef HAVE_STRDUP # include # include - -#ifndef HAVE_STRDUP static inline char *strdup (const char *str) { size_t len = strlen (str) + 1; - char *res = malloc (len); + 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_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_STRNDUP +# include +# include static inline char *strndup (const char *str, size_t max) { - const char *end = memchr (str, '\0', max); - size_t len = end ? (size_t)(end - str) : max; - char *res = malloc (len + 1); + size_t len = strnlen (str, max); + char *res = (char *) malloc (len + 1); if (res) { memcpy (res, str, len); @@ -62,10 +92,6 @@ static inline char *strndup (const char *str, size_t max) } #endif -#ifndef HAVE_STRNLEN -# define strnlen vlc_strnlen -#endif - #ifndef HAVE_STRLCPY # define strlcpy vlc_strlcpy #endif @@ -114,7 +140,16 @@ static inline getenv (const char *name) #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 @@ -122,7 +157,16 @@ static inline getenv (const char *name) #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 @@ -160,6 +204,13 @@ static inline struct tm *gmtime_r (const time_t *timep, struct tm *result) } #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) @@ -179,8 +230,6 @@ typedef void *locale_t; #if defined (ENABLE_NLS) # include -#else -# define dgettext(dom, str) ((char *)(str)) #endif #define N_(str) gettext_noop (str)