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
#include <cctype>
#include <cstdio>
#include <cstring>
-#ifdef __APPLE__
+
+#if !defined(_MSC_VER) && !defined(__MINGW32__)
#include <unistd.h>
+#else
+#include <io.h>
#endif
namespace {
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());
#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 {
// 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);
#include <fstream>
-#if !defined(_MSC_VER) && !defined(__MINGW32__)
-#include <unistd.h>
-#else
-#include <io.h>
-#endif
-
using namespace llvm;
namespace llvm {
// 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;