[vlc-devel] [PATCH 4/4] win32: delete old *printf fixup code.
davidf+nntp at woaf.net
davidf+nntp at woaf.net
Fri Apr 10 14:53:01 CEST 2009
From: David Flynn <davidf at woaf.net>
mingw provides this all for free and is better.
Signed-off-by: David Flynn <davidf at rd.bbc.co.uk>
---
include/vlc_fixups.h | 184 --------------------------------------------------
1 files changed, 0 insertions(+), 184 deletions(-)
diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h
index 0294c3d..224a134 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 <string.h>
-# include <stdlib.h>
-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 <stdio.h>
-# include <stdarg.h>
-
-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 <stdio.h>
# include <stdlib.h>
# include <stdarg.h>
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
--
1.5.6.5
More information about the vlc-devel
mailing list