On Mon, Jun 13, 2016 at 05:50:18AM +0200, Matt Oliver wrote: > ffmpeg | branch: master | Matt Oliver <[email protected]> | Mon Jun 6 > 17:04:39 2016 +1000| [37787f261639c53998487400e874741c17e85fc6] | committer: > Matt Oliver > > lavf/os_support.h: Fix for unicode filenames on windows. > > Fixes #819 #5256 #5281 > > Signed-off-by: Matt Oliver <[email protected]> > > > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=37787f261639c53998487400e874741c17e85fc6 > --- > > libavformat/file.c | 4 ++++ > libavformat/os_support.h | 24 ++++++++++++++++++++++++ > 2 files changed, 28 insertions(+) > > diff --git a/libavformat/file.c b/libavformat/file.c > index 5765ce7..264542a 100644 > --- a/libavformat/file.c > +++ b/libavformat/file.c > @@ -148,7 +148,11 @@ static int file_check(URLContext *h, int mask) > ret |= AVIO_FLAG_WRITE; > #else > struct stat st; > +# ifndef _WIN32 > ret = stat(filename, &st); > +# else > + ret = win32_stat(filename, &st); > +# endif
why this chunk?
> if (ret < 0)
> return AVERROR(errno);
>
> diff --git a/libavformat/os_support.h b/libavformat/os_support.h
> index a332911..9e312a5 100644
> --- a/libavformat/os_support.h
> +++ b/libavformat/os_support.h
> @@ -182,6 +182,29 @@ DEF_FS_FUNCTION(unlink, _wunlink, _unlink)
> DEF_FS_FUNCTION(mkdir, _wmkdir, _mkdir)
> DEF_FS_FUNCTION(rmdir, _wrmdir , _rmdir)
>
> +#define DEF_FS_FUNCTION2(name, wfunc, afunc, partype) \
> +static inline int win32_##name(const char *filename_utf8, partype par) \
> +{ \
> + wchar_t *filename_w; \
> + int ret; \
> + \
> + if (utf8towchar(filename_utf8, &filename_w)) \
> + return -1; \
> + if (!filename_w) \
> + goto fallback; \
> + \
> + ret = wfunc(filename_w, par); \
> + av_free(filename_w); \
> + return ret; \
> + \
> +fallback: \
> + /* filename may be be in CP_ACP */ \
> + return afunc(filename_utf8, par); \
> +}
> +
> +DEF_FS_FUNCTION2(access, _waccess, _access, int)
> +DEF_FS_FUNCTION2(stat, _wstat64, _stat64, struct stat*)
> +
> static inline int win32_rename(const char *src_utf8, const char *dest_utf8)
> {
> wchar_t *src_w, *dest_w;
> @@ -231,6 +254,7 @@ fallback:
> #define rename win32_rename
> #define rmdir win32_rmdir
> #define unlink win32_unlink
> +#define access win32_access
>
...instead of #define stat win32_stat here?
Regards,
--
Clément B.
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
