5#if ROO_IO_FS_SUPPORT_POSIX
9PosixDirectoryImpl::PosixDirectoryImpl(std::shared_ptr<MountImpl> mount,
10 const char* path,
DIR*
dir,
12 : mount_(
std::
move(mount)), path_(path), dir_(
dir), status_(status) {}
14bool PosixDirectoryImpl::close() {
16 if (dir_ ==
nullptr)
return true;
17 int result = ::closedir(dir_);
18 if (status_ == kOk || status_ == kEndOfStream) {
24void PosixDirectoryImpl::rewind() {
25 if (status_ != kOk && status_ != kEndOfStream)
return;
31bool PosixDirectoryImpl::read(Directory::Entry& entry) {
32 if (status_ != kOk)
return false;
33 next_ = ::readdir(dir_);
34 if (next_ ==
nullptr) {
39 if (file_.empty() || file_.back() !=
'/') {
42 size_t path_offset = file_.size();
43 file_.append(next_->d_name);
44 setEntry(entry, file_.c_str(), path_offset, next_->d_type == DT_DIR);
roo::basic_string_view< CharT, Traits > basic_string_view