diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-09-14 14:19:59 +0200 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-09-15 05:21:52 +0000 |
commit | ed46f1f00266ffc60b26248c8581bce72666c5eb (patch) | |
tree | 0e08d5cc742d0629a78822f0d135bbb6d334ed74 /src/libs/utils/fileutils.cpp | |
parent | 704fb9c0e6b1d03ba97b2f50ad3b80c7f4d9321f (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.cpp | 22 |
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 |