aboutsummaryrefslogtreecommitdiff
path: root/butl/filesystem.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-09-10 11:21:42 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-09-10 11:21:42 +0200
commit43c591d58e3a2c77185f2f62348dc3f049764819 (patch)
tree62c27f14b2e9d29895fa496285364557ae17cdf1 /butl/filesystem.cxx
parentf3f46a1656207a1c681e7c53cc3bd2c9a28fa887 (diff)
Add support for not removing directory itself in rmdir_r()
Diffstat (limited to 'butl/filesystem.cxx')
-rw-r--r--butl/filesystem.cxx13
1 files changed, 8 insertions, 5 deletions
diff --git a/butl/filesystem.cxx b/butl/filesystem.cxx
index 90e8e81..f1341ee 100644
--- a/butl/filesystem.cxx
+++ b/butl/filesystem.cxx
@@ -99,7 +99,7 @@ namespace butl
}
void
- rmdir_r (const dir_path& p)
+ rmdir_r (const dir_path& p, bool dir)
{
// An nftw()-based implementation (for platforms that support it)
// might be a faster way.
@@ -114,11 +114,14 @@ namespace butl
try_rmfile (ep);
}
- rmdir_status r (try_rmdir (p));
+ if (dir)
+ {
+ rmdir_status r (try_rmdir (p));
- if (r != rmdir_status::success)
- throw system_error (r == rmdir_status::not_empty ? ENOTEMPTY : ENOENT,
- system_category ());
+ if (r != rmdir_status::success)
+ throw system_error (r == rmdir_status::not_empty ? ENOTEMPTY : ENOENT,
+ system_category ());
+ }
}
rmfile_status