Skip to content

Commit

Permalink
QDir::listSeparator() and make windeployqt work in linux-mingw.
Browse files Browse the repository at this point in the history
  • Loading branch information
socketpair committed Dec 1, 2021
1 parent 147093e commit 15cdcff
Show file tree
Hide file tree
Showing 9 changed files with 12 additions and 25 deletions.
2 changes: 1 addition & 1 deletion qmake/generators/mac/pbuilder_pbx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1875,7 +1875,7 @@ ProjectBuilderMakefileGenerator::findProgram(const ProString &prog)
{
QString ret = prog.toQString();
if(QDir::isRelativePath(ret)) {
QStringList paths = QString(qgetenv("PATH")).split(':');
QStringList paths = QString(qgetenv("PATH")).split(QDir::listSeparator());
for(int i = 0; i < paths.size(); ++i) {
QString path = paths.at(i) + "/" + prog;
if(exists(path)) {
Expand Down
4 changes: 1 addition & 3 deletions qmake/library/ioutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,9 @@ QString IoUtils::binaryAbsLocation(const QString &argv0)
} else { // in the PATH
QByteArray pEnv = qgetenv("PATH");
QDir currentDir = QDir::current();
QStringList paths = QString::fromLocal8Bit(pEnv).split(QDir::listSeparator());
#ifdef Q_OS_WIN
QStringList paths = QString::fromLocal8Bit(pEnv).split(QLatin1String(";"));
paths.prepend(QLatin1String("."));
#else
QStringList paths = QString::fromLocal8Bit(pEnv).split(QLatin1String(":"));
#endif
for (QStringList::const_iterator p = paths.constBegin(); p != paths.constEnd(); ++p) {
if ((*p).isEmpty())
Expand Down
2 changes: 1 addition & 1 deletion qmake/library/qmakeevaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1023,7 +1023,7 @@ static ProString msvcArchitecture(const QString &vcInstallDir, const QString &pa
QString vcBinDir = vcInstallDir;
if (vcBinDir.endsWith(QLatin1Char('\\')))
vcBinDir.chop(1);
const auto dirs = pathVar.split(QLatin1Char(';'), Qt::SkipEmptyParts);
const auto dirs = pathVar.split(QDir::listSeparator(), Qt::SkipEmptyParts);
for (const QString &dir : dirs) {
if (!dir.startsWith(vcBinDir, Qt::CaseInsensitive))
continue;
Expand Down
9 changes: 2 additions & 7 deletions qmake/library/qmakeglobals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,8 @@ QMakeGlobals::QMakeGlobals()
#ifdef PROEVALUATOR_DEBUG
debugLevel = 0;
#endif
#ifdef Q_OS_WIN
dirlist_sep = QLatin1Char(';');
dir_sep = QLatin1Char('\\');
#else
dirlist_sep = QLatin1Char(':');
dir_sep = QLatin1Char('/');
#endif
dirlist_sep = QDir::listSeparator();
dir_sep = QDir::separator();
}

QMakeGlobals::~QMakeGlobals()
Expand Down
6 changes: 3 additions & 3 deletions src/corelib/plugin/qsystemlibrary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,16 @@ HINSTANCE QSystemLibrary::load(const wchar_t *libraryName, bool onlySystemDirect

if (!onlySystemDirectory) {
const QString PATH(QLatin1String(qgetenv("PATH").constData()));
searchOrder << PATH.split(QLatin1Char(';'), Qt::SkipEmptyParts);
searchOrder << PATH.split(QDir::listSeparator(), Qt::SkipEmptyParts);
}
QString fileName = QString::fromWCharArray(libraryName);
fileName.append(QLatin1String(".dll"));

// Start looking in the order specified
for (int i = 0; i < searchOrder.count(); ++i) {
QString fullPathAttempt = searchOrder.at(i);
if (!fullPathAttempt.endsWith(QLatin1Char('\\'))) {
fullPathAttempt.append(QLatin1Char('\\'));
if (!fullPathAttempt.endsWith(QDir::separator())) {
fullPathAttempt.append(QDir::separator());
}
fullPathAttempt.append(fileName);
HINSTANCE inst = ::LoadLibrary(reinterpret_cast<const wchar_t *>(fullPathAttempt.utf16()));
Expand Down
8 changes: 1 addition & 7 deletions src/tools/androiddeployqt/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2499,13 +2499,7 @@ bool createAndroidProject(const Options &options)
QString findInPath(const QString &fileName)
{
const QString path = QString::fromLocal8Bit(qgetenv("PATH"));
#if defined(Q_OS_WIN32)
QLatin1Char separator(';');
#else
QLatin1Char separator(':');
#endif

const QStringList paths = path.split(separator);
const QStringList paths = path.split(QDir::listSeparator());
for (const QString &path : paths) {
QFileInfo fileInfo(path + QLatin1Char('/') + fileName);
if (fileInfo.exists() && fileInfo.isFile() && fileInfo.isExecutable())
Expand Down
2 changes: 1 addition & 1 deletion src/tools/windeployqt/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1648,7 +1648,7 @@ int main(int argc, char **argv)
const QByteArray qtBinPath = QFile::encodeName(QDir::toNativeSeparators(QCoreApplication::applicationDirPath()));
QByteArray path = qgetenv("PATH");
if (!path.contains(qtBinPath)) { // QTBUG-39177, ensure Qt is in the path so that qt.conf is taken into account.
path += ';';
path += QDir::listSeparator();
path += qtBinPath;
qputenv("PATH", path);
}
Expand Down
2 changes: 1 addition & 1 deletion src/tools/windeployqt/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ QString normalizeFileName(const QString &name)
// Find a tool binary in the Windows SDK 8
QString findSdkTool(const QString &tool)
{
QStringList paths = QString::fromLocal8Bit(qgetenv("PATH")).split(QLatin1Char(';'));
QStringList paths = QString::fromLocal8Bit(qgetenv("PATH")).split(QDir::listSeparator());
const QByteArray sdkDir = qgetenv("WindowsSdkDir");
if (!sdkDir.isEmpty())
paths.prepend(QDir::cleanPath(QString::fromLocal8Bit(sdkDir)) + QLatin1String("/Tools/x64"));
Expand Down
2 changes: 1 addition & 1 deletion tests/auto/tools/windeployqt/tst_windeployqt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ void tst_windeployqt::deploy()
const QString qtBinDir = QDir::toNativeSeparators(QLibraryInfo::path(QLibraryInfo::BinariesPath));
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
const QString pathKey = QLatin1String("PATH");
const QChar pathSeparator(QLatin1Char(';')); // ### fixme: Qt 5.6: QDir::listSeparator()
const QChar pathSeparator(QDir::listSeparator());
const QString origPath = env.value(pathKey);
QString newPath;
const QStringList pathElements = origPath.split(pathSeparator, Qt::SkipEmptyParts);
Expand Down

0 comments on commit 15cdcff

Please sign in to comment.