Fix a file overwrite bug in llvm-ar introduced by changes to

createTemporaryFile semantics where it doesn't create a fully unique name
if the basename doesn't exist. This functionality is now optionally
provided by the boolean reuse_current parameter to createTemporaryFile and
makeUnique. The default values differ because of the way these functions
are used in LLVM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18961 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2004-12-15 08:32:45 +00:00
parent 8378294c68
commit 07f9f4e2a4
5 changed files with 34 additions and 14 deletions

View File

@ -481,13 +481,13 @@ Path::createFile() {
}
bool
Path::createTemporaryFile() {
Path::createTemporaryFile(bool reuse_current) {
// Make sure we're dealing with a file
if (!isFile())
return false;
// Make this into a unique file name
makeUnique();
makeUnique( reuse_current );
// create the file
int outFile = ::open(path.c_str(), O_WRONLY|O_CREAT|O_TRUNC, 0666);
@ -600,8 +600,8 @@ CopyFile(const sys::Path &Dest, const sys::Path &Src) {
}
void
Path::makeUnique() {
if (!exists())
Path::makeUnique(bool reuse_current) {
if (reuse_current && !exists())
return; // File doesn't exist already, just use it!
// Append an XXXXXX pattern to the end of the file for use with mkstemp,