From 8f35406000d0d6d9f949b2d6d04050d894e58a4c Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Fri, 22 Aug 2014 17:03:01 -0400 Subject: [PATCH] use lstat to confirm file existance instead of eaccess. closes #25 --- src/fs.cpp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/fs.cpp b/src/fs.cpp index 0e094b53..eb5bc038 100644 --- a/src/fs.cpp +++ b/src/fs.cpp @@ -142,9 +142,10 @@ namespace fs { int rv; string path; + struct stat st; path = fs::make_path(*iter,fusepath); - rv = ::eaccess(path.c_str(),F_OK); + rv = ::lstat(path.c_str(),&st); if(rv == 0) return true; } @@ -507,11 +508,12 @@ namespace fs iter != eiter; ++iter) { - int rv; - string path; + int rv; + string path; + struct stat st; path = fs::make_path(*iter,fusepath); - rv = ::eaccess(path.c_str(),F_OK); + rv = ::lstat(path.c_str(),&st); if(rv == 0) { paths.push_back(Path(*iter,path)); @@ -536,14 +538,11 @@ namespace fs { int rv; string path; + struct stat st; path = fs::make_path(*iter,fusepath); - - rv = ((::eaccess(path.c_str(),R_OK) == 0) || - (::eaccess(path.c_str(),X_OK) == 0) || - (::eaccess(path.c_str(),W_OK) == 0)); - - if(rv) + rv = ::lstat(path.c_str(),&st); + if(rv == 0) { paths.push_back(Path(*iter,path)); return; @@ -576,8 +575,8 @@ namespace fs iter != eiter; ++iter) { - int rv; - struct stat st; + int rv; + struct stat st; const string path = fs::make_path(*iter,fusepath); rv = ::lstat(path.c_str(),&st); @@ -605,11 +604,12 @@ namespace fs iter != eiter; ++iter) { - int rv; - string path; + int rv; + string path; + struct stat st; path = fs::make_path(*iter,fusepath); - rv = ::eaccess(path.c_str(),F_OK); + rv = ::lstat(path.c_str(),&st); if(rv == 0) paths.push_back(Path(*iter,path)); } @@ -679,6 +679,7 @@ namespace fs if(rv == 0) { fsblkcnt_t spaceavail; + struct stat st; spaceavail = (fsstats.f_frsize * fsstats.f_bavail); if(spaceavail > generalmfs) @@ -688,7 +689,7 @@ namespace fs } path = fs::make_path(mountpoint,fusepath); - rv = ::eaccess(path.c_str(),F_OK); + rv = ::lstat(path.c_str(),&st); if(rv == 0) { if(spaceavail > existingmfs)