diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-07-05 21:13:58 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-07-05 21:13:58 +0000 |
commit | 18627115f4d2db5dc73207e0b5312f52536be7dd (patch) | |
tree | 4fceae0ac024ad0893bba88cd6a8ce39385984b5 /clang | |
parent | c9d2e5b8ca06bdb9af8338ec7dde5eafad40d9f0 (diff) | |
download | bcm5719-llvm-18627115f4d2db5dc73207e0b5312f52536be7dd.tar.gz bcm5719-llvm-18627115f4d2db5dc73207e0b5312f52536be7dd.zip |
Use llvm::sys::fs::createUniqueFile.
Include a test that clang now produces output files with permissions matching
the umask.
llvm-svn: 185727
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Frontend/ASTUnit.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 7 | ||||
-rw-r--r-- | clang/lib/Rewrite/Core/Rewriter.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Serialization/GlobalModuleIndex.cpp | 3 | ||||
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp | 5 | ||||
-rw-r--r-- | clang/test/Misc/permissions.cpp | 11 |
6 files changed, 20 insertions, 12 deletions
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp index 7d25ebb2658..c1f6bc5bb0e 100644 --- a/clang/lib/Frontend/ASTUnit.cpp +++ b/clang/lib/Frontend/ASTUnit.cpp @@ -2521,8 +2521,7 @@ bool ASTUnit::Save(StringRef File) { TempPath = File; TempPath += "-%%%%%%%%"; int fd; - if (llvm::sys::fs::unique_file(TempPath.str(), fd, TempPath, - /*makeAbsolute=*/false)) + if (llvm::sys::fs::createUniqueFile(TempPath.str(), fd, TempPath)) return true; // FIXME: Can we somehow regenerate the stat cache here, or do we need to diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 8d78a22c22b..6d6c805c111 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -544,16 +544,15 @@ CompilerInstance::createOutputFile(StringRef OutputPath, TempPath = OutFile; TempPath += "-%%%%%%%%"; int fd; - llvm::error_code EC = llvm::sys::fs::unique_file( - TempPath.str(), fd, TempPath, /*makeAbsolute=*/ false, 0664); + llvm::error_code EC = + llvm::sys::fs::createUniqueFile(TempPath.str(), fd, TempPath); if (CreateMissingDirectories && EC == llvm::errc::no_such_file_or_directory) { StringRef Parent = llvm::sys::path::parent_path(OutputPath); EC = llvm::sys::fs::create_directories(Parent); if (!EC) { - EC = llvm::sys::fs::unique_file(TempPath.str(), fd, TempPath, - /*makeAbsolute=*/ false, 0664); + EC = llvm::sys::fs::createUniqueFile(TempPath.str(), fd, TempPath); } } diff --git a/clang/lib/Rewrite/Core/Rewriter.cpp b/clang/lib/Rewrite/Core/Rewriter.cpp index 540e8b27fd0..afb1080c66a 100644 --- a/clang/lib/Rewrite/Core/Rewriter.cpp +++ b/clang/lib/Rewrite/Core/Rewriter.cpp @@ -433,8 +433,7 @@ public: TempFilename = Filename; TempFilename += "-%%%%%%%%"; int FD; - if (llvm::sys::fs::unique_file(TempFilename.str(), FD, TempFilename, - /*makeAbsolute=*/true, 0664)) { + if (llvm::sys::fs::createUniqueFile(TempFilename.str(), FD, TempFilename)) { AllWritten = false; Diagnostics.Report(clang::diag::err_unable_to_make_temp) << TempFilename; diff --git a/clang/lib/Serialization/GlobalModuleIndex.cpp b/clang/lib/Serialization/GlobalModuleIndex.cpp index 5413d385dd6..675804efd16 100644 --- a/clang/lib/Serialization/GlobalModuleIndex.cpp +++ b/clang/lib/Serialization/GlobalModuleIndex.cpp @@ -790,7 +790,8 @@ GlobalModuleIndex::writeIndex(FileManager &FileMgr, StringRef Path) { // Write the global index file to a temporary file. llvm::SmallString<128> IndexTmpPath; int TmpFD; - if (llvm::sys::fs::unique_file(IndexPath + "-%%%%%%%%", TmpFD, IndexTmpPath)) + if (llvm::sys::fs::createUniqueFile(IndexPath + "-%%%%%%%%", TmpFD, + IndexTmpPath)) return EC_IOError; // Open the temporary global index file for output. diff --git a/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp b/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp index e32b85b9b3f..6e804324279 100644 --- a/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp +++ b/clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp @@ -247,9 +247,8 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D, SmallString<128> Model, ResultPath; llvm::sys::path::append(Model, Directory, "report-%%%%%%.html"); - if (llvm::error_code EC = llvm::sys::fs::unique_file( - Model.str(), FD, ResultPath, false, - llvm::sys::fs::all_read | llvm::sys::fs::all_write)) { + if (llvm::error_code EC = + llvm::sys::fs::createUniqueFile(Model.str(), FD, ResultPath)) { llvm::errs() << "warning: could not create file in '" << Directory << "': " << EC.message() << '\n'; return; diff --git a/clang/test/Misc/permissions.cpp b/clang/test/Misc/permissions.cpp new file mode 100644 index 00000000000..83f6c572080 --- /dev/null +++ b/clang/test/Misc/permissions.cpp @@ -0,0 +1,11 @@ +// REQUIRES: shell + +// RUN: umask 000 +// RUN: %clang_cc1 -emit-llvm-bc %s -o %t +// RUN: ls -l %t | FileCheck --check-prefix=CHECK000 %s +// CHECK000: rw-rw-rw- + +// RUN: umask 002 +// RUN: %clang_cc1 -emit-llvm-bc %s -o %t +// RUN: ls -l %t | FileCheck --check-prefix=CHECK002 %s +// CHECK002: rw-rw-r-- |