msp policies stopped before root path

This commit is contained in:
Antonio SJ Musumeci 2020-12-17 19:55:49 -05:00
parent 8a335d8a6e
commit 44a98910ba
5 changed files with 24 additions and 31 deletions

View File

@ -40,32 +40,25 @@ namespace fs
string
dirname(const string &path_)
{
string rv;
string::reverse_iterator i;
string::reverse_iterator ei;
std::size_t i;
rv = path_;
i = path_.size() - 1;
while((i > 0) && (path_[i] == '/'))
i--;
i = rv.rbegin();
ei = rv.rend();
while(*i == '/' && i != ei)
i++;
while((i > 0) && (path_[i] != '/'))
i--;
while(*i != '/' && i != ei)
i++;
while((i > 0) && (path_[i] == '/'))
i--;
while(*i == '/' && i != ei)
i++;
rv.erase(i.base(),rv.end());
return rv;
return path_.substr(0,i+1);
}
string
basename(const string &path)
basename(const string &path_)
{
return path.substr(path.find_last_of('/')+1);
return path_.substr(path_.find_last_of('/')+1);
}
}
}

View File

@ -85,15 +85,15 @@ namespace msplfs
error = ENOENT;
fusepath = fusepath_;
do
for(;;)
{
basepath = msplfs::create_1(branches_,fusepath,&error);
if(basepath)
break;
if(fusepath == "/")
break;
fusepath = fs::path::dirname(fusepath);
}
while(!fusepath.empty());
if(basepath == NULL)
return (errno=error,-1);

View File

@ -85,15 +85,15 @@ namespace msplus
error = ENOENT;
fusepath = fusepath_;
do
for(;;)
{
basepath = msplus::create_1(branches_,fusepath,&error);
if(basepath)
break;
if(fusepath == "/")
break;
fusepath = fs::path::dirname(fusepath);
}
while(!fusepath.empty());
if(basepath == NULL)
return (errno=error,-1);

View File

@ -85,15 +85,15 @@ namespace mspmfs
error = ENOENT;
fusepath = fusepath_;
do
for(;;)
{
basepath = mspmfs::create_1(branches_,fusepath,&error);
if(basepath)
break;
if(fusepath == "/")
break;
fusepath = fs::path::dirname(fusepath);
}
while(!fusepath.empty());
if(basepath == NULL)
return (errno=error,-1);

View File

@ -108,15 +108,15 @@ namespace msppfrd
string fusepath;
fusepath = fusepath_;
do
for(;;)
{
error = msppfrd::create_1(branches_,fusepath,branchinfo_,sum_);
if(branchinfo_->size())
return error;
break;
if(fusepath == "/")
break;
fusepath = fs::path::dirname(fusepath);
}
while(!fusepath.empty());
return error;
}