]> git.saurik.com Git - wxWidgets.git/commitdiff
modifications to URL<->filename conversion: take wxFileName, rename
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 8 Dec 2002 20:28:12 +0000 (20:28 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 8 Dec 2002 20:28:12 +0000 (20:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18116 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/filesys.h
src/common/filesys.cpp
src/common/fs_zip.cpp

index b819282152100c16e615336fcb0d349f1fee994f..814a41a314c38e2f5c2475cd9d38a8b1ab022072 100644 (file)
@@ -29,6 +29,7 @@
 #include "wx/stream.h"
 #include "wx/url.h"
 #include "wx/datetime.h"
+#include "wx/filename.h"
 
 class wxFSFile;
 class wxFileSystemHandler;
@@ -181,10 +182,10 @@ public:
     static void CleanUpHandlers();
 
     // Returns the native path for a file URL
-    static wxString URLToNativePath( const wxString& url );
+    static wxFileName URLToFileName(const wxString& url);
 
     // Returns the file URL for a native path
-    static wxString NativePathToURL( const wxString& path );
+    static wxString FileNameToURL(const wxFileName& filename);
 
 
 protected:
index d335bf7e7a63549af9c4d7f7541498d61f31c641..5ed5a520d03fb2ba2a3d3310b5b60b2ddac5ca88 100644 (file)
@@ -173,8 +173,7 @@ wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString&
 {
     // location has Unix path separators
     wxString right = ms_root + GetRightLocation(location);
-    wxString nativePath = wxFileSystem::URLToNativePath(right);
-    wxFileName fn(nativePath, wxPATH_UNIX);
+    wxFileName fn = wxFileSystem::URLToFileName(right);
 
     if (!wxFileExists(fn.GetFullPath()))
         return (wxFSFile*) NULL;
@@ -190,7 +189,8 @@ wxFSFile* wxLocalFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString&
 wxString wxLocalFSHandler::FindFirst(const wxString& spec, int flags)
 {
     wxString right = ms_root + GetRightLocation(spec);
-    return wxFindFirstFile(right, flags);
+    return wxFindFirstFile(wxFileSystem::URLToFileName(right).GetFullPath(),
+                           flags);
 }
 
 wxString wxLocalFSHandler::FindNext()
@@ -422,13 +422,13 @@ const static wxString g_unixPathString(wxT("/"));
 const static wxString g_nativePathString(wxFILE_SEP_PATH);
 
 // Returns the native path for a file URL
-wxString wxFileSystem::URLToNativePath( const wxString& url ) 
+wxFileName wxFileSystem::URLToFileName(const wxString& url)
 {
-       wxString path = url ;
+       wxString path = url;
 
        if ( path.Find(wxT("file://")) == 0 )
        {
-               path = path.Mid(7) ;
+               path = path.Mid(7);
        }
 
 #ifndef __UNIX__
@@ -437,41 +437,43 @@ wxString wxFileSystem::URLToNativePath( const wxString& url )
     // which only exists on msw and corresponds to a unc
        if ( path[0u] == wxT('/') && path [1u] != wxT('/'))
        {
-               path = path.Mid(1) ;
+               path = path.Mid(1);
        }
        else if ( (url.Find(wxT("file://")) == 0) &&
               (path.Find(wxT('/')) != wxNOT_FOUND) &&
               (path.Length() > 1) && (path[1u] != wxT(':')) )
        {
-               path = wxT("//") + path ;
+               path = wxT("//") + path;
        }
 #endif
 
-       path.Replace(g_unixPathString, g_nativePathString) ;
+       path.Replace(g_unixPathString, g_nativePathString);
 
-       return path ;
+       return wxFileName(path, wxPATH_NATIVE);
 }
 
 // Returns the file URL for a native path
-wxString wxFileSystem::NativePathToURL( const wxString& path ) 
+wxString wxFileSystem::FileNameToURL(const wxFileName& filename)
 {
-       wxString url = path ;
+    wxFileName fn = filename;
+    fn.Normalize(wxPATH_NORM_DOTS | wxPATH_NORM_TILDE | wxPATH_NORM_ABSOLUTE);
+    wxString url = fn.GetFullPath(wxPATH_NATIVE);
 
 #ifdef __WXMSW__
-       // unc notation
-       if ( url.Find(wxT("\\\\")) == 0 ) 
-       {
-               url = url.Mid(2) ;
-       }
-       else
+    // unc notation
+    if ( url.Find(wxT("\\\\")) == 0 ) 
+    {
+        url = url.Mid(2);
+    }
+    else
+    {
+        url = wxT("/") + url;
+    }
 #endif
-       {
-               url = wxT("/") + url ;
-       }
 
-       url.Replace(g_nativePathString, g_unixPathString) ;
-       url = wxT("file://") + url ;
-       return url ;
+    url.Replace(g_nativePathString, g_unixPathString);
+    url = wxT("file://") + url;
+    return url;
 }
 
 
index 18d421b7bee9168c3182d0a78b23ccd004c00b5e..27ed0b6a559ee79d0c825132cc21c1f924eedae7 100644 (file)
@@ -89,9 +89,9 @@ wxFSFile* wxZipFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& l
 
     if (right.GetChar(0) == wxT('/')) right = right.Mid(1);
 
-    wxString leftFilename = wxFileSystem::URLToNativePath(left);
+    wxFileName leftFilename = wxFileSystem::URLToFileName(left);
 
-    s = new wxZipInputStream(leftFilename, right);
+    s = new wxZipInputStream(leftFilename.GetFullPath(), right);
     if (s && s->IsOk() )
     {
         return new wxFSFile(s,
@@ -137,7 +137,8 @@ wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags)
     }
 
     m_ZipFile = left;
-    m_Archive = (void*) unzOpen(m_ZipFile.mb_str());
+    wxString nativename = wxFileSystem::URLToFileName(m_ZipFile).GetFullPath();
+    m_Archive = (void*) unzOpen(nativename.mb_str());
     m_Pattern = right.AfterLast(wxT('/'));
     m_BaseDir = right.BeforeLast(wxT('/'));