diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 4c816adb479..55d5ca89a07 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1264,7 +1264,16 @@ bool FilePath::copyFile(const FilePath &target) const const std::optional ba = fileContents(); if (!ba) return false; - return target.writeFileContents(*ba); + const auto perms = permissions(); + if (!target.writeFileContents(*ba)) + return false; + + if (!target.setPermissions(perms)) { + target.removeFile(); + return false; + } + + return true; } return fileAccess()->copyFile(*this, target); } diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index bb506b64cdd..402109d6d01 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -1458,7 +1458,7 @@ private: const FilePath targetDir = target.parentDir(); if (!m_checkedDirectories.contains(targetDir)) { - emit progress(tr("Creating directory: %1") + emit progress(tr("Creating directory: %1\n") .arg(targetDir.toUserOutput())); if (!targetDir.ensureWritableDir()) { result.m_errorString = tr("Failed."); @@ -1469,7 +1469,7 @@ private: m_checkedDirectories.insert(targetDir); } - emit progress(tr("Copying %1/%2: %3 -> %4") + emit progress(tr("Copying %1/%2: %3 -> %4\n") .arg(m_currentIndex).arg(m_fileCount).arg(source.toUserOutput(), target.toUserOutput())); if (!source.copyFile(target)) { result.m_errorString = tr("Failed.");