summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-07-05 21:13:58 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-07-05 21:13:58 +0000
commit18627115f4d2db5dc73207e0b5312f52536be7dd (patch)
tree4fceae0ac024ad0893bba88cd6a8ce39385984b5 /clang
parentc9d2e5b8ca06bdb9af8338ec7dde5eafad40d9f0 (diff)
downloadbcm5719-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.cpp3
-rw-r--r--clang/lib/Frontend/CompilerInstance.cpp7
-rw-r--r--clang/lib/Rewrite/Core/Rewriter.cpp3
-rw-r--r--clang/lib/Serialization/GlobalModuleIndex.cpp3
-rw-r--r--clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp5
-rw-r--r--clang/test/Misc/permissions.cpp11
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--
OpenPOWER on IntegriCloud