Browse Source

Added SDL_vsscanf().

Ryan C. Gordon 11 years ago
parent
commit
e769374096

+ 2 - 1
CMakeLists.txt

@@ -503,13 +503,14 @@ if(LIBC)
     check_c_source_compiles("#include <sys/types.h>
     check_c_source_compiles("#include <sys/types.h>
                              #include <sys/mman.h>
                              #include <sys/mman.h>
                              int main() { }" HAVE_MPROTECT)
                              int main() { }" HAVE_MPROTECT)
+    # FIXME: we don't care if you have snprintf, etc, any more. We only care if you have vsnprintf. Clean this up.
     foreach(_FN
     foreach(_FN
             strtod malloc calloc realloc free getenv setenv putenv unsetenv
             strtod malloc calloc realloc free getenv setenv putenv unsetenv
             qsort abs bcopy memset memcpy memmove memcmp strlen strlcpy strlcat
             qsort abs bcopy memset memcpy memmove memcmp strlen strlcpy strlcat
             strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa
             strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa
             _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull
             _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull
             atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp
             atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp
-            sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp
+            vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp
             nanosleep sysconf sysctlbyname
             nanosleep sysconf sysctlbyname
             )
             )
       string(TOUPPER ${_FN} _UPPER)
       string(TOUPPER ${_FN} _UPPER)

+ 1 - 1
configure

@@ -16581,7 +16581,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 fi
 
 
-    for ac_func in malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname
+        for ac_func in malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname
 do :
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"

+ 2 - 1
configure.in

@@ -268,7 +268,8 @@ if test x$enable_libc = xyes; then
         AC_DEFINE(HAVE_MPROTECT, 1, [ ])
         AC_DEFINE(HAVE_MPROTECT, 1, [ ])
         ]),
         ]),
     )
     )
-    AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname)
+    dnl FIXME: we don't care if you have snprintf, etc, any more. We only care if you have vsnprintf. Clean this up.
+    AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname)
 
 
     AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
     AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"])
     AC_CHECK_FUNCS(atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt)
     AC_CHECK_FUNCS(atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt)

+ 1 - 1
include/SDL_config.h.cmake

@@ -124,7 +124,7 @@
 #cmakedefine HAVE_STRCASECMP 1
 #cmakedefine HAVE_STRCASECMP 1
 #cmakedefine HAVE__STRNICMP 1
 #cmakedefine HAVE__STRNICMP 1
 #cmakedefine HAVE_STRNCASECMP 1
 #cmakedefine HAVE_STRNCASECMP 1
-#cmakedefine HAVE_SSCANF 1
+#cmakedefine HAVE_VSSCANF 1
 #cmakedefine HAVE_SNPRINTF 1
 #cmakedefine HAVE_SNPRINTF 1
 #cmakedefine HAVE_VSNPRINTF 1
 #cmakedefine HAVE_VSNPRINTF 1
 #cmakedefine HAVE_M_PI 1
 #cmakedefine HAVE_M_PI 1

+ 1 - 0
include/SDL_config.h.in

@@ -128,6 +128,7 @@
 #undef HAVE__STRNICMP
 #undef HAVE__STRNICMP
 #undef HAVE_STRNCASECMP
 #undef HAVE_STRNCASECMP
 #undef HAVE_SSCANF
 #undef HAVE_SSCANF
+#undef HAVE_VSSCANF
 #undef HAVE_SNPRINTF
 #undef HAVE_SNPRINTF
 #undef HAVE_VSNPRINTF
 #undef HAVE_VSNPRINTF
 #undef HAVE_M_PI
 #undef HAVE_M_PI

+ 1 - 1
include/SDL_config_android.h

@@ -81,7 +81,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_M_PI   1
 #define HAVE_M_PI   1

+ 1 - 1
include/SDL_config_iphoneos.h

@@ -79,7 +79,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_M_PI   1
 #define HAVE_M_PI   1

+ 1 - 1
include/SDL_config_macosx.h

@@ -82,7 +82,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_CEIL   1
 #define HAVE_CEIL   1

+ 1 - 1
include/SDL_config_pandora.h

@@ -81,7 +81,7 @@
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1

+ 1 - 1
include/SDL_config_psp.h

@@ -79,7 +79,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_M_PI   1
 #define HAVE_M_PI   1

+ 1 - 1
include/SDL_config_windows.h

