summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTimothy Gu <timothygu99@gmail.com>2014-08-22 17:07:16 (GMT)
committerTimothy Gu <timothygu99@gmail.com>2014-08-22 17:07:16 (GMT)
commit4afe33e22b7a0ac995a29b5bf8fb042c6a9db617 (patch)
treebc20b83db9ad34346b32708f556a1aee94b6f25e /src
parent9f7c1f8fd6ac7ad4c5c02531a0340a430d91ce45 (diff)
downloadmxe-4afe33e22b7a0ac995a29b5bf8fb042c6a9db617.zip
mxe-4afe33e22b7a0ac995a29b5bf8fb042c6a9db617.tar.gz
mxe-4afe33e22b7a0ac995a29b5bf8fb042c6a9db617.tar.bz2
libcaca: Fix compilation on MinGW-w64
Fixes #483. Signed-off-by: Timothy Gu <timothygu99@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/libcaca-2-vsnprintf.patch187
1 files changed, 187 insertions, 0 deletions
diff --git a/src/libcaca-2-vsnprintf.patch b/src/libcaca-2-vsnprintf.patch
new file mode 100644
index 0000000..b3b3105
--- /dev/null
+++ b/src/libcaca-2-vsnprintf.patch
@@ -0,0 +1,187 @@
+This file is part of MXE.
+See index.html for further information.
+
+From 28a0c250320661a3fe15d3f0373ace044cccd8e5 Mon Sep 17 00:00:00 2001
+From: Timothy Gu <timothygu99@gmail.com>
+Date: Fri, 22 Aug 2014 10:02:58 -0700
+Subject: [PATCH 1/2] Add more [v]snprintf() fallback
+
+Signed-off-by: Timothy Gu <timothygu99@gmail.com>
+---
+ caca/driver/ncurses.c | 4 ++++
+ caca/driver/slang.c | 4 ++++
+ caca/driver/x11.c | 4 ++++
+ caca/prof.c | 4 ++++
+ 4 files changed, 16 insertions(+)
+
+diff --git a/caca/driver/ncurses.c b/caca/driver/ncurses.c
+index 8161c0f..53c76c1 100644
+--- a/caca/driver/ncurses.c
++++ b/caca/driver/ncurses.c
+@@ -634,7 +634,11 @@ static void ncurses_uninstall_terminal(caca_display_t *dp)
+ if(!dp->drv.p->term)
+ return;
+
++#if defined(HAVE_SNPRINTF)
+ snprintf(termenv, 1023, "TERM=%s", dp->drv.p->term);
++#else
++ sprintf(termenv, "TERM=%s", dp->drv.p->term);
++#endif
+ free(dp->drv.p->term);
+ (void)putenv(termenv);
+ }
+diff --git a/caca/driver/slang.c b/caca/driver/slang.c
+index 4dd9fb6..cf38ecf 100644
+--- a/caca/driver/slang.c
++++ b/caca/driver/slang.c
+@@ -576,7 +576,11 @@ static void slang_uninstall_terminal(caca_display_t *dp)
+ if(!dp->drv.p->term)
+ return;
+
++#if defined(HAVE_SNPRINTF)
+ snprintf(termenv, 1023, "TERM=%s", dp->drv.p->term);
++#else
++ sprintf(termenv, "TERM=%s", dp->drv.p->term);
++#endif
+ free(dp->drv.p->term);
+ (void)putenv(termenv);
+ }
+diff --git a/caca/driver/x11.c b/caca/driver/x11.c
+index 6bd04cf..24bcdbf 100644
+--- a/caca/driver/x11.c
++++ b/caca/driver/x11.c
+@@ -155,7 +155,11 @@ static int x11_init_graphics(caca_display_t *dp)
+
+ if (dp->drv.p->font_set)
+ XFreeFontSet(dp->drv.p->dpy, dp->drv.p->font_set);
++#if defined(HAVE_SNPRINTF)
+ snprintf(buf, BUFSIZ - 1, "%s,*", *parser);
++#else
++ sprintf(buf, "%s,*", *parser);
++#endif
+ dp->drv.p->font_set = XCreateFontSet(dp->drv.p->dpy, buf,
+ &missing_charset_list,
+ &missing_charset_count,
+diff --git a/caca/prof.c b/caca/prof.c
+index 4581aaf..6aaa295 100644
+--- a/caca/prof.c
++++ b/caca/prof.c
+@@ -59,7 +59,11 @@ void _caca_init_stat(struct caca_stat *s, const char *format, ...)
+ s->name = malloc(128 * sizeof(char));
+ va_list args;
+ va_start(args, format);
++#if defined(HAVE_VSNPRINTF)
+ vsnprintf(s->name, 128, format, args);
++#else
++ vsprintf(s->name, format, args);
++#endif
+ s->name[127] = '\0';
+ va_end(args);
+
+--
+1.9.1
+
+
+From 2d9f0f378261d19b56a66f9f0f0508f11f31e56c Mon Sep 17 00:00:00 2001
+From: Timothy Gu <timothygu99@gmail.com>
+Date: Fri, 22 Aug 2014 10:04:06 -0700
+Subject: [PATCH 2/2] string: remove broken vsnprintf[_s] implementation
+
+This interferes mingw-w64, which as a proper vsnprintf definition.
+
+The usage of vsnprintf in the file is guarded with HAVE_VSNPRINF
+with appropriate fallback, so removing it should not break anything.
+
+Signed-off-by: Timothy Gu <timothygu99@gmail.com>
+---
+ caca/figfont.c | 26 --------------------------
+ caca/string.c | 22 ----------------------
+ 2 files changed, 48 deletions(-)
+
+diff --git a/caca/figfont.c b/caca/figfont.c
+index caa44d5..4e10186 100644
+--- a/caca/figfont.c
++++ b/caca/figfont.c
+@@ -29,11 +29,6 @@
+ #include "caca.h"
+ #include "caca_internals.h"
+
+-#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3
+-int sprintf_s(char *s, size_t n, const char *fmt, ...) CACA_WEAK;
+-int vsnprintf(char *s, size_t n, const char *fmt, va_list ap) CACA_WEAK;
+-#endif
+-
+ struct caca_charfont
+ {
+ int term_width;
+@@ -633,27 +628,6 @@ static uint32_t hsmush(uint32_t ch1, uint32_t ch2, int rule)
+ }
+
+ /*
+- * Functions for the mingw32 runtime
+- */
+-
+-#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3
+-int sprintf_s(char *s, size_t n, const char *fmt, ...)
+-{
+- va_list args;
+- int ret;
+- va_start(args, fmt);
+- ret = vsnprintf(s, n, fmt, args);
+- va_end(args);
+- return ret;
+-}
+-
+-int vsnprintf(char *s, size_t n, const char *fmt, va_list ap)
+-{
+- return 0;
+-}
+-#endif
+-
+-/*
+ * XXX: The following functions are aliases.
+ */
+
+diff --git a/caca/string.c b/caca/string.c
+index 22e0af2..db79e30 100644
+--- a/caca/string.c
++++ b/caca/string.c
+@@ -36,12 +36,6 @@
+ #include "caca.h"
+ #include "caca_internals.h"
+
+-#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3
+-int vsnprintf_s(char *s, size_t n, size_t c,
+- const char *fmt, va_list ap) CACA_WEAK;
+-int vsnprintf(char *s, size_t n, const char *fmt, va_list ap) CACA_WEAK;
+-#endif
+-
+ /** \brief Set cursor position.
+ *
+ * Put the cursor at the given coordinates. Functions making use of the
+@@ -607,22 +601,6 @@ int caca_set_canvas_boundaries(caca_canvas_t *cv, int x, int y, int w, int h)
+ }
+
+ /*
+- * Functions for the mingw32 runtime
+- */
+-
+-#if defined _WIN32 && defined __GNUC__ && __GNUC__ >= 3
+-int vsnprintf_s(char *s, size_t n, size_t c, const char *fmt, va_list ap)
+-{
+- return vsnprintf(s, n, fmt, ap);
+-}
+-
+-int vsnprintf(char *s, size_t n, const char *fmt, va_list ap)
+-{
+- return 0;
+-}
+-#endif
+-
+-/*
+ * XXX: The following functions are aliases.
+ */
+
+--
+1.9.1
+