diff --git a/src/ox/fs/filesystem.hpp b/src/ox/fs/filesystem.hpp index 3c0df7a10..47810a95d 100644 --- a/src/ox/fs/filesystem.hpp +++ b/src/ox/fs/filesystem.hpp @@ -35,6 +35,8 @@ struct DirectoryListing { String name; FileStat stat; + DirectoryListing() = default; + DirectoryListing(const char *name) { this->name = name; } @@ -155,18 +157,18 @@ int Directory::rmFile(const char *name) { template int Directory::copy(Directory *dirOut) { auto current = files(); - auto dirBuff = (uint8_t*) dirOut; - dirBuff += sizeof(Directory); + auto dirOutBuff = (uint8_t*) dirOut; + dirOutBuff += sizeof(Directory); dirOut->size = this->size; dirOut->children = this->children; if (current) { for (uint64_t i = 0; i < this->children; i++) { - auto entry = (DirectoryEntry*) dirBuff; + auto entry = (DirectoryEntry*) dirOutBuff; entry->inode = current->inode; entry->setName(current->getName()); current = (DirectoryEntry*) (((uint8_t*) current) + current->size()); - dirBuff += entry->size(); + dirOutBuff += entry->size(); } return 0; } else { @@ -181,7 +183,7 @@ int Directory::ls(List *list) { if (current) { for (uint64_t i = 0; i < this->children; i++) { list->push_back(current->getName()); - list->at(i).stat.inode = current->inode; + (*list)[i].stat.inode = current->inode; current = (DirectoryEntry*) (((uint8_t*) current) + current->size()); } return 0; @@ -242,7 +244,7 @@ int FileSystem::ls(const char *path, List *list) { uint8_t dirBuff[s.size * 4]; auto dir = (Directory*) dirBuff; auto err = readDirectory(path, dir); - dir->ls(list); + err |= dir->ls(list); return err; } @@ -275,9 +277,6 @@ class FileSystemTemplate: public FileSystem { int stripDirectories() override; - template - int ls(const char *path, List *list); - int mkdir(const char *path) override; int read(const char *path, void *buffer, size_t buffSize) override; @@ -354,30 +353,6 @@ int FileSystemTemplate::stripDirectories() { return m_store->removeAllType(FileType::FileType_Directory); } -template -template -int FileSystemTemplate::ls(const char *path, List *list) { - int err = 0; - auto inode = findInodeOf(path); - auto dirStat = stat(inode); - auto dirBuffLen = dirStat.size; - uint8_t dirBuff[dirBuffLen]; - auto dir = (Directory*) dirBuff; - - err = read(dirStat.inode, dirBuff, dirBuffLen); - if (!err) { - dir->ls(list); - - for (auto &i : *list) { - i.stat = stat(i.stat.inode); - } - - return 0; - } else { - return 1; - } -} - template int FileSystemTemplate::mkdir(const char *path) { Directory dir; @@ -795,7 +770,7 @@ int FileSystemTemplate::readDirectory(const char *path, Dire auto dirStat = stat(inode); auto dirBuffLen = dirStat.size; uint8_t dirBuff[dirBuffLen]; - auto dir = (Directory*) dirBuff; + auto dir = (Directory*) dirBuff; err = read(dirStat.inode, dirBuff, dirBuffLen); if (!err) {