#undef wxHAS_HUGE_FILES
// detect compilers which have support for huge files (notice that the
- // first case covers MSVC, so we don't have to test for it explicitly)
- #if ((_INTEGRAL_MAX_BITS >= 64) || defined(_LARGE_FILES))
- #define wxHAS_HUGE_FILES 1
+ // MSVC falls under _INTEGRAL_MAX_BITS >= 64 branch, so we don't have to
+ // test for it explicitly)
+ #if defined(_INTEGRAL_MAX_BITS)
+ #if _INTEGRAL_MAX_BITS >= 64
+ #define wxHAS_HUGE_FILES 1
+ #endif
#elif defined(__MINGW32__)
#define wxHAS_HUGE_FILES 1
- #else
- // DMC, Watcom, Metrowerks and Borland don't have huge file support (or
- // at least not all functions needed for it by wx) currently
- #define wxHAS_HUGE_FILES 0
+ #elif defined(_LARGE_FILES)
+ #define wxHAS_HUGE_FILES 1
#endif
+ // other Windows compilers (DMC, Watcom, Metrowerks and Borland) don't have
+ // huge file support (or at least not all functions needed for it by wx)
+ // currently
+
+
// functions
#if defined(__BORLANDC__) || defined(__WATCOMC__)
#define _tell tell
#endif
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
typedef wxLongLong_t wxFileOffset;
#define wxFileOffsetFmtSpec wxLongLongFmtSpec
#else
#define wxWrite _write
#endif
#endif
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
#define wxSeek _lseeki64
#define wxLseek _lseeki64
#define wxTell _telli64
#if wxUSE_UNICODE
#if wxUSE_UNICODE_MSLU
+ // implement the missing file functions in Win9x ourselves
+ #if defined( __VISUALC__ ) \
+ || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \
+ || ( defined(__MWERKS__) && defined(__WXMSW__) ) \
+ || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) \
+ || defined(__DMC__)
+ #ifdef __BORLANDC__
+ // BCC has _stati64() function but struct stati64
+ #define _stati64 stati64
+ #endif // __BORLANDC__
+
+ WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, int flags, int mode);
+ WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, int mode);
+ WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name);
+ WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name);
+ WXDLLIMPEXP_BASE int wxMSLU__wstat(const wxChar *name, struct _stat *buffer);
+ WXDLLIMPEXP_BASE int wxMSLU__wstati64(const wxChar *name, struct _stati64 *buffer);
+ #endif // Windows compilers with MSLU support
+
#define wxOpen wxMSLU__wopen
#define wxAccess wxMSLU__waccess
#define wxMkDir wxMSLU__wmkdir
#define wxRmDir wxMSLU__wrmdir
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
#define wxStat wxMSLU__wstati64
#else
#define wxStat wxMSLU__wstat
#define wxAccess _waccess
#define wxMkDir _wmkdir
#define wxRmDir _wrmdir
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
#define wxStat _wstati64
#else
#define wxStat _wstat
#else
#define wxRmDir _rmdir
#endif
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
#define wxStat _stati64
#else
#define wxStat _stat
// Types: Notice that Watcom is the only compiler to have a wide char
// version of struct stat as well as a wide char stat function variant.
// This was droped since OW 1.4 "for consistency across platforms".
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
#if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4)
#define wxStructStat struct _wstati64
#else
#endif
#endif
- #if wxHAS_HUGE_FILES
+ #ifdef wxHAS_HUGE_FILES
// wxFile is present and supports large files. Currently wxFFile
// doesn't have large file support with any Windows compiler (even
// Win64 ones).
#if wxUSE_FILE
- #define WXFILE_LARGEFILE 1
+ #define wxHAS_LARGE_FILES
#endif
#endif
BadFileSizeType );
// wxFile is present and supports large files
#ifdef wxUSE_FILE
- #define WXFILE_LARGEFILE
+ #define wxHAS_LARGE_FILES
#endif
// wxFFile is present and supports large files
#if SIZEOF_LONG == 8 || defined HAVE_FSEEKO
- #define WXFFILE_LARGEFILE
+ #define wxHAS_LARGE_FFILES
#endif
#else
#define wxFileOffsetFmtSpec _T("")