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.
This commit is contained in:
Brad King 2010-06-03 11:57:02 -04:00
parent 3ac3dea6f0
commit b8a1319c35
1 changed files with 8 additions and 1 deletions

View File

@ -1507,7 +1507,7 @@ bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile,
this->ReportCopy(toFile, TypeFile, copy); this->ReportCopy(toFile, TypeFile, copy);
// Copy the file. // Copy the file.
if(copy && !cmSystemTools::CopyAFile(fromFile, toFile, true, false)) if(copy && !cmSystemTools::CopyAFile(fromFile, toFile, true))
{ {
cmOStringStream e; cmOStringStream e;
e << this->Name << " cannot copy file \"" << fromFile 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. // Set the file modification time of the destination file.
if(copy && !this->Always) 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)) if (!cmSystemTools::CopyFileTime(fromFile, toFile))
{ {
cmOStringStream e; cmOStringStream e;