18class SectorAccessibleDisk;
36 using FatCluster = std::variant<Free, EndOfChain, Cluster>;
48 void chdir(std::string_view newRootDir);
49 void mkdir(std::string_view newRootDir);
51 std::string
addFile(
const std::string& filename);
52 std::string
addDir(std::string_view rootDirName);
53 std::string
getItemFromDir(std::string_view rootDirName, std::string_view itemName);
54 void getDir(std::string_view rootDirName);
62 void writeLogicalSector(
unsigned sector,
const SectorBuffer& buf);
63 void readLogicalSector (
unsigned sector,
SectorBuffer& buf);
65 [[nodiscard]]
unsigned clusterToSector(
FAT::Cluster cluster)
const;
66 [[nodiscard]]
FAT::Cluster sectorToCluster(
unsigned sector)
const;
71 unsigned findUsableIndexInSector(
unsigned sector);
72 unsigned getNextSector(
unsigned sector);
73 unsigned appendClusterToSubdir(
unsigned sector);
74 DirEntry addEntryToDir(
unsigned sector);
76 uint16_t
t, uint16_t d,
unsigned sector);
77 void alterFileInDSK(
MSXDirEntry& msxDirEntry,
const std::string& hostName);
80 DirEntry findEntryInDir(
const FAT::FileName& msxName,
unsigned sector,
82 std::string addFileToDSK(
const std::string& fullHostName,
unsigned sector);
83 std::string recurseDirFill(std::string_view dirName,
unsigned sector);
84 void fileExtract(
const std::string& resultFile,
const MSXDirEntry& dirEntry);
85 void recurseDirExtract(std::string_view dirName,
unsigned sector);
86 std::string singleItemExtract(std::string_view dirName, std::string_view itemName,
88 void chroot(std::string_view newRootDir,
bool createDir);
94 [[nodiscard]]
FAT::FileName hostToMSXFileName(std::string_view hostName)
const;
95 [[nodiscard]] std::string msxToHostFileName(
const FAT::FileName& msxName)
const;
102 unsigned clusterCount;
104 unsigned sectorsPerCluster;
105 unsigned sectorsPerFat;
107 unsigned rootDirStart;
109 unsigned chrootSector;
std::string getItemFromDir(std::string_view rootDirName, std::string_view itemName)
void getDir(std::string_view rootDirName)
std::string addFile(const std::string &filename)
void chdir(std::string_view newRootDir)
void mkdir(std::string_view newRootDir)
MSXtar(SectorAccessibleDisk &disk, const MsxChar2Unicode &msxChars_)
std::string addDir(std::string_view rootDirName)
This class manages the lifetime of a block of memory.
Like std::string_view, but with the extra guarantee that it refers to a zero-terminated string.
std::variant< Free, Cluster > DirCluster
std::variant< Free, EndOfChain, Cluster > FatCluster
decltype(MSXDirEntry::filename) FileName
This file implemented 3 utility functions:
auto operator<=>(const Cluster &) const =default
auto operator<=>(const EndOfChain &) const =default
auto operator<=>(const Free &) const =default
std::array< char, 8+3 > filename