1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Convert FileOutputBuffer::commit to Error.

llvm-svn: 317656
This commit is contained in:
Rafael Espindola 2017-11-08 01:50:29 +00:00
parent 4dca5dcb48
commit 88fc6d16de
4 changed files with 11 additions and 11 deletions

View File

@ -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

View File

@ -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:

View File

@ -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>

View File

@ -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;