diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-12-15 08:32:45 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-12-15 08:32:45 +0000 |
commit | 07f9f4e2a41ed5b431b69165890ad9bc6f44edde (patch) | |
tree | 4333a3122cc14ab874a0ed3af6548b3b14183a05 /lib/System/Unix/Path.inc | |
parent | 8378294c687c67540d96734b9b82f56486e88bfa (diff) | |
download | external_llvm-07f9f4e2a41ed5b431b69165890ad9bc6f44edde.zip external_llvm-07f9f4e2a41ed5b431b69165890ad9bc6f44edde.tar.gz external_llvm-07f9f4e2a41ed5b431b69165890ad9bc6f44edde.tar.bz2 |
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
Diffstat (limited to 'lib/System/Unix/Path.inc')
-rw-r--r-- | lib/System/Unix/Path.inc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/System/Unix/Path.inc b/lib/System/Unix/Path.inc index d4bf026..84c2d2d 100644 --- a/lib/System/Unix/Path.inc +++ b/lib/System/Unix/Path.inc @@ -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, |