I'm going crazy trying to get this to work in MinGW 32-bit. It works on all other platforms I've tried.
All I want to do is get the size of a > 4GB file into a 64-bit int.
This works fine on other platforms:
#define _FILE_OFFSET_BITS 64
#include <sys/stat.h>
int64_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
return -1;
}
I tried adding the following defines before the above code, based on various suggestions I found online:
#define _LARGEFILE_SOURCE 1
#define _LARGEFILE64_SOURCE 1
#define __USE_LARGEFILE64 1
Also tried:
#ifdef __MINGW32__
#define off_t off64_t
#endif
And finally tried adding -D_FILE_OFFSET_BITS=64 to the gcc flags (should be the same as the above define though...)
No luck. The returned int64_t is still getting truncated to a 32-bit value.
What is the right way to determine a 64-bit file size in MinGW 32-bit?
Thanks!