diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2024-04-25 08:00:21 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2024-04-25 08:00:21 +0200 |
commit | 5b9e70290b3d25042fdca119ca5a058d8b37f458 (patch) | |
tree | 1525a15dcedcb5c21533d91a0dbef103bfb0597b /libbuild2 | |
parent | b05a3e9e671cf36640522f8d272647001dda5762 (diff) |
Skip hidden filesystem entries when looking for subprojects
Diffstat (limited to 'libbuild2')
-rw-r--r-- | libbuild2/dist/operation.cxx | 2 | ||||
-rw-r--r-- | libbuild2/file.cxx | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/libbuild2/dist/operation.cxx b/libbuild2/dist/operation.cxx index cd88eac..cfc90cf 100644 --- a/libbuild2/dist/operation.cxx +++ b/libbuild2/dist/operation.cxx @@ -156,7 +156,7 @@ namespace build2 { const path& n (e.path ()); - if (n.string ()[0] != '.') + if (!n.empty () && n.string ().front () != '.') try { if (e.type () == entry_type::directory) // Can throw. diff --git a/libbuild2/file.cxx b/libbuild2/file.cxx index c0957ad..18147a2 100644 --- a/libbuild2/file.cxx +++ b/libbuild2/file.cxx @@ -859,6 +859,13 @@ namespace build2 for (const dir_entry& de: dir_iterator (d, dir_iterator::detect_dangling)) { + const path& n (de.path ()); + + // Skip hidden entries. + // + if (n.empty () || n.string ().front () == '.') + continue; + if (de.type () != entry_type::directory) { if (de.type () == entry_type::unknown) @@ -867,13 +874,13 @@ namespace build2 warn << "skipping " << (sl ? "dangling symlink" : "inaccessible entry") << ' ' - << d / de.path (); + << d / n; } continue; } - dir_path sd (d / path_cast<dir_path> (de.path ())); + dir_path sd (d / path_cast<dir_path> (n)); bool src (false); optional<bool> altn; |