[Kernel] Add support for XFileEndOfFileInformation.
This commit is contained in:
@@ -30,6 +30,7 @@ class DiscImageFile : public File {
|
||||
size_t byte_offset, size_t* out_bytes_written) override {
|
||||
return X_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
X_STATUS SetLength(size_t length) override { return X_STATUS_ACCESS_DENIED; }
|
||||
|
||||
private:
|
||||
DiscImageEntry* entry_;
|
||||
|
||||
@@ -52,5 +52,17 @@ X_STATUS HostPathFile::WriteSync(const void* buffer, size_t buffer_length,
|
||||
}
|
||||
}
|
||||
|
||||
X_STATUS HostPathFile::SetLength(size_t length) {
|
||||
if (!(file_access_ & FileAccess::kFileWriteData)) {
|
||||
return X_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
if (file_handle_->SetLength(length)) {
|
||||
return X_STATUS_SUCCESS;
|
||||
} else {
|
||||
return X_STATUS_END_OF_FILE;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace vfs
|
||||
} // namespace xe
|
||||
|
||||
@@ -32,6 +32,7 @@ class HostPathFile : public File {
|
||||
size_t* out_bytes_read) override;
|
||||
X_STATUS WriteSync(const void* buffer, size_t buffer_length,
|
||||
size_t byte_offset, size_t* out_bytes_written) override;
|
||||
X_STATUS SetLength(size_t length) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<xe::filesystem::FileHandle> file_handle_;
|
||||
|
||||
@@ -32,6 +32,7 @@ class StfsContainerFile : public File {
|
||||
size_t byte_offset, size_t* out_bytes_written) override {
|
||||
return X_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
X_STATUS SetLength(size_t length) override { return X_STATUS_ACCESS_DENIED; }
|
||||
|
||||
private:
|
||||
StfsContainerEntry* entry_;
|
||||
|
||||
@@ -44,6 +44,8 @@ class File {
|
||||
return X_STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
virtual X_STATUS SetLength(size_t length) { return X_STATUS_NOT_IMPLEMENTED; }
|
||||
|
||||
// xe::filesystem::FileAccess
|
||||
uint32_t file_access() const { return file_access_; }
|
||||
const Entry* entry() const { return entry_; }
|
||||
|
||||
Reference in New Issue
Block a user