diff options
-rw-r--r-- | tools/CIndex/CIndex.cpp | 13 | ||||
-rw-r--r-- | tools/CIndex/CIndexCodeCompletion.cpp | 8 | ||||
-rw-r--r-- | tools/CIndex/CIndexer.cpp | 6 | ||||
-rw-r--r-- | tools/CIndex/CIndexer.h | 3 |
4 files changed, 12 insertions, 18 deletions
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp index b52a32ed9b..594654fe6c 100644 --- a/tools/CIndex/CIndex.cpp +++ b/tools/CIndex/CIndex.cpp @@ -29,9 +29,6 @@ #include "llvm/System/Program.h" #include "llvm/System/Signals.h" -// Needed to define L_TMPNAM on some systems. -#include <cstdio> - using namespace clang; using namespace clang::cxcursor; using namespace clang::cxstring; @@ -1055,8 +1052,8 @@ clang_createTranslationUnitFromSourceFile(CXIndex CIdx, // Generate a temporary name for the AST file. argv.push_back("-o"); - char astTmpFile[L_tmpnam]; - argv.push_back(tmpnam(astTmpFile)); + llvm::sys::Path astTmpFile(CIndexer::getTemporaryPath()); + argv.push_back(astTmpFile.c_str()); // Remap any unsaved files to temporary files. std::vector<llvm::sys::Path> TemporaryFiles; @@ -1087,9 +1084,7 @@ clang_createTranslationUnitFromSourceFile(CXIndex CIdx, } // Generate a temporary name for the diagnostics file. - char tmpFileResults[L_tmpnam]; - char *tmpResultsFileName = tmpnam(tmpFileResults); - llvm::sys::Path DiagnosticsFile(tmpResultsFileName); + llvm::sys::Path DiagnosticsFile(CIndexer::getTemporaryPath()); TemporaryFiles.push_back(DiagnosticsFile); argv.push_back("-fdiagnostics-binary"); @@ -1118,7 +1113,7 @@ clang_createTranslationUnitFromSourceFile(CXIndex CIdx, Diags->Report(diag::err_fe_invoking) << AllArgs << ErrMsg; } - ASTUnit *ATU = ASTUnit::LoadFromPCHFile(astTmpFile, *Diags, + ASTUnit *ATU = ASTUnit::LoadFromPCHFile(astTmpFile.str(), *Diags, CXXIdx->getOnlyLocalDecls(), RemappedFiles.data(), RemappedFiles.size(), diff --git a/tools/CIndex/CIndexCodeCompletion.cpp b/tools/CIndex/CIndexCodeCompletion.cpp index 3b7674ec0d..cd3787204c 100644 --- a/tools/CIndex/CIndexCodeCompletion.cpp +++ b/tools/CIndex/CIndexCodeCompletion.cpp @@ -299,15 +299,11 @@ CXCodeCompleteResults *clang_codeComplete(CXIndex CIdx, argv.push_back(NULL); // Generate a temporary name for the code-completion results file. - char tmpFile[L_tmpnam]; - char *tmpFileName = tmpnam(tmpFile); - llvm::sys::Path ResultsFile(tmpFileName); + llvm::sys::Path ResultsFile(CIndexer::getTemporaryPath()); TemporaryFiles.push_back(ResultsFile); // Generate a temporary name for the diagnostics file. - char tmpFileResults[L_tmpnam]; - char *tmpResultsFileName = tmpnam(tmpFileResults); - llvm::sys::Path DiagnosticsFile(tmpResultsFileName); + llvm::sys::Path DiagnosticsFile(CIndexer::getTemporaryPath()); TemporaryFiles.push_back(DiagnosticsFile); // Invoke 'clang'. diff --git a/tools/CIndex/CIndexer.cpp b/tools/CIndex/CIndexer.cpp index 0774ae2f37..3cc1af8e14 100644 --- a/tools/CIndex/CIndexer.cpp +++ b/tools/CIndex/CIndexer.cpp @@ -95,7 +95,7 @@ std::string CIndexer::getClangResourcesPath() { return P.str(); } -static llvm::sys::Path GetTemporaryPath() { +llvm::sys::Path CIndexer::getTemporaryPath() { // 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; @@ -107,7 +107,7 @@ static llvm::sys::Path GetTemporaryPath() { if (!TmpDir) TmpDir = "/tmp"; llvm::sys::Path P(TmpDir); - P.appendComponent("remap"); + P.appendComponent("CIndex"); if (P.makeUnique(false, &Error)) return llvm::sys::Path(""); @@ -123,7 +123,7 @@ bool clang::RemapFiles(unsigned num_unsaved_files, std::vector<llvm::sys::Path> &TemporaryFiles) { for (unsigned i = 0; i != num_unsaved_files; ++i) { // Write the contents of this unsaved file into the temporary file. - llvm::sys::Path SavedFile(GetTemporaryPath()); + llvm::sys::Path SavedFile(CIndexer::getTemporaryPath()); if (SavedFile.empty()) return true; diff --git a/tools/CIndex/CIndexer.h b/tools/CIndex/CIndexer.h index 1fa3ca9387..80337a272d 100644 --- a/tools/CIndex/CIndexer.h +++ b/tools/CIndex/CIndexer.h @@ -64,6 +64,9 @@ public: /// \brief Get the path of the clang resource files. std::string getClangResourcesPath(); + + /// \brief Get an unique temporary filename. + static llvm::sys::Path getTemporaryPath(); }; namespace clang { |