Skip to content

Commit c02eacf

Browse files
committed
Use TempFile in llvm-ar. NFC.
llvm-svn: 318127
1 parent 0a5ebdb commit c02eacf

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

llvm/lib/Object/ArchiveWriter.cpp

+7-11
Original file line numberDiff line numberDiff line change
@@ -488,14 +488,12 @@ Error llvm::writeArchive(StringRef ArcName,
488488
Kind = object::Archive::K_GNU64;
489489
}
490490

491-
SmallString<128> TmpArchive;
492-
int TmpArchiveFD;
493-
if (auto EC = sys::fs::createUniqueFile(ArcName + ".temp-archive-%%%%%%%.a",
494-
TmpArchiveFD, TmpArchive))
495-
return errorCodeToError(EC);
491+
Expected<sys::fs::TempFile> Temp =
492+
sys::fs::TempFile::create(ArcName + ".temp-archive-%%%%%%%.a");
493+
if (!Temp)
494+
return Temp.takeError();
496495

497-
ToolOutputFile Output(TmpArchive, TmpArchiveFD);
498-
raw_fd_ostream &Out = Output.os();
496+
raw_fd_ostream Out(Temp->FD, false);
499497
if (Thin)
500498
Out << "!<thin>\n";
501499
else
@@ -507,8 +505,7 @@ Error llvm::writeArchive(StringRef ArcName,
507505
for (const MemberData &M : Data)
508506
Out << M.Header << M.Data << M.Padding;
509507

510-
Output.keep();
511-
Out.close();
508+
Out.flush();
512509

513510
// At this point, we no longer need whatever backing memory
514511
// was used to generate the NewMembers. On Windows, this buffer
@@ -522,6 +519,5 @@ Error llvm::writeArchive(StringRef ArcName,
522519
// closed before we attempt to rename.
523520
OldArchiveBuf.reset();
524521

525-
sys::fs::rename(TmpArchive, ArcName);
526-
return Error::success();
522+
return Temp->keep(ArcName);
527523
}

0 commit comments

Comments
 (0)