mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-22 07:35:08 +00:00
Catch filesystem_error
This commit is contained in:
parent
0e3e567207
commit
43d1ec144c
@ -13,21 +13,25 @@ static void GetFilesInFolderHelper(
|
||||
std::queue<std::pair<fs::path, fs::path>> q;
|
||||
q.emplace(fs::path(folder), fs::path(output_prefix));
|
||||
while (!q.empty()) {
|
||||
for (auto it = fs::directory_iterator(q.front().first); it != fs::directory_iterator(); ++it) {
|
||||
auto path = it->path();
|
||||
std::string filename = path.filename();
|
||||
if (filename[0] != '.' || filename == ".ccls") {
|
||||
fs::file_status status = it->symlink_status();
|
||||
if (fs::is_regular_file(status))
|
||||
handler(q.front().second / filename);
|
||||
else if (fs::is_directory(status) || fs::is_symlink(status)) {
|
||||
if (recursive) {
|
||||
std::string child_dir = q.front().second / filename;
|
||||
if (fs::is_directory(status))
|
||||
q.push(make_pair(path, child_dir));
|
||||
try {
|
||||
for (auto it = fs::directory_iterator(q.front().first);
|
||||
it != fs::directory_iterator(); ++it) {
|
||||
auto path = it->path();
|
||||
std::string filename = path.filename();
|
||||
if (filename[0] != '.' || filename == ".ccls") {
|
||||
fs::file_status status = it->symlink_status();
|
||||
if (fs::is_regular_file(status))
|
||||
handler(q.front().second / filename);
|
||||
else if (fs::is_directory(status) || fs::is_symlink(status)) {
|
||||
if (recursive) {
|
||||
std::string child_dir = q.front().second / filename;
|
||||
if (fs::is_directory(status))
|
||||
q.push(make_pair(path, child_dir));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (fs::filesystem_error&) {
|
||||
}
|
||||
q.pop();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user