summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/ArchiveWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2017-11-14 01:21:15 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2017-11-14 01:21:15 +0000
commitc02eacf4c4e1c7ab2a855fd79ee4184c4d77084e (patch)
treedbbcd1253100a60afed2f787272a5372a88508b7 /llvm/lib/Object/ArchiveWriter.cpp
parent0a5ebdbf6f6846e0c82d30f6f075dd8fa454b478 (diff)
downloadbcm5719-llvm-c02eacf4c4e1c7ab2a855fd79ee4184c4d77084e.tar.gz
bcm5719-llvm-c02eacf4c4e1c7ab2a855fd79ee4184c4d77084e.zip
Use TempFile in llvm-ar. NFC.
llvm-svn: 318127
Diffstat (limited to 'llvm/lib/Object/ArchiveWriter.cpp')
-rw-r--r--llvm/lib/Object/ArchiveWriter.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/llvm/lib/Object/ArchiveWriter.cpp b/llvm/lib/Object/ArchiveWriter.cpp
index 63f5082c29d..8448b617b78 100644
--- a/llvm/lib/Object/ArchiveWriter.cpp
+++ b/llvm/lib/Object/ArchiveWriter.cpp
@@ -488,14 +488,12 @@ Error llvm::writeArchive(StringRef ArcName,
Kind = object::Archive::K_GNU64;
}
- SmallString<128> TmpArchive;
- int TmpArchiveFD;
- if (auto EC = sys::fs::createUniqueFile(ArcName + ".temp-archive-%%%%%%%.a",
- TmpArchiveFD, TmpArchive))
- return errorCodeToError(EC);
+ Expected<sys::fs::TempFile> Temp =
+ sys::fs::TempFile::create(ArcName + ".temp-archive-%%%%%%%.a");
+ if (!Temp)
+ return Temp.takeError();
- ToolOutputFile Output(TmpArchive, TmpArchiveFD);
- raw_fd_ostream &Out = Output.os();
+ raw_fd_ostream Out(Temp->FD, false);
if (Thin)
Out << "!<thin>\n";
else
@@ -507,8 +505,7 @@ Error llvm::writeArchive(StringRef ArcName,
for (const MemberData &M : Data)
Out << M.Header << M.Data << M.Padding;
- Output.keep();
- Out.close();
+ Out.flush();
// At this point, we no longer need whatever backing memory
// was used to generate the NewMembers. On Windows, this buffer
@@ -522,6 +519,5 @@ Error llvm::writeArchive(StringRef ArcName,
// closed before we attempt to rename.
OldArchiveBuf.reset();
- sys::fs::rename(TmpArchive, ArcName);
- return Error::success();
+ return Temp->keep(ArcName);
}
OpenPOWER on IntegriCloud