From e3bb14d0d2d75337bc3b0d0a44294cf622a51963 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 9 Jun 2022 17:00:23 +0200 Subject: [PATCH] Docker/RemoteLinux Fix file size and permission retrieval When a file path is a link, give the result of the dereferenced link. This is what QFileInfo does locally. Change-Id: I26ca1fb70d3391da77f2a5845e5f0a2c0fb73d53 Reviewed-by: Reviewed-by: Jarek Kobus Reviewed-by: Marcus Tillmanns --- src/plugins/docker/dockerdevice.cpp | 6 +++--- src/plugins/remotelinux/linuxdevice.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 822007253ae..6647c19a918 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -783,7 +783,7 @@ QDateTime DockerDevice::lastModified(const FilePath &filePath) const { QTC_ASSERT(handlesFile(filePath), return {}); updateContainerAccess(); - const QByteArray output = d->outputForRunInShell({"stat", {"-c", "%Y", filePath.path()}}); + const QByteArray output = d->outputForRunInShell({"stat", {"-L", "-c", "%Y", filePath.path()}}); qint64 secs = output.toLongLong(); const QDateTime dt = QDateTime::fromSecsSinceEpoch(secs, Qt::UTC); return dt; @@ -802,7 +802,7 @@ qint64 DockerDevice::fileSize(const FilePath &filePath) const { QTC_ASSERT(handlesFile(filePath), return -1); updateContainerAccess(); - const QByteArray output = d->outputForRunInShell({"stat", {"-c", "%s", filePath.path()}}); + const QByteArray output = d->outputForRunInShell({"stat", {"-L", "-c", "%s", filePath.path()}}); return output.toLongLong(); } @@ -811,7 +811,7 @@ QFileDevice::Permissions DockerDevice::permissions(const FilePath &filePath) con QTC_ASSERT(handlesFile(filePath), return {}); updateContainerAccess(); - const QByteArray output = d->outputForRunInShell({"stat", {"-c", "%a", filePath.path()}}); + const QByteArray output = d->outputForRunInShell({"stat", {"-L", "-c", "%a", filePath.path()}}); const uint bits = output.toUInt(nullptr, 8); QFileDevice::Permissions perm = {}; #define BIT(n, p) if (bits & (1<outputForRunInShell({"stat", {"-c", "%Y", filePath.path()}}); + const QByteArray output = d->outputForRunInShell({"stat", {"-L", "-c", "%Y", filePath.path()}}); const qint64 secs = output.toLongLong(); const QDateTime dt = QDateTime::fromSecsSinceEpoch(secs, Qt::UTC); return dt; @@ -1362,7 +1362,7 @@ FilePath LinuxDevice::symLinkTarget(const FilePath &filePath) const qint64 LinuxDevice::fileSize(const FilePath &filePath) const { QTC_ASSERT(handlesFile(filePath), return -1); - const QByteArray output = d->outputForRunInShell({"stat", {"-c", "%s", filePath.path()}}); + const QByteArray output = d->outputForRunInShell({"stat", {"-L", "-c", "%s", filePath.path()}}); return output.toLongLong(); } @@ -1383,7 +1383,7 @@ qint64 LinuxDevice::bytesAvailable(const FilePath &filePath) const QFileDevice::Permissions LinuxDevice::permissions(const FilePath &filePath) const { QTC_ASSERT(handlesFile(filePath), return {}); - const QByteArray output = d->outputForRunInShell({"stat", {"-c", "%a", filePath.path()}}); + const QByteArray output = d->outputForRunInShell({"stat", {"-L", "-c", "%a", filePath.path()}}); const uint bits = output.toUInt(nullptr, 8); QFileDevice::Permissions perm = {}; #define BIT(n, p) if (bits & (1<