From d46a0797444df98aa3ae626599e4afea89573367 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 25 Oct 2022 13:52:04 +0200 Subject: [PATCH] Utils: Fix copyFile to include permissions Also adds line breaks to info output. Change-Id: I314ab87a47d7bd7541acb6a1553238fcfc27099d Reviewed-by: David Schulz --- src/libs/utils/filepath.cpp | 11 ++++++++++- src/plugins/remotelinux/linuxdevice.cpp | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) 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.");