aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbuild2/dist/operation.cxx2
-rw-r--r--libbuild2/file.cxx11
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;