X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fcompat_win32.c;h=8acbda2de858f838d22727534d79865db4618864;hb=374ae78b970a9249d047f0958472114b16523e23;hp=684998e131e1e6fcc3f3fffd8131ca1577cdc9ba;hpb=bd02d0e753a50e8a134d2e3ebb6aa4ebb715073a;p=fdkaac.git diff --git a/src/compat_win32.c b/src/compat_win32.c index 684998e..8acbda2 100644 --- a/src/compat_win32.c +++ b/src/compat_win32.c @@ -20,18 +20,11 @@ #include "compat.h" #define WIN32_LEAN_AND_MEAN #include - -typedef struct -{ - int newmode; -} _startupinfo; - -extern -int __wgetmainargs(int *, wchar_t ***, wchar_t ***, int, _startupinfo *); +#include int64_t aacenc_timer(void) { -#if _MSC_VER || HAVE_STRUCT___TIMEB64 +#if HAVE_STRUCT___TIMEB64 struct __timeb64 tv; _ftime64(&tv); #else @@ -41,6 +34,11 @@ int64_t aacenc_timer(void) return (int64_t)tv.time * 1000 + tv.millitm; } +int aacenc_seekable(FILE *fp) +{ + return GetFileType((HANDLE)_get_osfhandle(_fileno(fp))) == FILE_TYPE_DISK; +} + static int codepage_decode_wchar(int codepage, const char *from, wchar_t **to) { @@ -98,13 +96,13 @@ void aacenc_free_mainargs(void) void aacenc_getmainargs(int *argc, char ***argv) { int i; - wchar_t **wargv, **envp; - _startupinfo si = { 0 }; + wchar_t **wargv; - __wgetmainargs(argc, &wargv, &envp, 1, &si); + wargv = CommandLineToArgvW(GetCommandLineW(), argc); *argv = malloc((*argc + 1) * sizeof(char*)); for (i = 0; i < *argc; ++i) codepage_encode_wchar(CP_UTF8, wargv[i], &(*argv)[i]); + LocalFree(wargv); (*argv)[*argc] = 0; __aacenc_argv__ = *argv; atexit(aacenc_free_mainargs); @@ -157,7 +155,7 @@ int aacenc_fprintf(FILE *fp, const char *fmt, ...) codepage_decode_wchar(CP_UTF8, s, &ws); free(s); fflush(fp); - WriteConsoleW(fh, ws, cnt, &nw, 0); + WriteConsoleW(fh, ws, wcslen(ws), &nw, 0); free(ws); } return cnt;