From 4d3ef9a0dc468a67be26cfdee8a219b51ebcdaf2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 1 Jul 2017 11:12:45 +0200 Subject: [PATCH] Update --- Makefile.common | 3 +- .../libretro-common/compat/compat_snprintf.c | 60 +++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/drivers/libretro/libretro-common/compat/compat_snprintf.c diff --git a/Makefile.common b/Makefile.common index e3ea972..4c7cf48 100644 --- a/Makefile.common +++ b/Makefile.common @@ -44,7 +44,8 @@ SOURCES_C += \ ifeq ($(STATIC_LINKING),1) else -SOURCES_C += $(CORE_DIR)/drivers/libretro/libretro-common/streams/memory_stream.c +SOURCES_C += $(CORE_DIR)/drivers/libretro/libretro-common/streams/memory_stream.c \ + $(CORE_DIR)/drivers/libretro/libretro-common/compat/compat_snprintf.c endif ifeq ($(DEBUG),1) diff --git a/src/drivers/libretro/libretro-common/compat/compat_snprintf.c b/src/drivers/libretro/libretro-common/compat/compat_snprintf.c new file mode 100644 index 0000000..052fe5e --- /dev/null +++ b/src/drivers/libretro/libretro-common/compat/compat_snprintf.c @@ -0,0 +1,60 @@ +/* Copyright (C) 2010-2017 The RetroArch team + * + * --------------------------------------------------------------------------------------- + * The following license statement only applies to this file (compat_snprintf.c). + * --------------------------------------------------------------------------------------- + * + * Permission is hereby granted, free of charge, + * to any person obtaining a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* THIS FILE HAS NOT BEEN VALIDATED ON PLATFORMS BESIDES MSVC */ +#ifdef _MSC_VER + +#include + +#include +#include + +/* http://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010 */ + +int vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) +{ + int count = -1; + + if (size != 0) +#if (_MSC_VER <= 1310) + count = _vsnprintf(outBuf, size, format, ap); +#else + count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap); +#endif + if (count == -1) + count = _vscprintf(format, ap); + + return count; +} + +int snprintf(char *outBuf, size_t size, const char *format, ...) +{ + int count; + va_list ap; + + va_start(ap, format); + count = c99_vsnprintf_retro__(outBuf, size, format, ap); + va_end(ap); + + return count; +} +#endif