5#include <QtCore/qdir.h>
6#include <QtCore/qset.h>
7#include <QtCore/qstringbuilder.h>
8#include <QtCore/private/qabstractfileengine_p.h>
9#ifdef QT_BUILD_CORE_LIB
10#include <QtCore/private/qresource_p.h>
12#include <QtCore/private/qduplicatetracker_p.h>
28 const QChar slash(u
'/');
31 QSet<QString> nonSymlinks;
32 QDuplicateTracker<QString> known;
37 if (separatorPos == 0) {
38 if (tmpPath.size() >= 2 && tmpPath.at(0) == slash && tmpPath.at(1) == slash) {
40 separatorPos = tmpPath.indexOf(slash, 2);
41 }
else if (tmpPath.size() >= 3 && tmpPath.at(1) == u
':' && tmpPath.at(2) == slash) {
46 if (separatorPos != -1)
48 separatorPos = tmpPath.indexOf(slash, separatorPos + 1);
49 QString prefix = separatorPos == -1 ? tmpPath : tmpPath.
left(separatorPos);
50 if (!nonSymlinks.contains(prefix)) {
54 if (separatorPos != -1) {
55 if (fi.isDir() && !
target.endsWith(slash))
62 if (known.hasSeen(tmpPath))
65 nonSymlinks.insert(prefix);
68 }
while (separatorPos != -1);
99 std::unique_ptr<QAbstractFileEngine> &
engine,
100 bool resolvingEntry =
false)
106#if defined(QT_BUILD_CORE_LIB)
107 for (
qsizetype prefixSeparator = 0; prefixSeparator < filePath.
size(); ++prefixSeparator) {
108 QChar const ch = filePath[prefixSeparator];
113 if (prefixSeparator == 0) {
114 engine = std::make_unique<QResourceFileEngine>(filePath);
118 if (prefixSeparator == 1)
122 for (
int i = 0;
i <
paths.size();
i++) {
156std::unique_ptr<QAbstractFileEngine>
160 std::unique_ptr<QAbstractFileEngine>
engine;
206 return junctionTarget(link,
data);
static QStringList searchPaths(const QString &prefix)
static QString cleanPath(const QString &path)
Returns path with directory separators normalized (that is, platform-native separators converted to "...
static bool fillMetaData(const QFileSystemEntry &entry, QFileSystemMetaData &data, QFileSystemMetaData::MetaDataFlags what)
static std::unique_ptr< QAbstractFileEngine > createLegacyEngine(QFileSystemEntry &entry, QFileSystemMetaData &data)
static QFileSystemEntry getJunctionTarget(const QFileSystemEntry &link, QFileSystemMetaData &data)
static QString resolveUserName(const QFileSystemEntry &entry, QFileSystemMetaData &data)
static QString resolveGroupName(const QFileSystemEntry &entry, QFileSystemMetaData &data)
constexpr QStringView mid(qsizetype pos, qsizetype n=-1) const noexcept
Returns the substring of length length starting at position start in this object.
\macro QT_RESTRICTED_CAST_FROM_ASCII
QString left(qsizetype n) const &
qsizetype size() const noexcept
Returns the number of characters in this string.
QString & append(QChar c)
Combined button and popup list for selecting options.
std::unique_ptr< QAbstractFileEngine > qt_custom_file_engine_handler_create(const QString &path)
static jboolean copy(JNIEnv *, jobject)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
static bool _q_createLegacyEngine_recursive(QFileSystemEntry &entry, QFileSystemMetaData &data, std::unique_ptr< QAbstractFileEngine > &engine, bool resolvingEntry=false)
static bool _q_checkEntry(QFileSystemEntry &entry, QFileSystemMetaData &data, bool resolvingEntry)
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLsizei const GLuint * paths
GLsizei const GLchar *const * path