@@ -132,7 +132,7 @@ typedef unsigned int uintptr_t;
 #define HAVE_SQRT 1
 #define HAVE_SQRT 1
 #if _MSC_VER >= 1800
 #if _MSC_VER >= 1800
 #define HAVE_STRTOLL 1
 #define HAVE_STRTOLL 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_COPYSIGN 1
 #define HAVE_COPYSIGN 1
 #define HAVE_SCALBN 1
 #define HAVE_SCALBN 1
 #endif
 #endif

+ 1 - 1
include/SDL_config_wiz.h

@@ -75,7 +75,7 @@
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1

+ 1 - 0
include/SDL_stdinc.h

@@ -331,6 +331,7 @@ extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
 extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
 extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
 
 
 extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...);
 extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...);
+extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
 extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...);
 extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...);
 extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap);
 extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap);
 
 

+ 1 - 1
premake/Linux/SDL_config_premake.h

@@ -128,7 +128,7 @@
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 /* #undef HAVE__STRNICMP */
 /* #undef HAVE__STRNICMP */
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_M_PI /**/
 #define HAVE_M_PI /**/

+ 1 - 1
premake/MinGW/SDL_config_premake.h

@@ -118,7 +118,7 @@ typedef unsigned int uintptr_t;
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRNICMP 1
 #define HAVE__STRNICMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN2 1
 #define HAVE_ATAN2 1

+ 1 - 1
premake/VisualC/VS2008/SDL_config_premake.h

@@ -118,7 +118,7 @@ typedef unsigned int uintptr_t;
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRNICMP 1
 #define HAVE__STRNICMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN2 1
 #define HAVE_ATAN2 1

+ 1 - 1
premake/VisualC/VS2010/SDL_config_premake.h

@@ -118,7 +118,7 @@ typedef unsigned int uintptr_t;
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRNICMP 1
 #define HAVE__STRNICMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN2 1
 #define HAVE_ATAN2 1

+ 1 - 1
premake/VisualC/VS2012/SDL_config_premake.h

@@ -118,7 +118,7 @@ typedef unsigned int uintptr_t;
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRNICMP 1
 #define HAVE__STRNICMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN2 1
 #define HAVE_ATAN2 1

+ 1 - 1
premake/Xcode-iOS/SDL_config_premake.h

@@ -79,7 +79,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_M_PI   1
 #define HAVE_M_PI   1

+ 1 - 1
premake/Xcode/Xcode3/SDL_config_premake.h

@@ -85,7 +85,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_CEIL   1
 #define HAVE_CEIL   1

+ 1 - 1
premake/Xcode/Xcode4/SDL_config_premake.h

@@ -85,7 +85,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_CEIL   1
 #define HAVE_CEIL   1

+ 1 - 1
premake/config/SDL_config_cygwin.template.h

@@ -124,7 +124,7 @@
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 /* #undef HAVE__STRNICMP */
 /* #undef HAVE__STRNICMP */
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_M_PI /**/
 #define HAVE_M_PI /**/

+ 1 - 1
premake/config/SDL_config_iphoneos.template.h

@@ -79,7 +79,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_M_PI   1
 #define HAVE_M_PI   1

+ 1 - 1
premake/config/SDL_config_linux.template.h

@@ -128,7 +128,7 @@
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 /* #undef HAVE__STRNICMP */
 /* #undef HAVE__STRNICMP */
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_SNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_VSNPRINTF 1
 #define HAVE_M_PI /**/
 #define HAVE_M_PI /**/

+ 1 - 1
premake/config/SDL_config_macosx.template.h

@@ -85,7 +85,7 @@
 #define HAVE_STRNCMP    1
 #define HAVE_STRNCMP    1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRCASECMP 1
 #define HAVE_STRNCASECMP 1
 #define HAVE_STRNCASECMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_SNPRINTF   1
 #define HAVE_SNPRINTF   1
 #define HAVE_VSNPRINTF  1
 #define HAVE_VSNPRINTF  1
 #define HAVE_CEIL   1
 #define HAVE_CEIL   1

+ 1 - 1
premake/config/SDL_config_windows.template.h

@@ -118,7 +118,7 @@ typedef unsigned int uintptr_t;
 #define HAVE_STRNCMP 1
 #define HAVE_STRNCMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRICMP 1
 #define HAVE__STRNICMP 1
 #define HAVE__STRNICMP 1
