]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filefn.cpp
OS/2 scrolling support
[wxWidgets.git] / src / common / filefn.cpp
index fca7a284a115c06518b721731a7d50349fab4d80..583c0711b330a6e8f5ace3aa7d4efa67f944a04f 100644 (file)
     //
     // note that it must be included after <windows.h>
     #ifdef __GNUWIN32__
-        #include <sys/cygwin.h>
+        #ifdef __CYGWIN__
+            #include <sys/cygwin.h>
+        #endif
         #include <wchar.h>
         #ifndef __TWIN32__
             #include <sys/unistd.h>
@@ -299,11 +301,11 @@ wxString wxPathList::FindAbsoluteValidPath (const wxString& file)
 bool
 wxFileExists (const wxString& filename)
 {
-#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
-    // GetFileAttributes can copy with network paths
-    DWORD ret = GetFileAttributes(filename);
-    DWORD isDir = (ret & FILE_ATTRIBUTE_DIRECTORY);
-    return ((ret != 0xffffffff) && (isDir == 0));
+#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+    // GetFileAttributes can copy with network paths unlike stat()
+    DWORD ret = ::GetFileAttributes(filename);
+
+    return (ret != (DWORD)-1) && !(ret & FILE_ATTRIBUTE_DIRECTORY);
 #else
     wxStructStat stbuf;
     if ( !filename.empty() && wxStat (OS_FILENAME(filename), &stbuf) == 0 )
@@ -321,7 +323,7 @@ wxIsAbsolutePath (const wxString& filename)
 #if defined(__WXMAC__) && !defined(__DARWIN__)
         // Classic or Carbon CodeWarrior like
         // Carbon with Apple DevTools is Unix like
-        
+
         // This seems wrong to me, but there is no fix. since
         // "MacOS:MyText.txt" is absolute whereas "MyDir:MyText.txt"
         // is not. Or maybe ":MyDir:MyText.txt" has to be used? RR.
@@ -687,7 +689,7 @@ wxChar *wxFileNameFromPath (wxChar *path)
     if (path)
     {
         register wxChar *tcp;
-        
+
         tcp = path + wxStrlen (path);
         while (--tcp >= path)
         {
@@ -721,7 +723,7 @@ wxString wxFileNameFromPath (const wxString& path1)
     {
         wxChar *path = WXSTRINGCAST path1 ;
         register wxChar *tcp;
-        
+
         tcp = path + wxStrlen (path);
         while (--tcp >= path)
         {
@@ -758,13 +760,13 @@ wxPathOnly (wxChar *path)
     if (path && *path)
     {
         static wxChar buf[_MAXPATHLEN];
-        
+
         // Local copy
         wxStrcpy (buf, path);
-        
+
         int l = wxStrlen(path);
         int i = l - 1;
-        
+
         // Search backward for a backward or forward slash
         while (i > -1)
         {
@@ -793,7 +795,7 @@ wxPathOnly (wxChar *path)
 #endif
             i --;
         }
-        
+
 #if defined(__WXMSW__) || defined(__WXPM__)
         // Try Drive specifier
         if (wxIsalpha (buf[0]) && buf[1] == wxT(':'))
@@ -814,10 +816,10 @@ wxString wxPathOnly (const wxString& path)
     if (path != wxT(""))
     {
         wxChar buf[_MAXPATHLEN];
-        
+
         // Local copy
         wxStrcpy (buf, WXSTRINGCAST path);
-        
+
         int l = path.Length();
         int i = l - 1;
 
@@ -849,7 +851,7 @@ wxString wxPathOnly (const wxString& path)
 #endif
             i --;
         }
-        
+
 #if defined(__WXMSW__) || defined(__WXPM__)
         // Try Drive specifier
         if (wxIsalpha (buf[0]) && buf[1] == wxT(':'))
@@ -879,7 +881,7 @@ wxString wxMacFSSpec2MacFilename( const FSSpec *spec )
     (void) FSpMakeFSRef( spec, &theRef );
     // get the POSIX path associated with the FSRef
     (void) FSRefMakePath( &theRef, (UInt8 *)thePath, sizeof(thePath) );
-    
+
     // create path string for return value
     wxString result( thePath ) ;
 #else
@@ -893,7 +895,7 @@ wxString wxMacFSSpec2MacFilename( const FSSpec *spec )
     (*myPath)[length] = 0 ;
     if ((length > 0) && ((*myPath)[length-1] == ':'))
         (*myPath)[length-1] = 0 ;
-    
+
     // create path string for return value
     wxString result( (char*) *myPath ) ;
 
@@ -936,7 +938,7 @@ wxString wxMac2UnixFilename (const char *str)
             *s = '.' ;
         else
             *s = '/' ;
-        
+
         while (*s)
         {
             if (*s == ':')
@@ -1260,6 +1262,7 @@ bool wxRmdir(const wxString& dir, int WXUNUSED(flags))
 bool wxPathExists(const wxChar *pszPathName)
 {
     wxString strPath(pszPathName);
+
 #ifdef __WINDOWS__
     // Windows fails to find directory named "c:\dir\" even if "c:\dir" exists,
     // so remove all trailing backslashes from the path - but don't do this for
@@ -1274,12 +1277,12 @@ bool wxPathExists(const wxChar *pszPathName)
     }
 #endif // __WINDOWS__
 
-#if defined(__WINDOWS__) && !defined(__WXMICROWIN__)
-    // Stat can't cope with network paths
-    DWORD ret = GetFileAttributes(strPath.c_str());
-    DWORD isDir = (ret & FILE_ATTRIBUTE_DIRECTORY);
-    return ((ret != 0xffffffff) && (isDir != 0));
-#else
+#if defined(__WIN32__) && !defined(__WXMICROWIN__)
+    // stat() can't cope with network paths
+    DWORD ret = ::GetFileAttributes(strPath);
+
+    return (ret != (DWORD)-1) && (ret & FILE_ATTRIBUTE_DIRECTORY);
+#else // !__WIN32__
 
     wxStructStat st;
 #ifndef __VISAGECPP__
@@ -1291,7 +1294,7 @@ bool wxPathExists(const wxChar *pszPathName)
         (st.st_mode == S_IFDIR);
 #endif
 
-#endif
+#endif // __WIN32__/!__WIN32__
 }
 
 // Get a temporary filename, opening and closing the file.
@@ -1332,13 +1335,13 @@ wxString wxFindFirstFile(const wxChar *spec, int flags)
     if (gs_dir)
         delete gs_dir;
     gs_dir = new wxDir(gs_dirPath);
-    
+
     if ( !gs_dir->IsOpened() )
     {
         wxLogSysError(_("Can not enumerate files '%s'"), spec);
         return wxEmptyString;
     }
-    
+
     int dirFlags = 0;
     switch (flags)
     {
@@ -1346,7 +1349,7 @@ wxString wxFindFirstFile(const wxChar *spec, int flags)
         case wxFILE: dirFlags = wxDIR_FILES; break;
         default:     dirFlags = wxDIR_DIRS | wxDIR_FILES; break;
     }
-    
+
     wxString result;
     gs_dir->GetFirst(&result, wxFileNameFromPath(spec), dirFlags);
     if ( result.IsEmpty() )
@@ -1364,13 +1367,13 @@ wxString wxFindNextFile()
 
     wxString result;
     gs_dir->GetNext(&result);
-    
+
     if ( result.IsEmpty() )
     {
         wxDELETE(gs_dir);
         return result;
     }
-    
+
     return gs_dirPath + result;
 }
 
@@ -1460,11 +1463,11 @@ wxChar *wxGetWorkingDirectory(wxChar *buf, int sz)
         }
 #endif // __DJGPP__
 
-#ifdef __GNUWIN32__
+#ifdef __CYGWIN__
         // another example of DOS/Unix mix (Cygwin)
         wxString pathUnix = buf;
         cygwin_conv_to_full_win32_path(pathUnix, buf);
-#endif // __GNUWIN32__
+#endif // __CYGWIN__
 
         // finally convert the result to Unicode if needed
 #if wxUSE_UNICODE && !defined(HAVE_WGETCWD)