7#ifndef QSTORAGEINFO_LINUX_P_H
8#define QSTORAGEINFO_LINUX_P_H
23#include <QtCore/qsystemdetection.h>
24#include <QtCore/private/qlocale_tools_p.h>
26#include <sys/sysmacros.h>
41 int rdevmajor = int(
r.result);
51 return makedev(rdevmajor,
r.result);
67 const char *srcEnd =
path.data() +
path.size();
68 while (
src != srcEnd) {
76 char c = (*
src++ -
'0') << 6;
77 c |= (*
src++ -
'0') << 3;
97static constexpr short DevNo = 2;
112 size_t fieldIndex = 0;
123 static constexpr char separatorField[] =
" - ";
125 if (sepIndex == -1) {
127 "Malformed line (missing '-' separator field) while parsing '%s':\n%s",
133 from = sepIndex + strlen(separatorField);
148 "Expected %d fields while parsing line from '%s', but found %zu instead:\n%.*s",
173[[maybe_unused]]
static std::vector<MountInfo>
181 const auto end = mountinfo.
cend();
183 auto nIt = std::find(
it,
end,
'\n');
192 std::vector<MountInfo> infos;
193 std::array<QByteArrayView, FieldCount> fields;
197 if (field.isEmpty()) {
206 while (!(
line = nextLine()).isEmpty()) {
212 if (!checkField(mountP))
216 if (!checkField(fields[
FsType]))
231 if (!checkField(fsRootView))
236 if (fsRootView !=
"/") {
238 if (!checkField(
info.fsRoot))
243 if (!checkField(
info.device))
246 infos.push_back(std::move(
info));
constexpr qsizetype size() const noexcept
constexpr const_iterator cbegin() const noexcept
const_iterator cbegin() const noexcept
const_iterator cend() const noexcept
static QString decodeName(const QByteArray &localFileName)
This does the reverse of QFile::encodeName() using localFileName.
\macro QT_RESTRICTED_CAST_FROM_ASCII
const QChar * constData() const
Returns a pointer to the data stored in the QString.
qsizetype size() const
Returns the number of characters in this string.
QChar * data()
Returns a pointer to the data stored in the QString.
static QString static QString qsizetype indexOf(QChar c, qsizetype from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QSet< QString >::iterator it
Combined button and popup list for selecting options.
#define qCInfo(category,...)
#define qCWarning(category,...)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLsizei const GLchar *const * path
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
static constexpr short MountSource
static constexpr short FsType
static std::vector< MountInfo > doParseMountInfo(const QByteArray &mountinfo, FilterMountInfo filter=FilterMountInfo::All)
static std::optional< dev_t > deviceNumber(QByteArrayView devno)
static constexpr short FieldCount
static constexpr short FsRoot
static QByteArray parseMangledPath(QByteArrayView path)
static const char MountInfoPath[]
static constexpr short MountOptions
static void tokenizeLine(std::array< QByteArrayView, FieldCount > &fields, QByteArrayView line)
static constexpr short DevNo
static constexpr short MountPoint
static constexpr short SuperOptions
static bool shouldIncludeFs(const QString &mountDir, const QByteArray &fsType)
QFileInfo info(fileName)
[8]