mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-13 17:06:15 +00:00
Use TempFile in llvm-ar. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@318127 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c3e65d9d3c
commit
79f20d27db
@ -488,14 +488,12 @@ Error llvm::writeArchive(StringRef ArcName,
|
|||||||
Kind = object::Archive::K_GNU64;
|
Kind = object::Archive::K_GNU64;
|
||||||
}
|
}
|
||||||
|
|
||||||
SmallString<128> TmpArchive;
|
Expected<sys::fs::TempFile> Temp =
|
||||||
int TmpArchiveFD;
|
sys::fs::TempFile::create(ArcName + ".temp-archive-%%%%%%%.a");
|
||||||
if (auto EC = sys::fs::createUniqueFile(ArcName + ".temp-archive-%%%%%%%.a",
|
if (!Temp)
|
||||||
TmpArchiveFD, TmpArchive))
|
return Temp.takeError();
|
||||||
return errorCodeToError(EC);
|
|
||||||
|
|
||||||
ToolOutputFile Output(TmpArchive, TmpArchiveFD);
|
raw_fd_ostream Out(Temp->FD, false);
|
||||||
raw_fd_ostream &Out = Output.os();
|
|
||||||
if (Thin)
|
if (Thin)
|
||||||
Out << "!<thin>\n";
|
Out << "!<thin>\n";
|
||||||
else
|
else
|
||||||
@ -507,8 +505,7 @@ Error llvm::writeArchive(StringRef ArcName,
|
|||||||
for (const MemberData &M : Data)
|
for (const MemberData &M : Data)
|
||||||
Out << M.Header << M.Data << M.Padding;
|
Out << M.Header << M.Data << M.Padding;
|
||||||
|
|
||||||
Output.keep();
|
Out.flush();
|
||||||
Out.close();
|
|
||||||
|
|
||||||
// At this point, we no longer need whatever backing memory
|
// At this point, we no longer need whatever backing memory
|
||||||
// was used to generate the NewMembers. On Windows, this buffer
|
// 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.
|
// closed before we attempt to rename.
|
||||||
OldArchiveBuf.reset();
|
OldArchiveBuf.reset();
|
||||||
|
|
||||||
sys::fs::rename(TmpArchive, ArcName);
|
return Temp->keep(ArcName);
|
||||||
return Error::success();
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user