[ox/fs] Make write methods take const buffer pointer
This commit is contained in:
parent
992d3a96d7
commit
9638dc52fe
@ -85,7 +85,7 @@ class FileStoreTemplate {
|
|||||||
|
|
||||||
Error decLinks(InodeId_t id);
|
Error decLinks(InodeId_t id);
|
||||||
|
|
||||||
Error write(InodeId_t id, void *data, FsSize_t dataLen, uint8_t fileType = 0);
|
Error write(InodeId_t id, const void *data, FsSize_t dataLen, uint8_t fileType = 0);
|
||||||
|
|
||||||
Error remove(InodeId_t id);
|
Error remove(InodeId_t id);
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ Error FileStoreTemplate<size_t>::decLinks(InodeId_t id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename size_t>
|
template<typename size_t>
|
||||||
Error FileStoreTemplate<size_t>::write(InodeId_t id, void *data, FsSize_t dataSize, uint8_t fileType) {
|
Error FileStoreTemplate<size_t>::write(InodeId_t id, const void *data, FsSize_t dataSize, uint8_t fileType) {
|
||||||
oxTrace("ox::fs::FileStoreTemplate::write") << "Attempting to write to inode" << id;
|
oxTrace("ox::fs::FileStoreTemplate::write") << "Attempting to write to inode" << id;
|
||||||
auto existing = find(id);
|
auto existing = find(id);
|
||||||
if (!canWrite(existing, dataSize)) {
|
if (!canWrite(existing, dataSize)) {
|
||||||
|
2
deps/ox/src/ox/fs/filesystem/filesystem.cpp
vendored
2
deps/ox/src/ox/fs/filesystem/filesystem.cpp
vendored
@ -72,7 +72,7 @@ Error FileSystem::remove(const FileAddress &addr, bool recursive) noexcept {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Error FileSystem::write(const FileAddress &addr, void *buffer, uint64_t size, FileType fileType) noexcept {
|
Error FileSystem::write(const FileAddress &addr, const void *buffer, uint64_t size, FileType fileType) noexcept {
|
||||||
switch (addr.type()) {
|
switch (addr.type()) {
|
||||||
case FileAddressType::Inode:
|
case FileAddressType::Inode:
|
||||||
return write(addr.getInode().value, buffer, size, fileType);
|
return write(addr.getInode().value, buffer, size, fileType);
|
||||||
|
14
deps/ox/src/ox/fs/filesystem/filesystem.hpp
vendored
14
deps/ox/src/ox/fs/filesystem/filesystem.hpp
vendored
@ -61,11 +61,11 @@ class FileSystem {
|
|||||||
|
|
||||||
virtual Error resize(uint64_t size, void *buffer) noexcept = 0;
|
virtual Error resize(uint64_t size, void *buffer) noexcept = 0;
|
||||||
|
|
||||||
virtual Error write(const char *path, void *buffer, uint64_t size, FileType fileType) noexcept = 0;
|
virtual Error write(const char *path, const void *buffer, uint64_t size, FileType fileType) noexcept = 0;
|
||||||
|
|
||||||
virtual Error write(uint64_t inode, void *buffer, uint64_t size, FileType fileType) noexcept = 0;
|
virtual Error write(uint64_t inode, const void *buffer, uint64_t size, FileType fileType) noexcept = 0;
|
||||||
|
|
||||||
Error write(const FileAddress &addr, void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept;
|
Error write(const FileAddress &addr, const void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept;
|
||||||
|
|
||||||
virtual Result<FileStat> stat(uint64_t inode) noexcept = 0;
|
virtual Result<FileStat> stat(uint64_t inode) noexcept = 0;
|
||||||
|
|
||||||
@ -147,9 +147,9 @@ class FileSystemTemplate: public FileSystem {
|
|||||||
|
|
||||||
Error resize(uint64_t size, void *buffer) noexcept override;
|
Error resize(uint64_t size, void *buffer) noexcept override;
|
||||||
|
|
||||||
Error write(const char *path, void *buffer, uint64_t size, FileType fileType) noexcept override;
|
Error write(const char *path, const void *buffer, uint64_t size, FileType fileType) noexcept override;
|
||||||
|
|
||||||
Error write(uint64_t inode, void *buffer, uint64_t size, FileType fileType) noexcept override;
|
Error write(uint64_t inode, const void *buffer, uint64_t size, FileType fileType) noexcept override;
|
||||||
|
|
||||||
Result<FileStat> stat(uint64_t inode) noexcept override;
|
Result<FileStat> stat(uint64_t inode) noexcept override;
|
||||||
|
|
||||||
@ -322,7 +322,7 @@ Error FileSystemTemplate<FileStore, Directory>::resize(uint64_t size, void *buff
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename FileStore, typename Directory>
|
template<typename FileStore, typename Directory>
|
||||||
Error FileSystemTemplate<FileStore, Directory>::write(const char *path, void *buffer, uint64_t size, FileType fileType) noexcept {
|
Error FileSystemTemplate<FileStore, Directory>::write(const char *path, const void *buffer, uint64_t size, FileType fileType) noexcept {
|
||||||
auto [inode, err] = find(path);
|
auto [inode, err] = find(path);
|
||||||
if (err) {
|
if (err) {
|
||||||
oxRequire(generatedId, m_fs.generateInodeId());
|
oxRequire(generatedId, m_fs.generateInodeId());
|
||||||
@ -335,7 +335,7 @@ Error FileSystemTemplate<FileStore, Directory>::write(const char *path, void *bu
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename FileStore, typename Directory>
|
template<typename FileStore, typename Directory>
|
||||||
Error FileSystemTemplate<FileStore, Directory>::write(uint64_t inode, void *buffer, uint64_t size, FileType fileType) noexcept {
|
Error FileSystemTemplate<FileStore, Directory>::write(uint64_t inode, const void *buffer, uint64_t size, FileType fileType) noexcept {
|
||||||
return m_fs.write(inode, buffer, size, static_cast<uint8_t>(fileType));
|
return m_fs.write(inode, buffer, size, static_cast<uint8_t>(fileType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,11 +119,11 @@ Error PassThroughFS::resize(uint64_t, void*) noexcept {
|
|||||||
return OxError(1, "resize is not supported by PassThroughFS");
|
return OxError(1, "resize is not supported by PassThroughFS");
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PassThroughFS::write(const char *path, void *buffer, uint64_t size, FileType) noexcept {
|
Error PassThroughFS::write(const char *path, const void *buffer, uint64_t size, FileType) noexcept {
|
||||||
const auto p = (m_path / stripSlash(path));
|
const auto p = (m_path / stripSlash(path));
|
||||||
try {
|
try {
|
||||||
std::ofstream f(p, std::ios::binary);
|
std::ofstream f(p, std::ios::binary);
|
||||||
f.write(static_cast<char*>(buffer), size);
|
f.write(static_cast<const char*>(buffer), size);
|
||||||
} catch (const std::fstream::failure &f) {
|
} catch (const std::fstream::failure &f) {
|
||||||
oxTracef("ox::fs::PassThroughFS::read::error", "Write of {} failed: {}", path, f.what());
|
oxTracef("ox::fs::PassThroughFS::read::error", "Write of {} failed: {}", path, f.what());
|
||||||
return OxError(1);
|
return OxError(1);
|
||||||
@ -131,7 +131,7 @@ Error PassThroughFS::write(const char *path, void *buffer, uint64_t size, FileTy
|
|||||||
return OxError(0);
|
return OxError(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Error PassThroughFS::write(uint64_t, void*, uint64_t, FileType) noexcept {
|
Error PassThroughFS::write(uint64_t, const void*, uint64_t, FileType) noexcept {
|
||||||
// unsupported
|
// unsupported
|
||||||
return OxError(1, "write(uint64_t, void*, uint64_t, uint8_t) is not supported by PassThroughFS");
|
return OxError(1, "write(uint64_t, void*, uint64_t, uint8_t) is not supported by PassThroughFS");
|
||||||
}
|
}
|
||||||
|
@ -60,9 +60,9 @@ class PassThroughFS: public FileSystem {
|
|||||||
|
|
||||||
Error resize(uint64_t size, void *buffer = nullptr) noexcept override;
|
Error resize(uint64_t size, void *buffer = nullptr) noexcept override;
|
||||||
|
|
||||||
Error write(const char *path, void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept override;
|
Error write(const char *path, const void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept override;
|
||||||
|
|
||||||
Error write(uint64_t inode, void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept override;
|
Error write(uint64_t inode, const void *buffer, uint64_t size, FileType fileType = FileType::NormalFile) noexcept override;
|
||||||
|
|
||||||
Result<FileStat> stat(uint64_t inode) noexcept override;
|
Result<FileStat> stat(uint64_t inode) noexcept override;
|
||||||
|
|
||||||
@ -78,6 +78,7 @@ class PassThroughFS: public FileSystem {
|
|||||||
|
|
||||||
Error walk(Error(*cb)(uint8_t, uint64_t, uint64_t)) noexcept override;
|
Error walk(Error(*cb)(uint8_t, uint64_t, uint64_t)) noexcept override;
|
||||||
|
|
||||||
|
[[nodiscard]]
|
||||||
bool valid() const noexcept override;
|
bool valid() const noexcept override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user