From 85cbdaade22c7ba6dac7a806c0b88ebc32caa4c1 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 3 Jun 2010 10:46:38 -0400 Subject: Really trust umask in file(WRITE) command (#10789, #10126) Commit 8d0161c8 (Trust umask for file permissions, 2010-01-12) taught these commands to set permissions to 0666 explicitly. The intention was to let the open() call inside ofstream handle permsisions so that umask would be honored. Now we set permissions only when we need to preserve those on an existing file. New files will be created with umask-based permissions. --- Source/cmFileCommand.cxx | 19 +++++++------------ Source/cmWriteFileCommand.cxx | 19 +++++++------------ 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 5611527..9bd84d8 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -183,24 +183,16 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, std::string dir = cmSystemTools::GetFilenamePath(fileName); cmSystemTools::MakeDirectory(dir.c_str()); - mode_t mode = -#if defined( _MSC_VER ) || defined( __MINGW32__ ) - S_IREAD | S_IWRITE -#elif defined( __BORLANDC__ ) - S_IRUSR | S_IWUSR -#else - 0666 -#endif - ; + mode_t mode = 0; // Set permissions to writable if ( cmSystemTools::GetPermissions(fileName.c_str(), mode) ) { cmSystemTools::SetPermissions(fileName.c_str(), #if defined( _MSC_VER ) || defined( __MINGW32__ ) - S_IREAD | S_IWRITE + mode | S_IWRITE #else - 0666 + mode | S_IWUSR | S_IWGRP #endif ); } @@ -217,7 +209,10 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, } file << message; file.close(); - cmSystemTools::SetPermissions(fileName.c_str(), mode); + if(mode) + { + cmSystemTools::SetPermissions(fileName.c_str(), mode); + } return true; } diff --git a/Source/cmWriteFileCommand.cxx b/Source/cmWriteFileCommand.cxx index f46b87f..ec558b6 100644 --- a/Source/cmWriteFileCommand.cxx +++ b/Source/cmWriteFileCommand.cxx @@ -54,24 +54,16 @@ bool cmWriteFileCommand std::string dir = cmSystemTools::GetFilenamePath(fileName); cmSystemTools::MakeDirectory(dir.c_str()); - mode_t mode = -#if defined( _MSC_VER ) || defined( __MINGW32__ ) - S_IREAD | S_IWRITE -#elif defined( __BORLANDC__ ) - S_IRUSR | S_IWUSR -#else - 0666 -#endif - ; + mode_t mode = 0; // Set permissions to writable if ( cmSystemTools::GetPermissions(fileName.c_str(), mode) ) { cmSystemTools::SetPermissions(fileName.c_str(), #if defined( _MSC_VER ) || defined( __MINGW32__ ) - S_IREAD | S_IWRITE + mode | S_IWRITE #else - 0666 + mode | S_IWUSR | S_IWGRP #endif ); } @@ -89,7 +81,10 @@ bool cmWriteFileCommand } file << message << std::endl; file.close(); - cmSystemTools::SetPermissions(fileName.c_str(), mode); + if(mode) + { + cmSystemTools::SetPermissions(fileName.c_str(), mode); + } return true; } -- cgit v0.12 From cae85c9f65c87bfa05376077f70cb05c26b2bc66 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 3 Jun 2010 11:18:39 -0400 Subject: Borland: No S_IWGRP is available --- Source/cmFileCommand.cxx | 2 ++ Source/cmWriteFileCommand.cxx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 9bd84d8..df9863f 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -191,6 +191,8 @@ bool cmFileCommand::HandleWriteCommand(std::vector const& args, cmSystemTools::SetPermissions(fileName.c_str(), #if defined( _MSC_VER ) || defined( __MINGW32__ ) mode | S_IWRITE +#elif defined( __BORLANDC__ ) + mode | S_IWUSR #else mode | S_IWUSR | S_IWGRP #endif diff --git a/Source/cmWriteFileCommand.cxx b/Source/cmWriteFileCommand.cxx index ec558b6..b2acb2b 100644 --- a/Source/cmWriteFileCommand.cxx +++ b/Source/cmWriteFileCommand.cxx @@ -62,6 +62,8 @@ bool cmWriteFileCommand cmSystemTools::SetPermissions(fileName.c_str(), #if defined( _MSC_VER ) || defined( __MINGW32__ ) mode | S_IWRITE +#elif defined( __BORLANDC__ ) + mode | S_IWUSR #else mode | S_IWUSR | S_IWGRP #endif -- cgit v0.12