From: Rafael Espindola Date: Tue, 25 Jun 2013 04:26:55 +0000 (+0000) Subject: Add r184803 back now that the bug in unique_file has been fixed. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4ea53ae85cd0388f3138c6d48604fc9407174dcc;p=clang Add r184803 back now that the bug in unique_file has been fixed. Original message: Use the new PathV2 instead of implementing the logic in clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184825 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 546333b137..135af0404b 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -30,7 +30,6 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" -#include "llvm/Support/PathV1.h" #include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/Program.h" #include "llvm/Support/raw_ostream.h" @@ -1615,29 +1614,15 @@ std::string Driver::GetProgramPath(const char *Name, std::string Driver::GetTemporaryPath(StringRef Prefix, const char *Suffix) const { - // FIXME: This is lame; sys::Path should provide this function (in particular, - // it should know how to find the temporary files dir). - std::string Error; - const char *TmpDir = ::getenv("TMPDIR"); - if (!TmpDir) - TmpDir = ::getenv("TEMP"); - if (!TmpDir) - TmpDir = ::getenv("TMP"); - if (!TmpDir) - TmpDir = "/tmp"; - llvm::sys::Path P(TmpDir); - P.appendComponent(Prefix); - if (P.makeUnique(false, &Error)) { - Diag(clang::diag::err_unable_to_make_temp) << Error; + SmallString<128> Path; + llvm::error_code EC = + llvm::sys::fs::unique_file(Prefix + "-%%%%%%." + Suffix, Path); + if (EC) { + Diag(clang::diag::err_unable_to_make_temp) << EC.message(); return ""; } - // FIXME: Grumble, makeUnique sometimes leaves the file around!? PR3837. - P.eraseFromDisk(false, 0); - - if (Suffix) - P.appendSuffix(Suffix); - return P.str(); + return Path.str(); } /// \brief Compute target triple from args.