From: Rafael Espindola Date: Fri, 5 Jul 2013 21:13:58 +0000 (+0000) Subject: Use llvm::sys::fs::createUniqueFile. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=70e7aeccbf5856a84f81366c6c1a0c0c01e70063;p=clang Use llvm::sys::fs::createUniqueFile. Include a test that clang now produces output files with permissions matching the umask. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185727 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 7d25ebb265..c1f6bc5bb0 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/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/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 8d78a22c22..6d6c805c11 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/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/lib/Rewrite/Core/Rewriter.cpp b/lib/Rewrite/Core/Rewriter.cpp index 540e8b27fd..afb1080c66 100644 --- a/lib/Rewrite/Core/Rewriter.cpp +++ b/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/lib/Serialization/GlobalModuleIndex.cpp b/lib/Serialization/GlobalModuleIndex.cpp index 5413d385dd..675804efd1 100644 --- a/lib/Serialization/GlobalModuleIndex.cpp +++ b/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/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp b/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp index e32b85b9b3..6e80432427 100644 --- a/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp +++ b/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/test/Misc/permissions.cpp b/test/Misc/permissions.cpp new file mode 100644 index 0000000000..83f6c57208 --- /dev/null +++ b/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--