aboutsummaryrefslogtreecommitdiffstats
path: root/compat/msvcrt
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2012-09-24 18:44:20 -0400
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2012-09-25 18:14:14 -0400
commit5ae9fa13f5ac640bec113120d540f70971aa635d (patch)
tree859f54e978977b136151ebac1733c18f1d4de175 /compat/msvcrt
parentde73ae6b1a3ff0398988dc683f94ea07e3bb1372 (diff)
downloadffmpeg-5ae9fa13f5ac640bec113120d540f70971aa635d.tar.gz
MinGW: Use our snprintf/vsnprintf when MinGW's is broken
All versions of MinGW-w64 prior to version 3, as well as all versions of MinGW32 have broken implementations of vsnprintf. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Diffstat (limited to 'compat/msvcrt')
-rw-r--r--compat/msvcrt/snprintf.c4
-rw-r--r--compat/msvcrt/snprintf.h38
2 files changed, 42 insertions, 0 deletions
diff --git a/compat/msvcrt/snprintf.c b/compat/msvcrt/snprintf.c
index 6787aad1c6..c64653fe82 100644
--- a/compat/msvcrt/snprintf.c
+++ b/compat/msvcrt/snprintf.c
@@ -27,6 +27,10 @@
#include "compat/va_copy.h"
#include "libavutil/error.h"
+#if defined(__MINGW32__)
+#define EOVERFLOW EFBIG
+#endif
+
int avpriv_snprintf(char *s, size_t n, const char *fmt, ...)
{
va_list ap;
diff --git a/compat/msvcrt/snprintf.h b/compat/msvcrt/snprintf.h
new file mode 100644
index 0000000000..f02113c5a2
--- /dev/null
+++ b/compat/msvcrt/snprintf.h
@@ -0,0 +1,38 @@
+/*
+ * C99-compatible snprintf() and vsnprintf() implementations
+ * Copyright (c) 2012 Ronald S. Bultje <rsbultje@gmail.com>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef COMPAT_SNPRINTF_H
+#define COMPAT_SNPRINTF_H
+
+#include <stdarg.h>
+#include <stdio.h>
+
+int avpriv_snprintf(char *s, size_t n, const char *fmt, ...);
+int avpriv_vsnprintf(char *s, size_t n, const char *fmt, va_list ap);
+
+#undef snprintf
+#undef _snprintf
+#undef vsnprintf
+#define snprintf avpriv_snprintf
+#define _snprintf avpriv_snprintf
+#define vsnprintf avpriv_vsnprintf
+
+#endif /* COMPAT_SNPRINTF_H */