X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fcompat_win32.c;h=684998e131e1e6fcc3f3fffd8131ca1577cdc9ba;hb=70e912edbada6f9942201c590130921bf1d08eb1;hp=d640baf0f3095fd7722d9baf12b29837e665de57;hpb=bfb6aa3cb82b7e9ab858548cfbdd2c01c6769725;p=fdkaac.git diff --git a/src/compat_win32.c b/src/compat_win32.c index d640baf..684998e 100644 --- a/src/compat_win32.c +++ b/src/compat_win32.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "compat.h" #define WIN32_LEAN_AND_MEAN @@ -30,8 +31,13 @@ int __wgetmainargs(int *, wchar_t ***, wchar_t ***, int, _startupinfo *); int64_t aacenc_timer(void) { +#if _MSC_VER || HAVE_STRUCT___TIMEB64 struct __timeb64 tv; _ftime64(&tv); +#else + struct timeb tv; + ftime(&tv); +#endif return (int64_t)tv.time * 1000 + tv.millitm; } @@ -66,9 +72,12 @@ FILE *aacenc_fopen(const char *name, const char *mode) fp = (mode[0] == 'r') ? stdin : stdout; _setmode(_fileno(fp), _O_BINARY); } else { + int share = _SH_DENYRW; + if (strchr(mode, 'r') && !strchr(mode, '+')) + share = _SH_DENYWR; codepage_decode_wchar(CP_UTF8, name, &wname); codepage_decode_wchar(CP_UTF8, mode, &wmode); - fp = _wfopen(wname, wmode); + fp = _wfsopen(wname, wmode, share); free(wname); free(wmode); } @@ -82,7 +91,7 @@ void aacenc_free_mainargs(void) { char **p = __aacenc_argv__; for (; *p; ++p) - free(*p); + free(*p); free(__aacenc_argv__); }