Add a version of unique_file that return just the file name.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 18 Jun 2013 17:01:00 +0000 (17:01 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 18 Jun 2013 17:01:00 +0000 (17:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184206 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/FileSystem.h
lib/Support/PathV2.cpp
tools/bugpoint/ExecutionDriver.cpp
tools/bugpoint/OptimizerDriver.cpp

index 79f85539c0328e474a41ced1ace3cbb2795a985d..11c78cc93941a3ee6f46d4f511fe76577223fb3d 100644 (file)
@@ -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
index 05366202559ee47cdb4861242ca228f7ed8b96bf..0e02953c549a14bd40dac71fd0923820b19b8f0b 100644 (file)
 #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());
 
index 53908081287963bb8093eef7659d8bdd8837a231..6edf2335f6c5fa36e44a45d2be0a17c27f572d79 100644 (file)
 #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);
index 3af551f43dd6e699f97e38a22301897aa38b9640..43f2d3318ae7c331d971f13120843029e343861d 100644 (file)
 
 #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;