diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-06-18 17:01:00 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-06-18 17:01:00 +0000 |
commit | 8ee23f00c7e9343d09313051c318906558d6ad17 (patch) | |
tree | 3e8f0a4c0340268de38b841319840ed5b12d54dd | |
parent | 21a78d149fc3939b19fe8a132ece0b4c1bd62517 (diff) | |
download | llvm-8ee23f00c7e9343d09313051c318906558d6ad17.tar.gz llvm-8ee23f00c7e9343d09313051c318906558d6ad17.tar.bz2 llvm-8ee23f00c7e9343d09313051c318906558d6ad17.tar.xz |
Add a version of unique_file that return just the file name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184206 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/FileSystem.h | 4 | ||||
-rw-r--r-- | lib/Support/PathV2.cpp | 13 | ||||
-rw-r--r-- | tools/bugpoint/ExecutionDriver.cpp | 10 | ||||
-rw-r--r-- | tools/bugpoint/OptimizerDriver.cpp | 12 |
4 files changed, 19 insertions, 20 deletions
diff --git a/include/llvm/Support/FileSystem.h b/include/llvm/Support/FileSystem.h index 79f85539c0..11c78cc939 100644 --- a/include/llvm/Support/FileSystem.h +++ b/include/llvm/Support/FileSystem.h @@ -509,6 +509,10 @@ error_code unique_file(const Twine &model, int &result_fd, SmallVectorImpl<char> &result_path, bool makeAbsolute = true, unsigned mode = 0600); +/// @brief Simpler version for clients that don't want an open file. +error_code unique_file(const Twine &Model, SmallVectorImpl<char> &ResultPath, + bool MakeAbsolute = true, unsigned Mode = 0600); + /// @brief Canonicalize path. /// /// Sets result to the file system's idea of what path is. The result is always diff --git a/lib/Support/PathV2.cpp b/lib/Support/PathV2.cpp index 0536620255..0e02953c54 100644 --- a/lib/Support/PathV2.cpp +++ b/lib/Support/PathV2.cpp @@ -18,8 +18,11 @@ #include <cctype> #include <cstdio> #include <cstring> -#ifdef __APPLE__ + +#if !defined(_MSC_VER) && !defined(__MINGW32__) #include <unistd.h> +#else +#include <io.h> #endif namespace { @@ -622,6 +625,14 @@ bool is_relative(const Twine &path) { namespace fs { +error_code unique_file(const Twine &Model, SmallVectorImpl<char> &ResultPath, + bool MakeAbsolute, unsigned Mode) { + int FD; + error_code Ret = unique_file(Model, FD, ResultPath, MakeAbsolute, Mode); + close(FD); + return Ret; +} + error_code make_absolute(SmallVectorImpl<char> &path) { StringRef p(path.data(), path.size()); diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp index 5390808128..6edf2335f6 100644 --- a/tools/bugpoint/ExecutionDriver.cpp +++ b/tools/bugpoint/ExecutionDriver.cpp @@ -21,12 +21,6 @@ #include "llvm/Support/raw_ostream.h" #include <fstream> -#if !defined(_MSC_VER) && !defined(__MINGW32__) -#include <unistd.h> -#else -#include <io.h> -#endif - using namespace llvm; namespace { @@ -338,15 +332,13 @@ std::string BugDriver::executeProgram(const Module *Program, // Check to see if this is a valid output filename... SmallString<128> UniqueFile; - int UniqueFD; - error_code EC = sys::fs::unique_file(OutputFile, UniqueFD, UniqueFile); + error_code EC = sys::fs::unique_file(OutputFile, UniqueFile); if (EC) { errs() << ToolName << ": Error making unique filename: " << EC.message() << "\n"; exit(1); } OutputFile = UniqueFile.str(); - close(UniqueFD); // Figure out which shared objects to run, if any. std::vector<std::string> SharedObjs(AdditionalSOs); diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp index 3af551f43d..43f2d3318a 100644 --- a/tools/bugpoint/OptimizerDriver.cpp +++ b/tools/bugpoint/OptimizerDriver.cpp @@ -34,12 +34,6 @@ #include <fstream> -#if !defined(_MSC_VER) && !defined(__MINGW32__) -#include <unistd.h> -#else -#include <io.h> -#endif - using namespace llvm; namespace llvm { @@ -130,16 +124,14 @@ bool BugDriver::runPasses(Module *Program, // setup the output file name outs().flush(); SmallString<128> UniqueFilename; - int UniqueFD; - error_code EC = sys::fs::unique_file(OutputPrefix + "-output-%%%%%%%.bc", - UniqueFD, UniqueFilename); + error_code EC = + sys::fs::unique_file(OutputPrefix + "-output-%%%%%%%.bc", UniqueFilename); if (EC) { errs() << getToolName() << ": Error making unique filename: " << EC.message() << "\n"; return 1; } OutputFilename = UniqueFilename.str(); - close(UniqueFD); // We only want the filename. // set up the input file name SmallString<128> InputFilename; |