Markus Metz wrote: > > In 6.x, LFS is enabled for specific libraries or modules using e.g.: > > > > ifneq ($(USE_LARGEFILES),) > > EXTRA_CFLAGS = -D_FILE_OFFSET_BITS=64 > > endif > > > > in the corresponding Makefile. This needs to be done on a case-by-case > > basis because not all modules are LFS-aware, e.g. because they > > calculate offsets using "int" or "long" arithmetic, or use > > fseek/ftell. > > IOW, for 6.x and mingw32, each module would need to decide if it wants > to use e.g. fseeko64 or fseek.
We don't use fseeko() directly. In 6.x, modules which use fseek() are built without LFS; in 7.0, G_fseek() is used. > So, how about > #ifdef __MINGW32__ #if defined(__MINGW32__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 > +/* add/remove as needed */ > #define off_t off64_t > #define fseeko fseeko64 > #define ftello ftello64 > +#define lseek lseek64 > +#define tell tell64 > +#define seek seek64 > +#define stat stat64 > +#define fstat fstat64 If you redirect stat() to stat64(), you also need to redirect "struct stat" to "struct __stat64". But I'm not sure how to go about that. Also, there are two 64-bit stat interfaces, stati64() and "struct _stati64", and stat64() and "struct __stat64". AFAICT, the latter requires MSVCRT >= 6.1 (and uses __time64_t instead of time_t for the timestamps). -- Glynn Clements <[email protected]> _______________________________________________ grass-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-dev
