#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
+#include <assert.h>
#include <io.h>
#include <fcntl.h>
#include <sys/timeb.h>
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;
return cnt;
}
+const char *aacenc_basename(const char *path)
+{
+/*
+ * Since path is encoded with UTF-8, naive usage of strrchr() shoule be safe.
+ */
+ const char *p = strrchr(path, '/');
+ const char *q = strrchr(path, '\\');
+ const char *r = strrchr(path, ':');
+ if (q > p) p = q;
+ if (r > p) p = r;
+ return p ? p + 1 : path;
+}