There is a discrepancy in the declaration of struct dirent and the implementation. struct dirent is defined in terms of time_t, whos type depends on _USE_32BIT_TIME_T being defined. That means that the implementation will use a type that depends upon _USE_32BIT_TIME_T being defined while building the library, while an application will see a struct that depends on _USE_32BIT_TIME_T being defined when compiling the application. There should be either a redirection similar to findfirst, providing 2 implementations (4 including the wide char versions) in the library, or the declaration being changed to explicit use either __time32_t
or __time64_t
, and the implementation explicitely use findfirst32/findfirst64i32 accordingly.
This should have been fixed, by the patch I attached to ticket [#2106]; it looks like the promise to apply it was never fulfilled.
Related
Issues: #2106