List FAT::ls(const Dirent& ent) const { auto ents = std::make_shared<dirvector> (); // verify ent is a directory if (!ent.is_valid() || !ent.is_dir()) return { { error_t::E_NOTDIR, ent.name() }, ents }; // convert cluster to sector auto S = this->cl_to_sector(ent.block()); // read result directory entries into ents auto err = int_ls(S, *ents); return { err, ents }; }
void FAT::ls(const Dirent& ent, on_ls_func on_ls) const { auto dirents = std::make_shared<dirvector> (); // verify ent is a directory if (!ent.is_valid() || !ent.is_dir()) { on_ls( { error_t::E_NOTDIR, ent.name() }, dirents ); return; } // convert cluster to sector uint32_t S = this->cl_to_sector(ent.block()); // read result directory entries into ents int_ls(S, dirents, on_ls); }