mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Convert FileOutputBuffer::commit to Error.
llvm-svn: 317656
This commit is contained in:
parent
4dca5dcb48
commit
88fc6d16de
@ -57,7 +57,7 @@ public:
|
||||
/// is called, the file is deleted in the destructor. The optional parameter
|
||||
/// is used if it turns out you want the file size to be smaller than
|
||||
/// initially requested.
|
||||
virtual std::error_code commit() = 0;
|
||||
virtual Error commit() = 0;
|
||||
|
||||
/// If this object was previously committed, the destructor just deletes
|
||||
/// this object. If this object was not committed, the destructor
|
||||
|
@ -49,14 +49,14 @@ public:
|
||||
|
||||
size_t getBufferSize() const override { return Buffer->size(); }
|
||||
|
||||
std::error_code commit() override {
|
||||
Error commit() override {
|
||||
// Unmap buffer, letting OS flush dirty pages to file on disk.
|
||||
Buffer.reset();
|
||||
|
||||
// Atomically replace the existing file with the new one.
|
||||
auto EC = fs::rename(TempPath, FinalPath);
|
||||
sys::DontRemoveFileOnSignal(TempPath);
|
||||
return EC;
|
||||
return errorCodeToError(EC);
|
||||
}
|
||||
|
||||
~OnDiskBuffer() override {
|
||||
@ -96,14 +96,14 @@ public:
|
||||
|
||||
size_t getBufferSize() const override { return Buffer.size(); }
|
||||
|
||||
std::error_code commit() override {
|
||||
Error commit() override {
|
||||
int FD;
|
||||
std::error_code EC;
|
||||
if (auto EC = openFileForWrite(FinalPath, FD, fs::F_None, Mode))
|
||||
return EC;
|
||||
return errorCodeToError(EC);
|
||||
raw_fd_ostream OS(FD, /*shouldClose=*/true, /*unbuffered=*/true);
|
||||
OS << StringRef((const char *)Buffer.base(), Buffer.size());
|
||||
return std::error_code();
|
||||
return Error::success();
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -121,8 +121,8 @@ void WriteObjectFile(const Object<ELFT> &Obj, StringRef File) {
|
||||
else
|
||||
Buffer = std::move(*BufferOrErr);
|
||||
Obj.write(*Buffer);
|
||||
if (auto EC = Buffer->commit())
|
||||
reportError(File, EC);
|
||||
if (auto E = Buffer->commit())
|
||||
reportError(File, errorToErrorCode(std::move(E)));
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
|
@ -51,7 +51,7 @@ TEST(FileOutputBuffer, Test) {
|
||||
// Write to end of buffer to verify it is writable.
|
||||
memcpy(Buffer->getBufferEnd() - 20, "AABBCCDDEEFFGGHHIIJJ", 20);
|
||||
// Commit buffer.
|
||||
ASSERT_NO_ERROR(Buffer->commit());
|
||||
ASSERT_NO_ERROR(errorToErrorCode(Buffer->commit()));
|
||||
}
|
||||
|
||||
// Verify file is correct size.
|
||||
@ -89,7 +89,7 @@ TEST(FileOutputBuffer, Test) {
|
||||
memcpy(Buffer->getBufferStart(), "AABBCCDDEEFFGGHHIIJJ", 20);
|
||||
// Write to end of buffer to verify it is writable.
|
||||
memcpy(Buffer->getBufferEnd() - 20, "AABBCCDDEEFFGGHHIIJJ", 20);
|
||||
ASSERT_NO_ERROR(Buffer->commit());
|
||||
ASSERT_NO_ERROR(errorToErrorCode(Buffer->commit()));
|
||||
}
|
||||
|
||||
// Verify file is correct size.
|
||||
@ -109,7 +109,7 @@ TEST(FileOutputBuffer, Test) {
|
||||
// Start buffer with special header.
|
||||
memcpy(Buffer->getBufferStart(), "AABBCCDDEEFFGGHHIIJJ", 20);
|
||||
// Commit buffer.
|
||||
ASSERT_NO_ERROR(Buffer->commit());
|
||||
ASSERT_NO_ERROR(errorToErrorCode(Buffer->commit()));
|
||||
}
|
||||
// Verify file exists and is executable.
|
||||
fs::file_status Status;
|
||||
|
Loading…
Reference in New Issue
Block a user