-#define HAVE_SSCANF 1
+#define HAVE_VSSCANF 1
 #define HAVE_M_PI 1
 #define HAVE_M_PI 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN 1
 #define HAVE_ATAN2 1
 #define HAVE_ATAN2 1

+ 16 - 13
src/stdlib/SDL_string.c

@@ -43,7 +43,7 @@ static int UTF8_TrailingBytes(unsigned char c)
         return 0;
         return 0;
 }
 }
 
 
-#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOL)
+#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOL)
 static size_t
 static size_t
 SDL_ScanLong(const char *text, int radix, long *valuep)
 SDL_ScanLong(const char *text, int radix, long *valuep)
 {
 {
@@ -84,7 +84,7 @@ SDL_ScanLong(const char *text, int radix, long *valuep)
 }
 }
 #endif
 #endif
 
 
-#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD)
+#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD)
 static size_t
 static size_t
 SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep)
 SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep)
 {
 {
@@ -116,7 +116,7 @@ SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep)
 }
 }
 #endif
 #endif
 
 
-#ifndef HAVE_SSCANF
+#ifndef HAVE_VSSCANF
 static size_t
 static size_t
 SDL_ScanUintPtrT(const char *text, int radix, uintptr_t * valuep)
 SDL_ScanUintPtrT(const char *text, int radix, uintptr_t * valuep)
 {
 {
@@ -148,7 +148,7 @@ SDL_ScanUintPtrT(const char *text, int radix, uintptr_t * valuep)
 }
 }
 #endif
 #endif
 
 
-#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOLL)
+#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOLL)
 static size_t
 static size_t
 SDL_ScanLongLong(const char *text, int radix, Sint64 * valuep)
 SDL_ScanLongLong(const char *text, int radix, Sint64 * valuep)
 {
 {
@@ -189,7 +189,7 @@ SDL_ScanLongLong(const char *text, int radix, Sint64 * valuep)
 }
 }
 #endif
 #endif
 
 
-#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOULL)
+#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOULL)
 static size_t
 static size_t
 SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 * valuep)
 SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 * valuep)
 {
 {
@@ -221,7 +221,7 @@ SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 * valuep)
 }
 }
 #endif
 #endif
 
 
-#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOD)
+#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOD)
 static size_t
 static size_t
 SDL_ScanFloat(const char *text, double *valuep)
 SDL_ScanFloat(const char *text, double *valuep)
 {
 {
@@ -967,25 +967,29 @@ SDL_strncasecmp(const char *str1, const char *str2, size_t maxlen)
 #endif /* HAVE_STRNCASECMP */
 #endif /* HAVE_STRNCASECMP */
 }
 }
 
 
-#ifdef HAVE_SSCANF
 int
 int
 SDL_sscanf(const char *text, const char *fmt, ...)
 SDL_sscanf(const char *text, const char *fmt, ...)
 {
 {
     int rc;
     int rc;
     va_list ap;
     va_list ap;
     va_start(ap, fmt);
     va_start(ap, fmt);
-    rc = vsscanf(text, fmt, ap);
+    rc = SDL_vsscanf(text, fmt, ap);
     va_end(ap);
     va_end(ap);
     return rc;
     return rc;
 }
 }
+
+#ifdef HAVE_VSSCANF
+int
+SDL_vsscanf(const char *text, const char *fmt, va_list ap)
+{
+    return vsscanf(text, fmt, ap);
+}
 #else
 #else
 int
 int
-SDL_sscanf(const char *text, const char *fmt, ...)
+SDL_vsscanf(const char *text, const char *fmt, ...)
 {
 {
-    va_list ap;
     int retval = 0;
     int retval = 0;
 
 
-    va_start(ap, fmt);
     while (*fmt) {
     while (*fmt) {
         if (*fmt == ' ') {
         if (*fmt == ' ') {
             while (SDL_isspace((unsigned char) *text)) {
             while (SDL_isspace((unsigned char) *text)) {
@@ -1239,11 +1243,10 @@ SDL_sscanf(const char *text, const char *fmt, ...)
         /* Text didn't match format specifier */
         /* Text didn't match format specifier */
         break;
         break;
     }
     }
-    va_end(ap);
 
 
     return retval;
     return retval;
 }
 }
-#endif /* HAVE_SSCANF */
+#endif /* HAVE_VSSCANF */
 
 
 int
 int
 SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...)
 SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...)