aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/fileutils.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2022-09-14 14:19:59 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2022-09-15 05:21:52 +0000
commited46f1f00266ffc60b26248c8581bce72666c5eb (patch)
tree0e08d5cc742d0629a78822f0d135bbb6d334ed74 /src/libs/utils/fileutils.cpp
parent704fb9c0e6b1d03ba97b2f50ad3b80c7f4d9321f (diff)
linuxdevice: Fix ::bytesAvailable
DeviceShell does not support piping commands at the moment. To continue to support ::bytesAvailable the parsing of the output from "df" is moved to FileUtils::bytesAvailableFromDFOutput. Change-Id: Ia229208748aa6c572b99899e6ae042bdd5654f4a Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/libs/utils/fileutils.cpp')
-rw-r--r--src/libs/utils/fileutils.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp
index bdd67a6609..32d41ec4c8 100644
--- a/src/libs/utils/fileutils.cpp
+++ b/src/libs/utils/fileutils.cpp
@@ -531,4 +531,26 @@ void FileUtils::iterateLsOutput(const FilePath &base,
#endif // QT_WIDGETS_LIB
+qint64 FileUtils::bytesAvailableFromDFOutput(const QByteArray &dfOutput)
+{
+ const auto lines = filtered(dfOutput.split('\n'),
+ [](const QByteArray &line) { return line.size() > 0; });
+
+ QTC_ASSERT(lines.size() == 2, return -1);
+ const auto headers = filtered(lines[0].split(' '),
+ [](const QByteArray &field) { return field.size() > 0; });
+ QTC_ASSERT(headers.size() >= 4, return -1);
+ QTC_ASSERT(headers[3] == QByteArray("Available"), return -1);
+
+ const auto fields = filtered(lines[1].split(' '),
+ [](const QByteArray &field) { return field.size() > 0; });
+ QTC_ASSERT(fields.size() >= 4, return -1);
+
+ bool ok = false;
+ const quint64 result = QString::fromUtf8(fields[3]).toULongLong(&ok);
+ if (ok)
+ return result;
+ return -1;
+}
+
} // namespace Utils