Marc Mutz 88dd567930 QStorageInfo manual test: port away from Q_FOREACH
In main.cpp, the loop is over a local variable which would be const
were it not for the multi-step initialization that I didn't want to
change. The loop body clearly doesn't modify the container, so port to
ranged for loop with std::as_const().

In printvolumes.cpp, the loop _does_ invoke unknown code (through the
function pointer passed as the second argument), but, as could be
expected, the two users of the function don't pass functions that know
about `volumes`:

- in the tst_QStorageInfo auto-test, an rvalue `volumes` is passed,
  so we don't need to analyze the qInfoPrinter function passed there,
  as it cannot possibly reference the temporary

- and in main.cpp of the manual test, we just pass printf (which is
  technically UB (taking the address of a standard library function),
  but I don't care right now).

Task-number: QTBUG-115839
Change-Id: Ibcd10a0e0b3229d8f2a1d98545d8fa6d473a0f75
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
(cherry picked from commit bb11f7a9fa576b679fc64b09abadebf90dfbe9a1)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2023-08-09 02:26:39 +00:00

35 lines
837 B
C++

// Copyright (C) 2016 Intel Corporation
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <QtCore/QCoreApplication>
#include <stdio.h>
#include "printvolumes.cpp"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QList<QStorageInfo> volumes;
QStringList args = a.arguments();
args.takeFirst(); // skip application name
for (const QString &path : std::as_const(args)) {
QStorageInfo info(path);
if (!info.isValid()) {
// no error string...
fprintf(stderr, "Could not get info on %s\n", qPrintable(path));
return 1;
}
volumes << info;
}
if (volumes.isEmpty())
volumes = QStorageInfo::mountedVolumes();
printVolumes(volumes, printf);
return 0;
}