Fix error handling in filesystem::is_empty
* src/filesystem/ops.cc (is_empty): Fix error handling. * testsuite/experimental/filesystem/operations/is_empty.cc: New test. From-SVN: r241488
This commit is contained in:
parent
6daff2d946
commit
94caf86019
2 changed files with 12 additions and 5 deletions
|
@ -1,5 +1,8 @@
|
|||
2016-10-24 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* src/filesystem/ops.cc (is_empty): Fix error handling.
|
||||
* testsuite/experimental/filesystem/operations/is_empty.cc: New test.
|
||||
|
||||
PR libstdc++/71337
|
||||
* src/filesystem/ops.cc (temp_directory_path): Pass error_code
|
||||
argument to other filesystem operations.
|
||||
|
|
|
@ -1022,20 +1022,24 @@ fs::hard_link_count(const path& p, error_code& ec) noexcept
|
|||
bool
|
||||
fs::is_empty(const path& p)
|
||||
{
|
||||
return fs::is_directory(status(p))
|
||||
? fs::directory_iterator(p) == fs::directory_iterator()
|
||||
: fs::file_size(p) == 0;
|
||||
error_code ec;
|
||||
bool e = is_empty(p, ec);
|
||||
if (ec)
|
||||
_GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot check is file is empty",
|
||||
p, ec));
|
||||
return e;
|
||||
}
|
||||
|
||||
bool
|
||||
fs::is_empty(const path& p, error_code& ec) noexcept
|
||||
{
|
||||
auto s = status(p, ec);
|
||||
if (ec.value())
|
||||
if (ec)
|
||||
return false;
|
||||
return fs::is_directory(s)
|
||||
bool empty = fs::is_directory(s)
|
||||
? fs::directory_iterator(p, ec) == fs::directory_iterator()
|
||||
: fs::file_size(p, ec) == 0;
|
||||
return ec ? false : empty;
|
||||
}
|
||||
|
||||
fs::file_time_type
|
||||
|
|
Loading…
Add table
Reference in a new issue