Use llvm::sys::fs::createUniqueFile.
Include a test that clang now produces output files with permissions matching the umask. llvm-svn: 185727
This commit is contained in:
parent
c9d2e5b8ca
commit
18627115f4
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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--
|
Loading…
Reference in New Issue