[FFmpeg-devel] [PATCH v8 0/3] Support long file names on Windows

Martin Storsjö martin at martin.st
Fri May 27 00:26:12 EEST 2022


On Thu, 26 May 2022, ffmpegagent wrote:

> This patchset adds support for long file and directory paths on Windows. The
> implementation follows the same logic that .NET is using internally, with
> the only exception that it doesn't expand short path components in 8.3
> format. .NET does this as the same function is also used for other purposes,
> but in our case, that's not required. Short (8.3) paths are working as well
> with the extended path prefix, even when longer than 260.
>
> Successfully tested:
>
> * Regular paths wth drive letter
> * Regular UNC paths
> * Long paths wth drive letter
> * Long paths wth drive letter and forward slashes
> * Long UNC paths
> * Prefixed paths wth drive letter
> * Prefixed UNC paths
>
> I have kept the individual functions separate on purpose, to make it easy to
> compare with the .NET impl. (compilers should inlinie those anyway)
>
> v2
>
> * wchar_filename: Improve comments and function documentation
> * os_support: adjust defines to use win32_stat
>
> v3
>
> * removed length check in path_is_extended()
> * added path_is_device_path() check in add_extended_prefix()
> * add_extended_prefix(): clarified doc and add checks
> * clarified string allocation length calculation
> * replaced 260 with MAX_PATH
> * removed redundant checks after normalization
>
> v4
>
> * rebased. no changes
>
> v5
>
> * resolved the ugly struct duplication
> * compatible with _USE_32BIT_TIME_T
>
> v6
>
> * wchar_filename.h: added links to .NET source code
> * wchar_filename.h: free allocations on error
> * os_support.hs: use clean and safe way to redirect stat() calls
>
> v7
>
> * os_support.h: remapped fstat with win32_stat structure
> * os_support.h: use int64_t for some members
> * avformat/file: remove _WIN32 condition
>
> v8
>
> * os_support.h: documented win32_stat structure
> * os_support.h: renamed function parameters
>
> softworkz (3):
>  avutil/wchar_filename,file_open: Support long file names on Windows
>  avformat/os_support: Support long file names on Windows
>  avformat/file: remove _WIN32 condition
>
> libavformat/file.c         |   4 -
> libavformat/os_support.h   | 116 ++++++++++++++++++------
> libavutil/file_open.c      |   2 +-
> libavutil/wchar_filename.h | 180 +++++++++++++++++++++++++++++++++++++
> 4 files changed, 272 insertions(+), 30 deletions(-)

This is still ok with me, fwiw.

// Martin



More information about the ffmpeg-devel mailing list