return clonepath errors

currently the error is ignored and it was expected the primary call would
fail. problem is it returns confusing errors as a result. (eg ENOENT vs EPERM)
This commit is contained in:
Antonio SJ Musumeci
2016-12-06 16:48:52 -05:00
parent 05d81dbc23
commit 35075bb0cd
6 changed files with 53 additions and 34 deletions
+7 -5
View File
@@ -43,22 +43,24 @@ _create_core(const string &existingpath,
const int flags,
uint64_t &fh)
{
int fd;
int rv;
string fullpath;
if(createpath != existingpath)
{
const ugid::SetRootGuard ugidGuard;
fs::clonepath(existingpath,createpath,fusedirpath);
rv = fs::clonepath(existingpath,createpath,fusedirpath);
if(rv == -1)
return -errno;
}
fs::path::make(&createpath,fusepath,fullpath);
fd = fs::open(fullpath,flags,mode);
if(fd == -1)
rv = fs::open(fullpath,flags,mode);
if(rv == -1)
return -errno;
fh = reinterpret_cast<uint64_t>(new FileInfo(fd));
fh = reinterpret_cast<uint64_t>(new FileInfo(rv));
return 0;
}