On Thu, 4 Dec 2025, Pali Rohár wrote:
These 32-bit wide functions are missing only in 64-bit system OS msvcrt.dll libraries. Provide mingw-w64 emulation as a simple wrapper around 64-bit wide functions. --- mingw-w64-crt/Makefile.am | 8 ++++++++ mingw-w64-crt/stdio/_findfirst32.c | 19 +++++++++++++++++++ mingw-w64-crt/stdio/_findnext32.c | 19 +++++++++++++++++++ mingw-w64-crt/stdio/_wfindfirst32.c | 19 +++++++++++++++++++ mingw-w64-crt/stdio/_wfindnext32.c | 19 +++++++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 mingw-w64-crt/stdio/_findfirst32.c create mode 100644 mingw-w64-crt/stdio/_findnext32.c create mode 100644 mingw-w64-crt/stdio/_wfindfirst32.c create mode 100644 mingw-w64-crt/stdio/_wfindnext32.cdiff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index 9714b855810d..ca9ec404aeae 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -674,11 +674,15 @@ src_msvcrt64=\ misc/wassert.c \ misc/wcsnlen.c \ secapi/wcstok_s.c \ + stdio/_findfirst32.c \ + stdio/_findnext32.c \ stdio/_fseeki64.c \ stdio/_fstat32.c \ stdio/_fstat32i64.c \ stdio/_stat32.c \ stdio/_stat32i64.c \ + stdio/_wfindfirst32.c \ + stdio/_wfindnext32.c \ stdio/_wstat32.c \ stdio/_wstat32i64.c \ string/msvcr80pre_wcstok.c @@ -839,11 +843,15 @@ src_msvcrtarm64=\ misc/__initenv.c \ misc/__winitenv.c \ secapi/msvcrt_arm_wcstok_s.c \ + stdio/_findfirst32.c \ + stdio/_findnext32.c \ stdio/_fstat32.c \ stdio/_fstat32i64.c \ stdio/_setmaxstdio.c \ stdio/_stat32.c \ stdio/_stat32i64.c \ + stdio/_wfindfirst32.c \ + stdio/_wfindnext32.c \ stdio/_wstat32.c \ stdio/_wstat32i64.c \ stdio/gets.c \ diff --git a/mingw-w64-crt/stdio/_findfirst32.c b/mingw-w64-crt/stdio/_findfirst32.c new file mode 100644 index 000000000000..d2950d5a9367 --- /dev/null +++ b/mingw-w64-crt/stdio/_findfirst32.c @@ -0,0 +1,19 @@ +#include <io.h> +#include <string.h> + +intptr_t __cdecl _findfirst32(const char *_Filename,struct _finddata32_t *_FindData) +{ + struct __finddata64_t fd; + intptr_t ret = _findfirst64(_Filename,&fd); + if (ret == -1) + return -1; + _FindData->attrib=fd.attrib; + _FindData->time_create=fd.time_create; + _FindData->time_access=fd.time_access; + _FindData->time_write=fd.time_write; + _FindData->size=(_fsize_t) fd.size;
If this is newly written code (instead of some existing piece of code just being copypasted around), I'd appreciate some spaces around some operators to make this a bit more readable.
// Martin _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
