|
From: Greg J. <gv...@gm...> - 2015-01-19 23:54:20
|
OK I just checked on linux 64-bit, it was ok with that so apparently now its a cygwin64 shortcoming. On Mon, Jan 19, 2015 at 3:12 PM, Greg Jung <gv...@gm...> wrote: > > > On Mon, Jan 19, 2015 at 1:59 PM, David Macek <dav...@gm...> > wrote: > >> On 19. 1. 2015 22:55, Greg Jung wrote: >> > I'm working on a routine that returns file sizes and find that the >> 32-bit builds don't accomodate a larger byte-count typical of the large >> movie files or backup files found these days. I'm testing cygwin64 (native >> cygwin build) and mingw/msys 32-bit build:64-bit version does ok: . >> > I presume when I go mingw64 it'll be positive, but is there a way to >> trick the 32-bit builds to bring a 64-bit size value? >> >> I think you should be able to use some form of stat64, which uses 64-bit >> integers even on 32-bit platforms. See for example: >> http://stackoverflow.com/a/12568257 >> >> -- >> David Macek >> > Yes this worked in my ming build (just now), i set all > "struct stat" to "struct stat64" > and lstat -> lstat64 > and > #ifdef _WIN32 > #define lstat64(x,y) stat64(x,y) > #endif > but now the cygwin compilation has complaints: > > stat64 statStruct’ has incomplete type and cannot be defined > struct stat64 statStruct; > ^ > /f/gdl/src/file.cpp:402:58: error: ‘lstat64’ was not declared in this scope > int actStat = lstat64( testFile.c_str(), &statStruct); > ^ > /so I take a look at the cygwin64 /usr/include/sys/stat.h, I can't find > lstat64 at all: > greg@Homerw7 /f/gdl/src > $ grep lstat /usr/include/sys/stat.h > int _EXFUN(lstat,( const char *__restrict __path, struct stat > *__restrict __buf )); > > $ grep -B3 -A2 stat64 /usr/include/sys/stat.h > #ifdef __CYGWIN__ > #include <cygwin/stat.h> > #ifdef _COMPILING_NEWLIB > #define stat64 stat > #endif > #else > -- > int _EXFUN(_stat,( const char *__restrict __path, struct stat > *__restrict __sbuf )); > int _EXFUN(_mkdir,( const char *_path, mode_t __mode )); > #ifdef __LARGE64_FILES > struct stat64; > int _EXFUN(_stat64,( const char *__restrict __path, struct stat64 > *__restrict __sbuf )); > int _EXFUN(_fstat64,( int __fd, struct stat64 *__sbuf )); > #endif > #endif > > > |