From 84f672155c7c63ca613fd03cfab0811d9dfd5449 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 18 Apr 2006 10:30:56 -0400 Subject: [PATCH] BUG: Using the source-file permissions by default for installation is somewhat unpredictable because users can extract source code with almost any permissions (umask). Changing the default to use 644 for files and 755 for programs. No release has documented the old behavior so we do not need compatibility. --- Source/cmFileCommand.cxx | 25 ++++++------------------- Source/cmInstallCommand.h | 6 ++++-- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 68bc52d9e..9ca4f1900 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -649,7 +649,6 @@ bool cmFileCommand::HandleInstallCommand( // If permissions were not specified set default permissions for // this target type. - bool use_source_permissions = false; if(!use_given_permissions) { switch(itype) @@ -658,7 +657,6 @@ bool cmFileCommand::HandleInstallCommand( case cmTarget::MODULE_LIBRARY: #if defined(__linux__) // Use read/write permissions. - use_given_permissions = true; permissions = 0; permissions |= mode_owner_read; permissions |= mode_owner_write; @@ -669,7 +667,6 @@ bool cmFileCommand::HandleInstallCommand( case cmTarget::EXECUTABLE: case cmTarget::INSTALL_PROGRAMS: // Use read/write/executable permissions. - use_given_permissions = true; permissions = 0; permissions |= mode_owner_read; permissions |= mode_owner_write; @@ -680,8 +677,12 @@ bool cmFileCommand::HandleInstallCommand( permissions |= mode_world_execute; break; default: - // Use the permissions of the file being copied. - use_source_permissions = true; + // Use read/write permissions. + permissions = 0; + permissions |= mode_owner_read; + permissions |= mode_owner_write; + permissions |= mode_group_read; + permissions |= mode_world_read; break; } } @@ -840,20 +841,6 @@ bool cmFileCommand::HandleInstallCommand( message += toFile.c_str(); this->Makefile->DisplayStatus(message.c_str(), -1); - // If no permissions were already given use the permissions of - // the file being copied. - if(!use_given_permissions && - (!use_source_permissions || - !cmSystemTools::GetPermissions(fromFile.c_str(), permissions))) - { - // Set default permissions. - permissions = 0; - permissions |= mode_owner_read; - permissions |= mode_owner_write; - permissions |= mode_group_read; - permissions |= mode_world_read; - } - // Copy the file, but only if it has changed. if(!cmSystemTools::CopyFileIfDifferent(fromFile.c_str(), toFile.c_str())) diff --git a/Source/cmInstallCommand.h b/Source/cmInstallCommand.h index 4907b91e2..3c10e5a8a 100644 --- a/Source/cmInstallCommand.h +++ b/Source/cmInstallCommand.h @@ -143,7 +143,8 @@ public: "The FILES form specifies rules for installing files for a " "project. File names given as relative paths are interpreted with " "respect to the current source directory. Files installed by this " - "form are given the same permissions as the original file by default." + "form are by default given permissions OWNER_WRITE, OWNER_READ, " + "GROUP_READ, and WORLD_READ if no PERMISSIONS argument is given." "\n" "The PROGRAMS signature:\n" " INSTALL(PROGRAMS files... DESTINATION \n" @@ -151,7 +152,8 @@ public: " [COMPONENT ]\n" " [RENAME ])\n" "The PROGRAMS form is identical to the FILES form except that the " - "default permissions for the installed file mark it as executable. " + "default permissions for the installed file also include " + "OWNER_EXECUTE, GROUP_EXECUTE, and WORLD_EXECUTE. " "This form is intended to install programs that are not targets, " "such as shell scripts. Use the TARGETS form to install targets " "built within the project."