|
@ -98,7 +98,27 @@ namespace l |
|
|
FollowSymlinks const followsymlinks_) |
|
|
FollowSymlinks const followsymlinks_) |
|
|
struct stat *st_) |
|
|
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 |
|
|
static |
|
|