/*! \fn bool QDBusUtil::isValidObjectPath(const QString &path) Returns \c true if \a path is valid object path. Valid object paths follow the rules: \list \li start with the slash character ("/") \li do not end in a slash, unless the path is just the initial slash \li do not contain any two slashes in sequence \li contain slash-separated parts, each of which is composed of ASCII letters, digits and underscores ("_") \endlist */ bool isValidObjectPath(const QString &path) { if (path == QLatin1String("/")) return true; if (!path.startsWith(QLatin1Char('/')) || path.indexOf(QLatin1String("//")) != -1 || path.endsWith(QLatin1Char('/'))) return false; // it starts with /, so we skip the empty first part const auto parts = path.midRef(1).split(QLatin1Char('/')); for (const QStringRef &part : parts) if (!isValidPartOfObjectPath(part)) return false; return true; }
/*! \fn bool QDBusUtil::isValidObjectPath(const QString &path) Returns true if \a path is valid object path. Valid object paths follow the rules: \list \o start with the slash character ("/") \o do not end in a slash, unless the path is just the initial slash \o do not contain any two slashes in sequence \o contain slash-separated parts, each of which is composed of ASCII letters, digits and underscores ("_") \endlist */ bool isValidObjectPath(const QString &path) { if (path == QLatin1String("/")) return true; if (!path.startsWith(QLatin1Char('/')) || path.indexOf(QLatin1String("//")) != -1 || path.endsWith(QLatin1Char('/'))) return false; QStringList parts = path.split(QLatin1Char('/')); Q_ASSERT(parts.count() >= 1); parts.removeFirst(); // it starts with /, so we get an empty first part for (int i = 0; i < parts.count(); ++i) if (!isValidPartOfObjectPath(parts.at(i))) return false; return true; }