]> git.tdb.fi Git - libs/core.git/commitdiff
Refactor Path::init
authorMikko Rasa <tdb@tdb.fi>
Fri, 6 Jul 2012 20:46:28 +0000 (23:46 +0300)
committerMikko Rasa <tdb@tdb.fi>
Fri, 6 Jul 2012 20:46:28 +0000 (23:46 +0300)
source/fs/path.cpp

index 93805277749d96ed35cccaa86ecd130774f9174e..241b2f8aeb938493f006d735f36a9f8f4c41e6ec 100644 (file)
@@ -32,14 +32,14 @@ Path::Path(const char *p)
 
 void Path::init(const string &p)
 {
+       if(p.empty())
+               return;
        string::size_type start = 0;
-       if(p[0]=='/' || p[0]=='\\')
-               add_component(string(1, DIRSEP));
-       while(1)
+       while(start<p.size())
        {
                string::size_type slash = p.find_first_of("/\\", start);
-               if(slash>start)
-                       add_component(p.substr(start, slash-start));
+               if(slash>start || start==0)
+                       add_component(p.substr(start, max(slash-start, 1U)));
                if(slash==string::npos)
                        break;
                start = slash+1;
@@ -100,9 +100,7 @@ Path &Path::operator/=(const Path &p)
 
 void Path::add_component(const string &comp)
 {
-       if(comp.empty())
-               ;
-       else if(comp.size()==1 && comp[0]==DIRSEP)
+       if(comp.size()==1 && comp[0]==DIRSEP)
        {
                // Replace the path with the root directory
 #ifdef WIN32