defined(__BORLANDC__) \
)
+ // temporary defines just used immediately below
#undef wxHAS_HUGE_FILES
+ #undef wxHAS_HUGE_STDIO_FILES
// detect compilers which have support for huge files
#if defined(__VISUALC__)
#define wxHAS_HUGE_FILES 1
#endif
+ // detect compilers which have support for huge stdio files
+ #if wxCHECK_VISUALC_VERSION(8)
+ #define wxHAS_HUGE_STDIO_FILES
+ #define wxFseek _fseeki64
+ #define wxFtell _ftelli64
+ #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
#endif // wxHAS_UNDERSCORES_IN_POSIX_IDENTS
#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).
+ // wxFile is present and supports large files.
#if wxUSE_FILE
#define wxHAS_LARGE_FILES
#endif
+ // wxFFile is present and supports large files
+ #if wxUSE_FFILE && defined wxHAS_HUGE_STDIO_FILES
+ #define wxHAS_LARGE_FFILES
+ #endif
#endif
- // it's a private define, undefine it so that nobody gets tempted to use it
+ // private defines, undefine so that nobody gets tempted to use
#undef wxHAS_HUGE_FILES
+ #undef wxHAS_HUGE_STDIO_FILES
#elif defined (__WXPALMOS__)
typedef off_t wxFileOffset;
#ifdef _LARGE_FILES
#if wxUSE_FFILE && (SIZEOF_LONG == 8 || defined HAVE_FSEEKO)
#define wxHAS_LARGE_FFILES
#endif
+ #ifdef HAVE_FSEEKO
+ #define wxFseek fseeko
+ #define wxFtell ftello
+ #endif
#else
#define wxFileOffsetFmtSpec wxT("")
#endif
#define wxCRT_Lstat wxCRT_Stat
#endif
+// define wxFseek/wxFtell to large file versions if available (done above) or
+// to fseek/ftell if not, to save ifdefs in using code
+#ifndef wxFseek
+ #define wxFseek fseek
+#endif
+#ifndef wxFtell
+ #define wxFtell ftell
+#endif
+
inline int wxAccess(const wxString& path, mode_t mode)
{ return wxCRT_Access(path.fn_str(), mode); }
inline int wxOpen(const wxString& path, int flags, mode_t mode)
// implementation
// ============================================================================
-// ----------------------------------------------------------------------------
-// seek and tell with large file support if available
-// ----------------------------------------------------------------------------
-
-#ifdef HAVE_FSEEKO
-# define wxFseek fseeko
-# define wxFtell ftello
-#else
-# define wxFseek fseek
-# define wxFtell ftell
-#endif
-
// ----------------------------------------------------------------------------
// opening the file
// ----------------------------------------------------------------------------
break;
}
-#ifndef HAVE_FSEEKO
+#ifndef wxHAS_LARGE_FFILES
if ((long)ofs != ofs)
{
wxLogError(_("Seek error on file '%s' (large files not supported by stdio)"), m_name.c_str());