4#ifndef SHELLQUOTE_SHARED_H
5#define SHELLQUOTE_SHARED_H
8#include <QRegularExpression>
14 for (
int x = arg.size() - 1; x >= 0; --x) {
15 ushort c = arg.unicode()[x].unicode();
16 if ((c <
sizeof(iqm) * 8) && (iqm[c / 8] & (1 << (c & 7))))
25 static const uchar iqm[] = {
26 0xff, 0xff, 0xff, 0xff, 0xdf, 0x07, 0x00, 0xd8,
27 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x78
31 return QLatin1String(
"\"\"");
34 if (hasSpecialChars(ret, iqm)) {
35 ret.replace(QLatin1Char(
'\''), QLatin1String(
"'\\''"));
36 ret.prepend(QLatin1Char(
'\''));
37 ret.append(QLatin1Char(
'\''));
48 static const uchar iqm[] = {
49 0xff, 0xff, 0xff, 0xff, 0x45, 0x13, 0x00, 0x78,
50 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x10
54 return QLatin1String(
"\"\"");
57 if (hasSpecialChars(ret, iqm)) {
61 ret.replace(QRegularExpression(QLatin1String(
"(\\\\*)\"")), QLatin1String(
"\"\\1\\1\\^\"\""));
66 while (i > 0 && ret.at(i - 1) == QLatin1Char(
'\\'))
68 ret.insert(i, QLatin1Char(
'"'));
69 ret.prepend(QLatin1Char(
'"'));
76 if (QDir::separator() == QLatin1Char(
'\\'))
77 return shellQuoteWin(arg);
79 return shellQuoteUnix(arg);
StringType escapeDependencyPath(const StringType &path)
static QByteArray escapeAndEncodeDependencyPath(const QString &path)
static const bool mustReadOutputAnyway
static QStringList dependenciesForDepfile
bool checkCanImportFromRootPaths(const Options *options, const QString &absolutePath, const QString &moduleUrl)
bool checkArchitecture(const Options &options, const QString &fileName)
static const QHash< QByteArray, QByteArray > elfArchitectures
static QString batSuffixAppended(QString path)
QString architectureFromName(const QString &name)
QString fileArchitecture(const Options &options, const QString &path)
static QString execSuffixAppended(QString path)
QString defaultLibexecDir()
bool readDependenciesFromElf(Options *options, const QString &fileName, QSet< QString > *usedDependencies, QSet< QString > *remainingDependencies)
static QString llvmReadobjPath(const Options &options)
auto openProcess(const QString &command)
void deleteMissingFiles(const Options &options, const QDir &srcDir, const QDir &dstDir)
bool goodToCopy(const Options *options, const QString &file, QStringList *unmetDependencies)
static QString shellQuoteWin(const QString &arg)
static QString shellQuoteUnix(const QString &arg)
static QString shellQuote(const QString &arg)
static bool hasSpecialChars(const QString &arg, const uchar(&iqm)[16])
int main(int argc, char *argv[])
[ctor_close]
QHash< QString, QStringList > archExtraLibs
QMap< QString, QString > applicationPermissions
bool copyDependenciesOnly
bool generateJavaQmlComponents
QString currentArchitecture
QByteArray targetSdkVersion
void setCurrentQtArchitecture(const QString &arch, const QString &directory, const QHash< QString, QString > &directories)
QHash< QString, QString > qtDirectories
QString qtInstallDirectory
DeploymentMechanism deploymentMechanism
bool protectedAuthenticationPath
QStringList qmlImportPaths
bool qmlSkipImportScanning
QString sdkBuildToolsVersion
QString qtLibExecsDirectory
QHash< QString, QtInstallDirectoryWithTriple > architectures
std::vector< QString > rootPaths
std::vector< QString > extraLibraryDirs
QString applicationArguments
QString qmlImportScannerBinaryPath
QStringList androidDeployPlugins
QMap< QString, QString > modulePermissions
QHash< QString, QStringList > localLibs
QString qtPluginsDirectory
QHash< QString, QStringList > archExtraPlugins
QString applicationBinary
std::vector< QString > extraPrefixDirs
bool isZstdCompressionEnabled
QString androidSourceDirectory
QSet< QString > selectedJavaQmlComponents
bool operator==(const QtDependency &other) const
QtDependency(const QString &rpath, const QString &apath)
QHash< QString, QString > qtDirectories
QString qtInstallDirectory
QtInstallDirectoryWithTriple(const QString &dir=QString(), const QString &t=QString(), const QHash< QString, QString > &dirs=QHash< QString, QString >())
QString findInPath(const QString &file)