]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filefn.h
Check for and allow zero length files
[wxWidgets.git] / include / wx / filefn.h
index 57260c5fe39bc64e7620f0af2e74b3db14f390ea..9fb223cde23f186ef2843218402a5be0e9850b17 100644 (file)
@@ -6,26 +6,32 @@
 // Created:     29/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Julian Smart
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef   _FILEFN_H_
 #define   _FILEFN_H_
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "filefn.h"
 #endif
 
 #include "wx/list.h"
 
+#ifndef __WXWINCE__
 #include <time.h>
+#endif
 
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
 
+#ifdef __WXWINCE__
+    typedef long off_t;
+#else
+
 // define off_t
-#if !defined(__WXMAC__) || defined(__UNIX__)
+#if !defined(__WXMAC__) || defined(__UNIX__) || defined(__MACH__)
     #include  <sys/types.h>
 #else
     typedef long off_t;
     typedef _off_t off_t;
 #elif defined(__BORLANDC__) && defined(__WIN16__)
     typedef long off_t;
-#elif defined(__SC__)
+#elif defined(__SYMANTEC__)
     typedef long off_t;
-#elif defined(__MWERKS__) && !defined(__INTEL__)
+#elif defined(__MWERKS__) && !defined(__INTEL__) && !defined(__MACH__)
     typedef long off_t;
 #endif
 
+#endif
+
 #if defined(__VISAGECPP__) && __IBMCPP__ >= 400
 //
 // VisualAge C++ V4.0 cannot have any external linkage const decs
@@ -67,9 +75,12 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
 
 // Microsoft compiler loves underscores, feed them to it
 #if defined( __VISUALC__ ) \
-    || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \
+    || ( defined(__MINGW32__) && !defined(__WINE__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \
     || ( defined(__MWERKS__) && defined(__WXMSW__) )
     // functions
+#ifdef __BORLANDC__
+    #define   _tell        tell
+#endif
     #define   wxClose      _close
     #define   wxRead       _read
     #define   wxWrite      _write
@@ -82,6 +93,7 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
     #if wxUSE_UNICODE
         #if wxUSE_UNICODE_MSLU
             #define   wxOpen       wxMSLU__wopen
             #define   wxAccess     wxMSLU__waccess
             #define   wxMkDir      wxMSLU__wmkdir
             #define   wxRmDir      wxMSLU__wrmdir
@@ -94,7 +106,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
             #define   wxStat       _wstat
         #endif
     #else // !wxUSE_UNICODE
+#ifdef __BORLANDC__
+        #define   wxOpen       open
+#else
         #define   wxOpen       _open
+#endif
         #define   wxAccess     _access
         #define   wxMkDir      _mkdir
         #define   wxRmDir      _rmdir
@@ -105,14 +121,16 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
     #define   wxStructStat struct _stat
 
     // constants (unless already defined by the user code)
-    #ifndef O_RDONLY
+    #if !defined(O_RDONLY) && !defined(__BORLANDC__)
         #define   O_RDONLY    _O_RDONLY
         #define   O_WRONLY    _O_WRONLY
         #define   O_RDWR      _O_RDWR
         #define   O_EXCL      _O_EXCL
         #define   O_CREAT     _O_CREAT
         #define   O_BINARY    _O_BINARY
+    #endif
 
+    #ifndef __BORLANDC__
         #define   S_IFMT      _S_IFMT
         #define   S_IFDIR     _S_IFDIR
         #define   S_IFREG     _S_IFREG
@@ -135,6 +153,9 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
     
 #if wxUSE_UNICODE
 #   define wxNEED_WX_UNISTD_H
+#if defined(__MWERKS__) && defined(macintosh)
+       #include <sys/stat.h>
+#endif
 WXDLLEXPORT int wxStat( const wxChar *file_name, wxStructStat *buf );
 WXDLLEXPORT int wxAccess( const wxChar *pathname, int mode );
 WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode );
@@ -150,34 +171,25 @@ WXDLLEXPORT int wxOpen( const wxChar *pathname, int flags, mode_t mode );
 // functions
 // ----------------------------------------------------------------------------
 WXDLLEXPORT bool wxFileExists(const wxString& filename);
-#define FileExists wxFileExists
 
 // does the path exist? (may have or not '/' or '\\' at the end)
 WXDLLEXPORT bool wxPathExists(const wxChar *pszPathName);
 
-#define wxDirExists wxPathExists
-#define DirExists wxDirExists
-
 WXDLLEXPORT bool wxIsAbsolutePath(const wxString& filename);
-#define IsAbsolutePath wxIsAbsolutePath
 
 // Get filename
 WXDLLEXPORT wxChar* wxFileNameFromPath(wxChar *path);
 WXDLLEXPORT wxString wxFileNameFromPath(const wxString& path);
-#define FileNameFromPath wxFileNameFromPath
 
 // Get directory
 WXDLLEXPORT wxString wxPathOnly(const wxString& path);
-#define PathOnly wxPathOnly
 
 // wxString version
 WXDLLEXPORT wxString wxRealPath(const wxString& path);
 
 WXDLLEXPORT void wxDos2UnixFilename(wxChar *s);
-#define Dos2UnixFilename wxDos2UnixFilename
 
 WXDLLEXPORT void wxUnix2DosFilename(wxChar *s);
-#define Unix2DosFilename wxUnix2DosFilename
 
 // Strip the extension, in situ
 WXDLLEXPORT void wxStripExtension(wxChar *buffer);
@@ -251,6 +263,19 @@ WXDLLEXPORT bool wxMkdir(const wxString& dir, int perm = 0777);
 // Remove directory. Flags reserved for future use.
 WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0);
 
+// compatibility defines, don't use in new code
+#define wxDirExists wxPathExists
+
+#if WXWIN_COMPATIBILITY_2
+    #define FileExists wxFileExists
+    #define DirExists wxDirExists
+    #define IsAbsolutePath wxIsAbsolutePath
+    #define FileNameFromPath wxFileNameFromPath
+    #define PathOnly wxPathOnly
+    #define Dos2UnixFilename wxDos2UnixFilename
+    #define Unix2DosFilename wxUnix2DosFilename
+#endif
+
 // ----------------------------------------------------------------------------
 // separators in file names
 // ----------------------------------------------------------------------------