Selaa lähdekoodia

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.
Brad King 15 vuotta sitten
vanhempi
sitoutus
b8a1319c35
1 muutettua tiedostoa jossa 8 lisäystä ja 1 poistoa
  1. 8 1
      Source/cmFileCommand.cxx

+ 8 - 1
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;