[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 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);
|
||||
|
||||
@ -243,7 +243,7 @@ Error FileStoreTemplate<size_t>::decLinks(InodeId_t id) {
|
||||
}
|
||||
|
||||
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;
|
||||
auto existing = find(id);
|
||||
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()) {
|
||||
case FileAddressType::Inode:
|
||||
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 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;
|
||||
|
||||
@ -147,9 +147,9 @@ class FileSystemTemplate: public FileSystem {
|
||||
|
||||
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;
|
||||
|
||||
@ -322,7 +322,7 @@ Error FileSystemTemplate<FileStore, Directory>::resize(uint64_t size, void *buff
|
||||
}
|
||||
|
||||
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);
|
||||
if (err) {
|
||||
oxRequire(generatedId, m_fs.generateInodeId());
|
||||
@ -335,7 +335,7 @@ Error FileSystemTemplate<FileStore, Directory>::write(const char *path, void *bu
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -119,11 +119,11 @@ Error PassThroughFS::resize(uint64_t, void*) noexcept {
|
||||
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));
|
||||
try {
|
||||
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) {
|
||||
oxTracef("ox::fs::PassThroughFS::read::error", "Write of {} failed: {}", path, f.what());
|
||||
return OxError(1);
|
||||
@ -131,7 +131,7 @@ Error PassThroughFS::write(const char *path, void *buffer, uint64_t size, FileTy
|
||||
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
|
||||
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 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;
|
||||
|
||||
@ -78,6 +78,7 @@ class PassThroughFS: public FileSystem {
|
||||
|
||||
Error walk(Error(*cb)(uint8_t, uint64_t, uint64_t)) noexcept override;
|
||||
|
||||
[[nodiscard]]
|
||||
bool valid() const noexcept override;
|
||||
|
||||
private:
|
||||
|
Loading…
Reference in New Issue
Block a user