]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filefn.h
experimental --inplace flag implementation
[wxWidgets.git] / include / wx / filefn.h
index b235f2b1dc99718016793f822cb05796d458a5d7..76a361e0efe1863377e68aeb2bcd4afd3c1a95cf 100644 (file)
 #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__)
     #include  <sys/types.h>
@@ -41,6 +47,8 @@
     typedef long off_t;
 #endif
 
+#endif
+
 #if defined(__VISAGECPP__) && __IBMCPP__ >= 400
 //
 // VisualAge C++ V4.0 cannot have any external linkage const decs
@@ -67,7 +75,7 @@ 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
     #define   wxClose      _close
@@ -81,23 +89,23 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
 
     #if wxUSE_UNICODE
         #if wxUSE_UNICODE_MSLU
-            WXDLLEXPORT int wxOpen(const wxChar *name, int flags, int mode);
+            #define   wxOpen       wxMSLU__wopen
+            #define   wxAccess     wxMSLU__waccess
+            #define   wxMkDir      wxMSLU__wmkdir
+            #define   wxRmDir      wxMSLU__wrmdir
+            #define   wxStat       wxMSLU__wstat
         #else
             #define   wxOpen       _wopen
+            #define   wxAccess     _waccess
+            #define   wxMkDir      _wmkdir
+            #define   wxRmDir      _wrmdir
+            #define   wxStat       _wstat
         #endif
-        #define   wxAccess     _waccess
-
-        #define   wxMkDir      _wmkdir
-        #define   wxRmDir      _wrmdir
-
-        #define   wxStat       _wstat
     #else // !wxUSE_UNICODE
         #define   wxOpen       _open
         #define   wxAccess     _access
-
         #define   wxMkDir      _mkdir
         #define   wxRmDir      _rmdir
-
         #define   wxStat       _stat
     #endif
 
@@ -119,13 +127,11 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
     #endif // O_RDONLY
 #else
     // functions
-    #define   wxOpen       open
     #define   wxClose      close
     #define   wxRead       read
     #define   wxWrite      write
     #define   wxLseek      lseek
     #define   wxFsync      commit
-    #define   wxAccess     access
     #define   wxEof        eof
 
     #define   wxMkDir      mkdir
@@ -133,10 +139,18 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
 
     #define   wxTell(fd)   lseek(fd, 0, SEEK_CUR)
 
-    #define   wxStat       stat
-
-    // types
     #define   wxStructStat struct stat
+    
+#if wxUSE_UNICODE
+#   define wxNEED_WX_UNISTD_H
+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 );
+#else
+    #define   wxOpen       open
+    #define   wxStat       stat
+    #define   wxAccess     access
+#endif
 
 #endif  // VC++
 
@@ -144,46 +158,25 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString;
 // 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
-
-#ifdef __WXMAC__
-WXDLLEXPORT wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) ;
-WXDLLEXPORT void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) ;
-#  ifndef __DARWIN__
-// Mac file names are POSIX (Unix style) under Darwin, so these are not needed
-WXDLLEXPORT wxString wxMacFSSpec2UnixFilename( const FSSpec *spec ) ;
-WXDLLEXPORT void wxUnixFilename2FSSpec( const char *path , FSSpec *spec ) ;
-WXDLLEXPORT wxString wxMac2UnixFilename( const char *s) ;
-WXDLLEXPORT wxString wxUnix2MacFilename( const char *s);
-#  endif
-#endif
 
 // Strip the extension, in situ
 WXDLLEXPORT void wxStripExtension(wxChar *buffer);
@@ -257,6 +250,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
 // ----------------------------------------------------------------------------
@@ -282,12 +288,15 @@ WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0);
 #define wxPATH_SEP_MAC        wxT(";")
 
 // platform independent versions
-#if defined(__UNIX__)
+#if defined(__UNIX__) && !defined(__CYGWIN__)
   #define wxFILE_SEP_PATH     wxFILE_SEP_PATH_UNIX
   #define wxPATH_SEP          wxPATH_SEP_UNIX
 #elif defined(__MAC__)
   #define wxFILE_SEP_PATH     wxFILE_SEP_PATH_MAC
   #define wxPATH_SEP          wxPATH_SEP_MAC
+#elif defined(__CYGWIN__) // Cygwin
+  #define wxFILE_SEP_PATH     wxFILE_SEP_PATH_DOS
+  #define wxPATH_SEP          wxPATH_SEP_UNIX
 #else   // Windows and OS/2
   #define wxFILE_SEP_PATH     wxFILE_SEP_PATH_DOS
   #define wxPATH_SEP          wxPATH_SEP_DOS
@@ -303,7 +312,14 @@ WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0);
 
 // is the char a path separator?
 inline bool wxIsPathSeparator(wxChar c)
-  { return c == wxFILE_SEP_PATH_DOS || c == wxFILE_SEP_PATH_UNIX; }
+{
+    // under DOS/Windows we should understand both Unix and DOS file separators
+#if defined(__UNIX__) || defined(__MAC__)
+    return c == wxFILE_SEP_PATH;
+#else
+    return c == wxFILE_SEP_PATH_DOS || c == wxFILE_SEP_PATH_UNIX;
+#endif
+}
 
 // does the string ends with path separator?
 WXDLLEXPORT bool wxEndsWithPathSeparator(const wxChar *pszFileName);