|
- #pragma once
-
- #include "directory.h"
- #include "../misc.h"
- #include "../file.h"
-
- namespace cppfs
- {
-
- /* directory */
-
- const file_permissions& directory::default_permissions()
- {
- static const file_permissions value({
- file_permission::user_read,
- file_permission::user_write,
- file_permission::user_execute,
-
- file_permission::group_read,
- file_permission::group_write,
- file_permission::group_execute,
-
- file_permission::others_read,
- file_permission::others_execute,
- });
-
- return value;
- }
-
- template<typename... T_args>
- directory::directory(T_args&&... p_args)
- : _path(std::forward<T_args>(p_args)...)
- { }
-
- const cppfs::path& directory::path() const
- { return _path; }
-
- bool directory::exists() const
- { return _path.is_directory(); }
-
- inline const directory& directory::remove(
- bool p_recursive) const
- {
- if (p_recursive)
- {
- for (auto& e : *this)
- {
- auto p = path().join(e.name);
- switch (e.type)
- {
- case file_type::directory:
- directory(p).remove(true);
- break;
-
- case file_type::file:
- case file_type::symbolic_link:
- case file_type::hard_link:
- case file_type::block_device:
- case file_type::char_device:
- case file_type::named_pipe:
- case file_type::socket:
- file(p).remove();
- break;
-
- case file_type::unknown:
- throw cppcore::exception("Unknown file type: " + p.str());
- }
- }
- }
-
- remove_dir();
- return *this;
- }
-
- directory::iterator directory::begin() const
- { return iterator(*this, false); }
-
- directory::iterator directory::end() const
- { return iterator(*this, true); }
-
- }
|