mxe/src/libcaca-2-vsnprintf.patch

187 lines
5.1 KiB
Diff

This file is part of MXE. See LICENSE.md for licensing 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