From: David Flynn Date: Fri, 10 Apr 2009 12:53:01 +0000 (+0000) Subject: win32: delete old *printf fixup code. X-Git-Tag: 1.0.0-pre2~126 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=401456fd353e417bfc7b3af90b22a5e59c016016;p=vlc win32: delete old *printf fixup code. mingw provides this all for free and is better. Signed-off-by: David Flynn Signed-off-by: Jean-Baptiste Kempf --- diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 0294c3d767..224a134f2d 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -51,202 +51,18 @@ static inline char *strdup (const char *str) } #endif -#ifdef WIN32 -/* Windows' printf doesn't support %z modifiers, thus we need to rewrite - * the format string in a wrapper. */ -# include -# include -static inline char *vlc_fix_format_string (const char *format) -{ - char *fmt; -# ifdef WIN64 - const char *src = format, *tmp; - char *dst; - size_t n = 0; - while ((tmp = strstr (src, "%z")) != NULL) - { - n++; - src = tmp + 2; - } - if (n == 0) - return NULL; - - fmt = (char*)malloc (strlen (format) + n + 1); - if (fmt == NULL) - return NULL; - - src = format; - dst = fmt; - while ((tmp = strstr (src, "%z")) != NULL) - { - size_t d = tmp - src; - memcpy (dst, src, d); - dst += d; - memcpy (dst, "%ll", 3); - dst += 3; - src = tmp + 2; - } - strcpy (dst, src); -# else - char *f; - if (strstr (format, "%z") == NULL) - return NULL; - - fmt = strdup (format); - if (fmt == NULL) - return NULL; - - while ((f = strstr (fmt, "%z")) != NULL) - { - f[1] = 'l'; - } -# endif - return fmt; -} - -# include -# include - -static inline int vlc_vprintf (const char *format, va_list ap) -{ - char *fmt = vlc_fix_format_string (format); - int ret = vprintf (fmt ? fmt : format, ap); - free (fmt); - return ret; -} -# define vprintf vlc_vprintf - -static inline int vlc_vfprintf (FILE *stream, const char *format, va_list ap) -{ - char *fmt = vlc_fix_format_string (format); - int ret = vfprintf (stream, fmt ? fmt : format, ap); - free (fmt); - return ret; -} -# define vfprintf vlc_vfprintf - -static inline int vlc_vsprintf (char *str, const char *format, va_list ap) -{ - char *fmt = vlc_fix_format_string (format); - int ret = vsprintf (str, fmt ? fmt : format, ap); - free (fmt); - return ret; -} -# define vsprintf vlc_vsprintf - -static inline int vlc_vsnprintf (char *str, size_t size, const char *format, va_list ap) -{ - char *fmt = vlc_fix_format_string (format); - int ret = vsnprintf (str, size, fmt ? fmt : format, ap); - free (fmt); - return ret; -} -# define vsnprintf vlc_vsnprintf - -static inline int vlc_printf (const char *format, ...) -{ - va_list ap; - int ret; - va_start (ap, format); - ret = vprintf (format, ap); - va_end (ap); - return ret; -} -# define printf(...) vlc_printf(__VA_ARGS__) - -static inline int vlc_fprintf (FILE *stream, const char *format, ...) -{ - va_list ap; - int ret; - va_start (ap, format); - ret = vfprintf (stream, format, ap); - va_end (ap); - return ret; -} -# define fprintf vlc_fprintf - -#if 0 -static inline int vlc_sprintf (char *str, const char *format, ...) -{ - va_list ap; - int ret; - va_start (ap, format); - ret = vsprintf (str, format, ap); - va_end (ap); - return ret; -} -# define sprintf vlc_sprintf -#endif - -static inline int vlc_snprintf (char *str, size_t size, const char *format, ...) -{ - va_list ap; - int ret; - va_start (ap, format); - ret = vsnprintf (str, size, format, ap); - va_end (ap); - return ret; -} -# define snprintf vlc_snprintf - -/* Make sure we don't use flawed vasprintf or asprintf either */ -# undef HAVE_VASPRINTF -# undef HAVE_ASPRINTF -#endif - #ifndef HAVE_VASPRINTF # include # include # include static inline int vasprintf (char **strp, const char *fmt, va_list ap) { -#ifndef UNDER_CE int len = vsnprintf (NULL, 0, fmt, ap) + 1; char *res = (char *)malloc (len); if (res == NULL) return -1; *strp = res; return vsnprintf (res, len, fmt, ap); -#else - /* HACK: vsnprintf in the WinCE API behaves like - * the one in glibc 2.0 and doesn't return the number of characters - * it needed to copy the string. - * cf http://msdn.microsoft.com/en-us/library/1kt27hek.aspx - * and cf the man page of vsnprintf - * - Guess we need no more than 50 bytes. */ - int n, size = 50; - char *res, *np; - - if ((res = (char *) malloc (size)) == NULL) - return -1; - - while (1) - { - n = vsnprintf (res, size, fmt, ap); - - /* If that worked, return the string. */ - if (n > -1 && n < size) - { - *strp = res; - return n; - } - - /* Else try again with more space. */ - size *= 2; /* twice the old size */ - - if ((np = (char *) realloc (res, size)) == NULL) - { - free(res); - return -1; - } - else - { - res = np; - } - - } -#endif /* UNDER_CE */ } #endif