X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fvlc_fixups.h;h=df250fc81876a12b51f7a4e163606d48b00277ba;hb=ce4c05bb991cd177949f2e58b01d9027a78e1dec;hp=cd7dc8288a236f6c2f2b2fe1e5dc3b4b9eb3bf28;hpb=287081caeb571486a0381ee9964198855706a208;p=vlc diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index cd7dc8288a..df250fc818 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -26,40 +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 = memchr (str, 0, 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) { size_t len = strnlen (str, max); - char *res = malloc (len + 1); + char *res = (char *) malloc (len + 1); if (res) { memcpy (res, str, len); @@ -117,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 @@ -125,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 @@ -163,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) @@ -182,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)