support for i686-pc-mingw32 (missing _vscprintf)

This commit is contained in:
nu774 2013-01-11 17:33:54 +09:00
parent 61b6a9e383
commit dac71de305
2 changed files with 16 additions and 1 deletions

View File

@ -32,7 +32,7 @@ AC_CHECK_TYPES([ptrdiff_t])
AC_SYS_LARGEFILE
AC_FUNC_FSEEKO
AC_CHECK_FUNCS([gettimeofday nl_langinfo strdup])
AC_CHECK_FUNCS([gettimeofday nl_langinfo strdup _vscprintf])
AC_CHECK_FUNC(getopt_long)
AM_CONDITIONAL([FDK_NO_GETOPT_LONG],[test "$ac_cv_func_getopt_long" != "yes"])
AC_SEARCH_LIBS([aacEncOpen],[fdk-aac],[],[],[])

View File

@ -12,6 +12,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <assert.h>
#include <io.h>
#include <fcntl.h>
#include <sys/timeb.h>
@ -92,6 +93,20 @@ char *aacenc_to_utf8(const char *s)
return _strdup(s);
}
#if defined(__MINGW32__) && !defined(HAVE__VSCPRINTF)
int _vscprintf(const char *fmt, va_list ap)
{
static int (*fp_vscprintf)(const char *, va_list) = 0;
if (!fp_vscprintf) {
HANDLE h = GetModuleHandleA("msvcrt.dll");
FARPROC fp = GetProcAddress(h, "_vscprintf");
InterlockedCompareExchangePointer(&fp_vscprintf, fp, 0);
}
assert(fp_vscprintf);
return fp_vscprintf(fmt, ap);
}
#endif
int aacenc_fprintf(FILE *fp, const char *fmt, ...)
{
va_list ap;