diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 87ffc501492..95e935272c3 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -967,11 +967,11 @@ QList FilePath::dirEntries(QDir::Filters filters) const return dirEntries({}, filters); } -QByteArray FilePath::fileContents(int maxSize) const +QByteArray FilePath::fileContents(qint64 maxSize, qint64 offset) const { if (needsDevice()) { QTC_ASSERT(s_deviceHooks.fileContents, return {}); - return s_deviceHooks.fileContents(*this, maxSize); + return s_deviceHooks.fileContents(*this, maxSize, offset); } const QString path = toString(); @@ -982,6 +982,9 @@ QByteArray FilePath::fileContents(int maxSize) const if (!f.open(QFile::ReadOnly)) return {}; + if (offset != 0) + f.seek(offset); + if (maxSize != -1) return f.read(maxSize); diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index 70988a3002d..20219dec280 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -89,7 +89,7 @@ public: std::function symLinkTarget; std::function(const FilePath &, const QStringList &, QDir::Filters, QDir::SortFlags)> dirEntries; - std::function fileContents; + std::function fileContents; std::function writeFileContents; std::function lastModified; std::function permissions; @@ -155,7 +155,7 @@ public: QDir::Filters filters, QDir::SortFlags sort = QDir::NoSort) const; QList dirEntries(QDir::Filters filters) const; - QByteArray fileContents(int maxSize = -1) const; + QByteArray fileContents(qint64 maxSize = -1, qint64 offset = 0) const; bool writeFileContents(const QByteArray &data) const; FilePath parentDir() const; diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 6136591de93..83d6d3c40fb 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -1064,12 +1064,12 @@ FilePaths DockerDevice::directoryEntries(const FilePath &filePath, return {}; } -QByteArray DockerDevice::fileContents(const FilePath &filePath, int limit) const +QByteArray DockerDevice::fileContents(const FilePath &filePath, qint64 limit, qint64 offset) const { QTC_ASSERT(handlesFile(filePath), return {}); tryCreateLocalFileAccess(); if (hasLocalFileAccess()) - return mapToLocalAccess(filePath).fileContents(limit); + return mapToLocalAccess(filePath).fileContents(limit, offset); QTC_CHECK(false); // FIXME: Implement return {}; diff --git a/src/plugins/docker/dockerdevice.h b/src/plugins/docker/dockerdevice.h index 471d5f80273..2b526cc05c3 100644 --- a/src/plugins/docker/dockerdevice.h +++ b/src/plugins/docker/dockerdevice.h @@ -93,7 +93,7 @@ public: const QStringList &nameFilters, QDir::Filters filters, QDir::SortFlags sort) const override; - QByteArray fileContents(const Utils::FilePath &filePath, int limit) const override; + QByteArray fileContents(const Utils::FilePath &filePath, qint64 limit, qint64 offset) const override; bool writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const override; QDateTime lastModified(const Utils::FilePath &filePath) const override; void runProcess(Utils::QtcProcess &process) const override; diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp index 5ee6d5b4bf4..5ac3ddc91ef 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp @@ -280,10 +280,10 @@ FilePath DesktopDevice::symLinkTarget(const FilePath &filePath) const return filePath.symLinkTarget(); } -QByteArray DesktopDevice::fileContents(const FilePath &filePath, int limit) const +QByteArray DesktopDevice::fileContents(const FilePath &filePath, qint64 limit, qint64 offset) const { QTC_ASSERT(handlesFile(filePath), return {}); - return filePath.fileContents(limit); + return filePath.fileContents(limit, offset); } bool DesktopDevice::writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.h b/src/plugins/projectexplorer/devicesupport/desktopdevice.h index a1a5379f00f..39bc8176640 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopdevice.h +++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.h @@ -75,7 +75,7 @@ public: bool renameFile(const Utils::FilePath &filePath, const Utils::FilePath &target) const override; QDateTime lastModified(const Utils::FilePath &filePath) const override; Utils::FilePath symLinkTarget(const Utils::FilePath &filePath) const override; - QByteArray fileContents(const Utils::FilePath &filePath, int limit) const override; + QByteArray fileContents(const Utils::FilePath &filePath, qint64 limit, qint64 offset) const override; bool writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const override; protected: diff --git a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp index 6bf8249695c..85bb517f90e 100644 --- a/src/plugins/projectexplorer/devicesupport/devicemanager.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicemanager.cpp @@ -477,10 +477,10 @@ DeviceManager::DeviceManager(bool isInstance) : d(std::make_uniquedirectoryEntries(filePath, nameFilters, filters, sort); }; - deviceHooks.fileContents = [](const FilePath &filePath, int maxSize) { + deviceHooks.fileContents = [](const FilePath &filePath, qint64 maxSize, qint64 offset) { auto device = DeviceManager::deviceForPath(filePath); QTC_ASSERT(device, return QByteArray()); - return device->fileContents(filePath, maxSize); + return device->fileContents(filePath, maxSize, offset); }; deviceHooks.writeFileContents = [](const FilePath &filePath, const QByteArray &data) { diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp index bb6219dc666..82e0058f37c 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp @@ -353,7 +353,7 @@ QList IDevice::directoryEntries(const FilePath &filePath, return {}; } -QByteArray IDevice::fileContents(const FilePath &filePath, int limit) const +QByteArray IDevice::fileContents(const FilePath &filePath, qint64 limit, qint64 offset) const { Q_UNUSED(filePath); Q_UNUSED(limit); diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h index 9e323e21944..4bb77e4b00c 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.h +++ b/src/plugins/projectexplorer/devicesupport/idevice.h @@ -257,7 +257,9 @@ public: const QStringList &nameFilters, QDir::Filters filters, QDir::SortFlags sort = QDir::NoSort) const; - virtual QByteArray fileContents(const Utils::FilePath &filePath, int limit) const; + virtual QByteArray fileContents(const Utils::FilePath &filePath, + qint64 limit, + qint64 offset) const; virtual bool writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const; virtual QDateTime lastModified(const Utils::FilePath &filePath) const; virtual QFile::Permissions permissions(const Utils::FilePath &filePath) const;