diff --git a/src/fuse_getattr.cpp b/src/fuse_getattr.cpp index 9574f67e..3ef3468a 100644 --- a/src/fuse_getattr.cpp +++ b/src/fuse_getattr.cpp @@ -98,7 +98,27 @@ namespace l FollowSymlinks const followsymlinks_) struct stat *st_) { - + switch(followsymlinks_) + { + case FollowSymlinks::ENUM::NEVER: + rv = fs::lstat(fullpath,st_); + break; + case FollowSymlinks::ENUM::DIRECTORY: + rv = fs::lstat(fullpath,st_); + if(S_ISLNK(st_->st_mode)) + l::set_stat_if_leads_to_dir(fullpath,st_); + break; + case FollowSymlinks::ENUM::REGULAR: + rv = fs::lstat(fullpath,st_); + if(S_ISLNK(st_->st_mode)) + l::set_stat_if_leads_to_reg(fullpath,st_); + break; + case FollowSymlinks::ENUM::ALL: + rv = fs::stat(fullpath,st_); + if(rv != 0) + rv = fs::lstat(fullpath,st_); + break; + } } static