At least other BSDs still fail with
file/file_util.cpp: In function 'bool exists(const string&)':
file/file_util.cpp:172:16: error: aggregate 'exists(const string&)::stat64 file_info' has incomplete type and cannot be defined
struct stat64 file_info;
^
file/file_util.cpp:177:46: error: invalid use of incomplete type 'struct exists(const string&)::stat64'
int result = stat64(copy.c_str(), &file_info);
^
file/file_util.cpp:172:9: note: forward declaration of 'struct exists(const string&)::stat64'
struct stat64 file_info;
^
file/file_util.cpp: In function 'bool getFileInfo(const char*, FileInfo*)':
file/file_util.cpp:207:16: error: aggregate 'getFileInfo(const char*, FileInfo*)::stat64 file_info' has incomplete type and cannot be defined
struct stat64 file_info;
^
file/file_util.cpp:212:46: error: invalid use of incomplete type 'struct getFileInfo(const char*, FileInfo*)::stat64'
int result = stat64(copy.c_str(), &file_info);
^
file/file_util.cpp:207:9: note: forward declaration of 'struct getFileInfo(const char*, FileInfo*)::stat64'
struct stat64 file_info;
^
This fixes the problem on Windows that the Language selection list might sometimes be blank. (The cause was that attrs would only contain random garbage data when GetFileAttributesExA failed with a non-existing path.)
Also, check if 24-bit depth is supported and use it (when packed stencil isn't provided). VideoCore III and VideoCore IV used in Symbian, Android and Raspberry Pi require this as they only support 24-bit depth, 8-bit stencil.
backtrace.cpp assumes that anything non-windows is linux.
stb_vorbis.c includes malloc.h which has been deprecated since the 90s
on all implementations other than MSVC.
The stat64 hack in file_util.cpp is only needed on linux.
http_client.h also assumes non-windows is linux.