diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2003-08-07 21:28:50 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2003-08-07 21:28:50 +0000 |
commit | 3d1b0c73319ec1d01ec927ead03a09bbc62c7aea (patch) | |
tree | 68a7f7357981bef6cf27625f62b19b2cc7096cad /lib/Support/FileUtilities.cpp | |
parent | 57d708b122d6fccaf2d5f8a4544f23ec1ad3060c (diff) |
Moved removeFile() and getUniqueFilename() into FileUtilities.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7691 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/FileUtilities.cpp')
-rw-r--r-- | lib/Support/FileUtilities.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/Support/FileUtilities.cpp b/lib/Support/FileUtilities.cpp index 35bdf1e9a4..9f9ef30686 100644 --- a/lib/Support/FileUtilities.cpp +++ b/lib/Support/FileUtilities.cpp @@ -54,3 +54,38 @@ void MoveFileOverIfUpdated(const std::string &New, const std::string &Old) { std::remove(New.c_str()); } } + +/// removeFile - Delete the specified file +/// +void removeFile(const std::string &Filename) { + std::remove(Filename.c_str()); +} + +/// getUniqueFilename - Return a filename with the specified prefix. If the +/// file does not exist yet, return it, otherwise add a suffix to make it +/// unique. +/// +std::string getUniqueFilename(const std::string &FilenameBase) { + if (!std::ifstream(FilenameBase.c_str())) + return FilenameBase; // Couldn't open the file? Use it! + + // Create a pattern for mkstemp... + char *FNBuffer = new char[FilenameBase.size()+8]; + strcpy(FNBuffer, FilenameBase.c_str()); + strcpy(FNBuffer+FilenameBase.size(), "-XXXXXX"); + + // Agree on a temporary file name to use.... + int TempFD; + if ((TempFD = mkstemp(FNBuffer)) == -1) { + std::cerr << "bugpoint: ERROR: Cannot create temporary file in the current " + << " directory!\n"; + exit(1); + } + + // We don't need to hold the temp file descriptor... we will trust that noone + // will overwrite/delete the file while we are working on it... + close(TempFD); + std::string Result(FNBuffer); + delete[] FNBuffer; + return Result; +} |