20#ifndef FAT_DIRECTORY_H
21#define FAT_DIRECTORY_H
23#include "pedigree/kernel/process/Mutex.h"
24#include "pedigree/kernel/processor/types.h"
25#include "pedigree/kernel/utilities/String.h"
28#include "modules/system/vfs/Directory.h"
44 FatFileInfo& info, uint32_t dirClus = 0, uint32_t dirOffset = 0);
61 bool sync(
size_t,
bool)
override {
64 Attributes getAttributes()
const override;
67 void setInode(uintptr_t inode)
override;
69 uint32_t getDirCluster() {
72 void setDirCluster(uint32_t custom) {
75 uint32_t getDirOffset() {
78 void setDirOffset(uint32_t custom) {
82 static const String& symlinkSuffix() {
94 uint32_t directoryCluster;
95 uint32_t directoryOffset;
96 Directory::EntryType type;
99 using ScanEmitter = bool (*)(
void*,
const ScannedEntry&, uint64_t, uint64_t);
103 ReadStatus
readDirectory(uint64_t& cookie, DirectoryEntryEmitter emitter,
void* context)
override;
105 ReadStatus scanDirectory(uint64_t& cookie, ScanEmitter emitter,
void* context);
109 uint32_t m_DirOffset;
113 uintptr_t m_BlockSize;
LookupStatus resolveChildAt(uint64_t cookie, const StringView &name, File *&child) override
FatDirectory(const FatDirectory &file)
virtual bool removeEntry(const String &filename, File *pFile)
ReadStatus readDirectory(uint64_t &cookie, DirectoryEntryEmitter emitter, void *context) override
virtual bool addEntry(String filename, File *pFile, size_t type, bool publish=true)
void setInode(uintptr_t inode) override
void fileAttributeChanged() override
bool sync(size_t, bool) override
void cacheDirectoryContents() override
LookupStatus resolveChild(const StringView &name, File *&child) override
A vector / dynamic array.