From b8a1319c354b7f257e6c0b82e428cfe94dcbf4ff Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 3 Jun 2010 11:57:02 -0400 Subject: [PATCH] Avoid use of CopyAFile "copyPermissions" parameter Commit 0fafdb7e (Do not copy permissions of files when making the copy in an install rule, 2008-12-18) added special behavior to KWSys file copy methods for this special case. Use a local solution to avoid use of the special behavior so it can be removed later. --- Source/cmFileCommand.cxx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 561152714..60a81f34a 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -1507,7 +1507,7 @@ bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile, this->ReportCopy(toFile, TypeFile, copy); // Copy the file. - if(copy && !cmSystemTools::CopyAFile(fromFile, toFile, true, false)) + if(copy && !cmSystemTools::CopyAFile(fromFile, toFile, true)) { cmOStringStream e; e << this->Name << " cannot copy file \"" << fromFile @@ -1519,6 +1519,13 @@ bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile, // Set the file modification time of the destination file. if(copy && !this->Always) { + // Add write permission so we can set the file time. + // Permissions are set unconditionally below anyway. + mode_t perm = 0; + if(cmSystemTools::GetPermissions(toFile, perm)) + { + cmSystemTools::SetPermissions(toFile, perm | mode_owner_write); + } if (!cmSystemTools::CopyFileTime(fromFile, toFile)) { cmOStringStream e;