Merge pull request #30657 from hadrien-psydk/optimize_dir_access_unix_get_next

Optimize DirAccessUnix::get_next() for some file systems
This commit is contained in:
Rémi Verschelde 2019-07-17 21:14:26 +02:00 committed by GitHub
commit fa4cb80a1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 10 deletions

View File

@ -136,27 +136,31 @@ String DirAccessUnix::get_next() {
return "";
}
//typedef struct stat Stat;
struct stat flags;
String fname = fix_unicode_name(entry->d_name);
String f = current_dir.plus_file(fname);
if (entry->d_type == DT_UNKNOWN) {
//typedef struct stat Stat;
struct stat flags;
if (stat(f.utf8().get_data(), &flags) == 0) {
String f = current_dir.plus_file(fname);
if (S_ISDIR(flags.st_mode)) {
if (stat(f.utf8().get_data(), &flags) == 0) {
_cisdir = true;
if (S_ISDIR(flags.st_mode)) {
_cisdir = true;
} else {
_cisdir = false;
}
} else {
_cisdir = false;
}
} else {
_cisdir = false;
_cisdir = (entry->d_type == DT_DIR);
}
_cishidden = (fname != "." && fname != ".." && fname.begins_with("."));