]> git.saurik.com Git - wxWidgets.git/commitdiff
Various fixes for wxFilename.
authorRobert Roebling <robert@roebling.de>
Sat, 30 Dec 2000 12:47:48 +0000 (12:47 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 30 Dec 2000 12:47:48 +0000 (12:47 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/filename.cpp

index 7fa61c0a556bcd949cd09acf2a920c78fe5d808f..28c761783c85934bfb201550639697eaba2ffe46 100644 (file)
@@ -75,12 +75,18 @@ void wxFileName::Assign( const wxString &path, bool dir_only, wxPathFormat forma
         seps = ":";
     }
     
-    wxStringTokenizer tn( path, seps );
+    wxStringTokenizer tn( path, seps, wxTOKEN_RET_EMPTY_ALL );
+    bool first = TRUE;
     while (tn.HasMoreTokens())
     {
         wxString token( tn.GetNextToken() );
-        if (!token.IsEmpty())
+        
+        // If the path starts with a slash, we need the first
+        // dir entry to be an empty for later reassembly.
+        
+        if (first || !token.IsEmpty())
             m_dirs.Add( token );
+        first = FALSE;
     }
     
     if (!dir_only)
@@ -344,6 +350,7 @@ void wxFileName::SetFullName( const wxString name, wxPathFormat format )
     format = GetFormat( format );
     
     m_name = name;
+    m_ext = wxEmptyString;
     
     if (m_name == wxT(".")) return;
     if (m_name == wxT("..")) return;
@@ -409,7 +416,6 @@ wxString wxFileName::GetPath( bool add_separator, wxPathFormat format ) const
     else
     if (format == wxPATH_UNIX)
     {
-        ret = '/'; // FIXME: must be absolute
         for (size_t i = 0; i < m_dirs.GetCount(); i++)
         {
             ret += m_dirs[i];
@@ -446,7 +452,6 @@ wxString wxFileName::GetFullPath( wxPathFormat format ) const
     else
     if (format == wxPATH_UNIX)
     {
-        ret = '/'; // FIXME: must be absolute
         for (size_t i = 0; i < m_dirs.GetCount(); i++)
         {
             ret += m_dirs[i];