X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_fixups.h;h=df250fc81876a12b51f7a4e163606d48b00277ba;hb=d253749f68a85d8c720e66e4a0f7ad9693ba84e3;hp=55505992ce4a3d6f6ba455c5c1e96764607b7d17;hpb=86af35f2401ca1eb2da89a182d54bbe6c1540a2e;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 55505992ce..df250fc818 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -26,28 +26,49 @@ #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); @@ -56,6 +77,8 @@ static inline size_t strnlen (const char *str, size_t max) #endif #ifndef HAVE_STRNDUP +# include +# include static inline char *strndup (const char *str, size_t max) { size_t len = strnlen (str, max); @@ -123,7 +146,7 @@ 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) return d; + if (d || !s1[i]) return d; } return 0; } @@ -140,7 +163,7 @@ 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) return d; + if (d || !s1[i]) return d; } return 0; } @@ -181,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) @@ -200,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)