From 3c6f76d16c142c2b98564fc9167b67564ead7fe5 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 31 Aug 2012 16:39:20 +0200 Subject: [PATCH] HostOsInfo: Add some more useful abstractions. Namely: - path list separator - executable suffix - file name case sensitivity All of these are duplicated in various places in the current Creator code. Change-Id: I86eb4662fa3c2071759bd728cae1aaf7111ae686 Reviewed-by: Oswald Buddenhagen --- src/libs/utils/environment.cpp | 14 +++++----- src/libs/utils/fileutils.cpp | 13 ++++------ src/libs/utils/fileutils.h | 1 - src/libs/utils/hostosinfo.h | 26 +++++++++++++++++++ src/libs/utils/pathlisteditor.cpp | 12 +++------ src/libs/utils/pathlisteditor.h | 2 -- src/libs/utils/synchronousprocess.cpp | 7 +---- src/libs/utils/synchronousprocess.h | 1 - src/plugins/android/androidconfigurations.cpp | 16 ++++++------ src/plugins/android/androidconstants.h | 2 -- src/plugins/android/androidsettingswidget.cpp | 6 ++--- src/plugins/clearcase/clearcasesettings.cpp | 5 +--- src/plugins/cvs/cvssettings.cpp | 6 +---- src/plugins/debugger/gdb/gdbengine.cpp | 10 ++++--- .../debugger/gdb/remotegdbserveradapter.cpp | 9 +++---- src/plugins/git/gitclient.cpp | 2 +- src/plugins/git/gitsettings.cpp | 2 +- src/plugins/madde/maemoconstants.h | 6 ----- src/plugins/madde/maemoglobal.cpp | 8 ++---- src/plugins/perforce/perforcesettings.cpp | 5 +--- .../projectexplorer/settingsaccessor.cpp | 12 ++------- .../instances/nodeinstanceserverproxy.cpp | 13 +++------- .../metainfo/subcomponentmanager.cpp | 4 +-- .../qmljseditor/qmljspreviewrunner.cpp | 3 ++- src/plugins/qmljstools/qmljsmodelmanager.cpp | 4 +-- src/plugins/qnx/blackberryqtversion.cpp | 4 +-- src/plugins/qt4projectmanager/qt4nodes.cpp | 3 +-- src/plugins/subversion/subversionsettings.cpp | 5 +--- 28 files changed, 84 insertions(+), 117 deletions(-) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 220efbef15..427b333cee 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -62,11 +62,6 @@ Q_GLOBAL_STATIC(SystemEnvironment, staticSystemEnvironment) namespace Utils { -static QChar varSeparator() -{ - return HostOsInfo::isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); -} - static bool sortEnvironmentItem(const EnvironmentItem &a, const EnvironmentItem &b) { return a.name < b.name; @@ -172,12 +167,14 @@ void Environment::prependOrSet(const QString&key, const QString &value, const QS void Environment::appendOrSetPath(const QString &value) { - appendOrSet(QLatin1String("PATH"), QDir::toNativeSeparators(value), QString(varSeparator())); + appendOrSet(QLatin1String("PATH"), QDir::toNativeSeparators(value), + QString(HostOsInfo::pathListSeparator())); } void Environment::prependOrSetPath(const QString &value) { - prependOrSet(QLatin1String("PATH"), QDir::toNativeSeparators(value), QString(varSeparator())); + prependOrSet(QLatin1String("PATH"), QDir::toNativeSeparators(value), + QString(HostOsInfo::pathListSeparator())); } void Environment::prependOrSetLibrarySearchPath(const QString &value) @@ -271,7 +268,8 @@ QString Environment::searchInPath(const QStringList &executables, QStringList Environment::path() const { - return m_values.value(QLatin1String("PATH")).split(varSeparator(), QString::SkipEmptyParts); + return m_values.value(QLatin1String("PATH")).split(HostOsInfo::pathListSeparator(), + QString::SkipEmptyParts); } QString Environment::value(const QString &key) const diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 3ef845514e..e31412ef05 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -413,9 +413,6 @@ TempFileSaver::~TempFileSaver() On windows filenames are compared case insensitively. */ -const Qt::CaseSensitivity FileName::cs - = HostOsInfo::isWindowsHost() ? Qt::CaseInsensitive : Qt::CaseSensitive; - FileName::FileName() : QString() { @@ -492,7 +489,7 @@ FileName::FileName(const QString &string) bool FileName::operator==(const FileName &other) const { - return QString::compare(*this, other, cs) == 0; + return QString::compare(*this, other, HostOsInfo::fileNameCaseSensitivity()) == 0; } bool FileName::operator!=(const FileName &other) const @@ -502,12 +499,12 @@ bool FileName::operator!=(const FileName &other) const bool FileName::operator<(const FileName &other) const { - return QString::compare(*this, other, cs) < 0; + return QString::compare(*this, other, HostOsInfo::fileNameCaseSensitivity()) < 0; } bool FileName::operator<=(const FileName &other) const { - return QString::compare(*this, other, cs) <= 0; + return QString::compare(*this, other, HostOsInfo::fileNameCaseSensitivity()) <= 0; } bool FileName::operator>(const FileName &other) const @@ -523,7 +520,7 @@ bool FileName::operator>=(const FileName &other) const /// \returns whether FileName is a child of \a s bool FileName::isChildOf(const FileName &s) const { - if (!QString::startsWith(s, cs)) + if (!QString::startsWith(s, HostOsInfo::fileNameCaseSensitivity())) return false; if (size() <= s.size()) return false; @@ -539,7 +536,7 @@ bool FileName::isChildOf(const QDir &dir) const /// \returns whether FileName endsWith \a s bool FileName::endsWith(const QString &s) const { - return QString::endsWith(s, cs); + return QString::endsWith(s, HostOsInfo::fileNameCaseSensitivity()); } /// \returns the relativeChildPath of FileName to parent if FileName is a child of parent diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index 2047d91193..a52527d56f 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -175,7 +175,6 @@ public: using QString::isNull; using QString::clear; private: - static const Qt::CaseSensitivity cs; FileName(const QString &string); }; diff --git a/src/libs/utils/hostosinfo.h b/src/libs/utils/hostosinfo.h index 84df1f0547..b5d85f2c62 100644 --- a/src/libs/utils/hostosinfo.h +++ b/src/libs/utils/hostosinfo.h @@ -32,6 +32,14 @@ #include "utils_global.h" +#include + +#ifdef Q_OS_WIN +#define QTC_HOST_EXE_SUFFIX ".exe" +#else +#define QTC_HOST_EXE_SUFFIX "" +#endif // Q_OS_WIN + namespace Utils { class QTCREATOR_UTILS_EXPORT HostOsInfo @@ -46,6 +54,24 @@ public: static bool isLinuxHost() { return hostOs() == HostOsLinux; } static bool isMacHost() { return hostOs() == HostOsMac; } static inline bool isAnyUnixHost(); + + static QString appendExecutableSuffix(const QString &executable) + { + QString finalName = executable; + if (isWindowsHost()) + finalName += QLatin1String(QTC_HOST_EXE_SUFFIX); + return finalName; + } + + static Qt::CaseSensitivity fileNameCaseSensitivity() + { + return isWindowsHost() ? Qt::CaseInsensitive: Qt::CaseSensitive; + } + + static QChar pathListSeparator() + { + return isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); + } }; HostOsInfo::HostOs HostOsInfo::hostOs() diff --git a/src/libs/utils/pathlisteditor.cpp b/src/libs/utils/pathlisteditor.cpp index df4c64652c..4c72943f68 100644 --- a/src/libs/utils/pathlisteditor.cpp +++ b/src/libs/utils/pathlisteditor.cpp @@ -94,7 +94,7 @@ void PathListPlainTextEdit::insertFromMimeData(const QMimeData *source) if (source->hasText()) { // replace separator QString text = source->text().trimmed(); - text.replace(PathListEditor::separator(), QLatin1Char('\n')); + text.replace(HostOsInfo::pathListSeparator(), QLatin1Char('\n')); QSharedPointer fixed(new QMimeData); fixed->setText(text); QPlainTextEdit::insertFromMimeData(fixed.data()); @@ -190,7 +190,7 @@ int PathListEditor::lastAddActionIndex() QString PathListEditor::pathListString() const { - return pathList().join(separator()); + return pathList().join(HostOsInfo::pathListSeparator()); } QStringList PathListEditor::pathList() const @@ -216,7 +216,8 @@ void PathListEditor::setPathList(const QString &pathString) if (pathString.isEmpty()) { clear(); } else { - setPathList(pathString.split(separator(), QString::SkipEmptyParts)); + setPathList(pathString.split(HostOsInfo::pathListSeparator(), + QString::SkipEmptyParts)); } } @@ -254,11 +255,6 @@ void PathListEditor::slotInsert() insertPathAtCursor(QDir::toNativeSeparators(dir)); } -QChar PathListEditor::separator() -{ - return HostOsInfo::isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); -} - // Add a button "Import from 'Path'" void PathListEditor::addEnvVariableImportAction(const QString &var) { diff --git a/src/libs/utils/pathlisteditor.h b/src/libs/utils/pathlisteditor.h index 7fa6d82d1b..f782583576 100644 --- a/src/libs/utils/pathlisteditor.h +++ b/src/libs/utils/pathlisteditor.h @@ -54,8 +54,6 @@ public: QStringList pathList() const; QString fileDialogTitle() const; - static QChar separator(); - // Add a convenience action "Import from 'Path'" (environment variable) void addEnvVariableImportAction(const QString &var); diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp index b2b540cae1..835280fac5 100644 --- a/src/libs/utils/synchronousprocess.cpp +++ b/src/libs/utils/synchronousprocess.cpp @@ -665,7 +665,7 @@ QString SynchronousProcess::locateBinary(const QString &path, const QString &bin return currentDirBinary; } - const QStringList paths = path.split(pathSeparator()); + const QStringList paths = path.split(HostOsInfo::pathListSeparator()); if (paths.empty()) return QString(); const QStringList::const_iterator cend = paths.constEnd(); @@ -684,9 +684,4 @@ QString SynchronousProcess::locateBinary(const QString &binary) return locateBinary(QString::fromLocal8Bit(path), binary); } -QChar SynchronousProcess::pathSeparator() -{ - return HostOsInfo::isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); -} - } // namespace Utils diff --git a/src/libs/utils/synchronousprocess.h b/src/libs/utils/synchronousprocess.h index bc953c0a01..ee2f283c64 100644 --- a/src/libs/utils/synchronousprocess.h +++ b/src/libs/utils/synchronousprocess.h @@ -140,7 +140,6 @@ public: // and file types. static QString locateBinary(const QString &binary); static QString locateBinary(const QString &path, const QString &binary); - static QChar pathSeparator(); signals: void stdOut(const QByteArray &data, bool firstTime); diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 5199a54621..17e28257a7 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -264,7 +264,7 @@ QStringList AndroidConfigurations::ndkToolchainVersions() const FileName AndroidConfigurations::adbToolPath() const { FileName path = m_config.sdkLocation; - return path.appendPath(QLatin1String("platform-tools/adb" ANDROID_EXE_SUFFIX)); + return path.appendPath(QLatin1String("platform-tools/adb" QTC_HOST_EXE_SUFFIX)); } FileName AndroidConfigurations::androidToolPath() const @@ -273,7 +273,7 @@ FileName AndroidConfigurations::androidToolPath() const // I want to switch from using android.bat to using an executable. All it really does is call // Java and I've made some progress on it. So if android.exe exists, return that instead. FileName path = m_config.sdkLocation; - path.appendPath(QLatin1String("tools/android" ANDROID_EXE_SUFFIX)); + path.appendPath(QLatin1String("tools/android" QTC_HOST_EXE_SUFFIX)); if (path.toFileInfo().exists()) return path; path = m_config.sdkLocation; @@ -295,7 +295,7 @@ FileName AndroidConfigurations::antToolPath() const FileName AndroidConfigurations::emulatorToolPath() const { FileName path = m_config.sdkLocation; - return path.appendPath(QLatin1String("tools/emulator" ANDROID_EXE_SUFFIX)); + return path.appendPath(QLatin1String("tools/emulator" QTC_HOST_EXE_SUFFIX)); } FileName AndroidConfigurations::toolPath(Abi::Architecture architecture) const @@ -310,17 +310,17 @@ FileName AndroidConfigurations::toolPath(Abi::Architecture architecture) const FileName AndroidConfigurations::stripPath(Abi::Architecture architecture) const { - return toolPath(architecture).append(QLatin1String("-strip" ANDROID_EXE_SUFFIX)); + return toolPath(architecture).append(QLatin1String("-strip" QTC_HOST_EXE_SUFFIX)); } FileName AndroidConfigurations::readelfPath(Abi::Architecture architecture) const { - return toolPath(architecture).append(QLatin1String("-readelf" ANDROID_EXE_SUFFIX)); + return toolPath(architecture).append(QLatin1String("-readelf" QTC_HOST_EXE_SUFFIX)); } FileName AndroidConfigurations::gccPath(Abi::Architecture architecture) const { - return toolPath(architecture).append(QLatin1String("-gcc" ANDROID_EXE_SUFFIX)); + return toolPath(architecture).append(QLatin1String("-gcc" QTC_HOST_EXE_SUFFIX)); } FileName AndroidConfigurations::gdbServerPath(Abi::Architecture architecture) const @@ -362,7 +362,7 @@ FileName AndroidConfigurations::gdbPath(Abi::Architecture architecture) const } if (!gdbPath.isEmpty()) return gdbPath; - return toolPath(architecture).append(QLatin1String("-gdb" ANDROID_EXE_SUFFIX)); + return toolPath(architecture).append(QLatin1String("-gdb" QTC_HOST_EXE_SUFFIX)); } FileName AndroidConfigurations::openJDKPath() const @@ -391,7 +391,7 @@ FileName AndroidConfigurations::jarsignerPath() const FileName AndroidConfigurations::zipalignPath() const { Utils::FileName path = m_config.sdkLocation; - return path.appendPath(QLatin1String("tools/zipalign" ANDROID_EXE_SUFFIX)); + return path.appendPath(QLatin1String("tools/zipalign" QTC_HOST_EXE_SUFFIX)); } QString AndroidConfigurations::getDeployDeviceSerialNumber(int *apiLevel) const diff --git a/src/plugins/android/androidconstants.h b/src/plugins/android/androidconstants.h index 19d6157752..82440f5fa0 100644 --- a/src/plugins/android/androidconstants.h +++ b/src/plugins/android/androidconstants.h @@ -45,10 +45,8 @@ enum AndroidQemuStatus { }; #ifdef Q_OS_WIN32 -#define ANDROID_EXE_SUFFIX ".exe" #define ANDROID_BAT_SUFFIX ".bat" #else -#define ANDROID_EXE_SUFFIX "" #define ANDROID_BAT_SUFFIX "" #endif diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 259fee43f7..ae8d2b7283 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -190,10 +190,10 @@ bool AndroidSettingsWidget::checkSDK(const Utils::FileName &location) Utils::FileName androidExe = location; Utils::FileName androidBat = location; Utils::FileName emulator = location; - if (!adb.appendPath(QLatin1String("platform-tools/adb" ANDROID_EXE_SUFFIX)).toFileInfo().exists() - || (!androidExe.appendPath(QLatin1String("/tools/android" ANDROID_EXE_SUFFIX)).toFileInfo().exists() + if (!adb.appendPath(QLatin1String("platform-tools/adb" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists() + || (!androidExe.appendPath(QLatin1String("/tools/android" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists() && !androidBat.appendPath(QLatin1String("/tools/android" ANDROID_BAT_SUFFIX)).toFileInfo().exists()) - || !emulator.appendPath(QLatin1String("/tools/emulator" ANDROID_EXE_SUFFIX)).toFileInfo().exists()) { + || !emulator.appendPath(QLatin1String("/tools/emulator" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists()) { QMessageBox::critical(this, tr("Android SDK Folder"), tr("\"%1\" doesn't seem to be an Android SDK top folder").arg(location.toUserOutput())); return false; } diff --git a/src/plugins/clearcase/clearcasesettings.cpp b/src/plugins/clearcase/clearcasesettings.cpp index ba6f4fb896..80c1da8327 100644 --- a/src/plugins/clearcase/clearcasesettings.cpp +++ b/src/plugins/clearcase/clearcasesettings.cpp @@ -58,10 +58,7 @@ enum { defaultTimeOutS = 30, defaultHistoryCount = 50 }; static QString defaultCommand() { - QString rc(QLatin1String("cleartool")); - if (Utils::HostOsInfo::isWindowsHost()) - rc.append(QLatin1String(".exe")); - return rc; + return QLatin1String("cleartool" QTC_HOST_EXE_SUFFIX); } using namespace ClearCase::Internal; diff --git a/src/plugins/cvs/cvssettings.cpp b/src/plugins/cvs/cvssettings.cpp index 7a00c132a5..59466fee8f 100644 --- a/src/plugins/cvs/cvssettings.cpp +++ b/src/plugins/cvs/cvssettings.cpp @@ -49,11 +49,7 @@ enum { defaultTimeOutS = 30 }; static QString defaultCommand() { - QString rc; - rc = QLatin1String("cvs"); - if (Utils::HostOsInfo::isWindowsHost()) - rc.append(QLatin1String(".exe")); - return rc; + return QLatin1String("cvs" QTC_HOST_EXE_SUFFIX); } namespace Cvs { diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 0d622d8f52..0ce6c5269e 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4982,15 +4982,17 @@ void GdbEngine::finishInferiorSetup() void GdbEngine::handleDebugInfoLocation(const GdbResponse &response) { - const char pathSep = HostOsInfo::isWindowsHost() ? ';' : ':'; if (response.resultClass == GdbResultDone) { const QByteArray debugInfoLocation = startParameters().debugInfoLocation.toLocal8Bit(); if (QFile::exists(QString::fromLocal8Bit(debugInfoLocation))) { const QByteArray curDebugInfoLocations = response.consoleStreamOutput.split('"').value(1); - if (curDebugInfoLocations.isEmpty()) + if (curDebugInfoLocations.isEmpty()) { postCommand("set debug-file-directory " + debugInfoLocation); - else - postCommand("set debug-file-directory " + debugInfoLocation + pathSep + curDebugInfoLocations); + } else { + postCommand("set debug-file-directory " + debugInfoLocation + + HostOsInfo::pathListSeparator().toLatin1() + + curDebugInfoLocations); + } } } } diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index f895ca4dc0..694e3163c8 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -37,6 +37,7 @@ #include "gdbengine.h" #include "gdbmi.h" +#include #include #include #include @@ -157,11 +158,6 @@ void GdbRemoteServerEngine::setupInferior() { QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state()); const DebuggerStartParameters &sp = startParameters(); -#ifdef Q_OS_WIN - #define PATHSEP ";" -#else - #define PATHSEP ":" -#endif QString executableFileName; if (!sp.executable.isEmpty()) { QFileInfo fi(sp.executable); @@ -179,7 +175,8 @@ void GdbRemoteServerEngine::setupInferior() // if (!remoteArch.isEmpty()) // postCommand("set architecture " + remoteArch); - const QString solibSearchPath = sp.solibSearchPath.join(QLatin1String(PATHSEP)); + const QString solibSearchPath + = sp.solibSearchPath.join(QString(Utils::HostOsInfo::pathListSeparator())); if (!solibSearchPath.isEmpty()) postCommand("set solib-search-path " + solibSearchPath.toLocal8Bit()); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 1c60966bff..aef4c078b5 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1445,7 +1445,7 @@ QProcessEnvironment GitClient::processEnvironment() const QProcessEnvironment environment = QProcessEnvironment::systemEnvironment(); QString gitPath = settings()->stringValue(GitSettings::pathKey); if (!gitPath.isEmpty()) { - gitPath += Utils::SynchronousProcess::pathSeparator(); + gitPath += Utils::HostOsInfo::pathListSeparator(); gitPath += environment.value(QLatin1String("PATH")); environment.insert(QLatin1String("PATH"), gitPath); } diff --git a/src/plugins/git/gitsettings.cpp b/src/plugins/git/gitsettings.cpp index 5ec9297a86..5d61a3c966 100644 --- a/src/plugins/git/gitsettings.cpp +++ b/src/plugins/git/gitsettings.cpp @@ -84,7 +84,7 @@ QString GitSettings::gitBinaryPath(bool *ok, QString *errorMessage) const QString systemPath = QString::fromLocal8Bit(qgetenv("PATH")); if (!systemPath.isEmpty()) { if (!currentPath.isEmpty()) - currentPath.append(Utils::SynchronousProcess::pathSeparator()); + currentPath.append(Utils::HostOsInfo::pathListSeparator()); currentPath.append(systemPath); } // Search in path? diff --git a/src/plugins/madde/maemoconstants.h b/src/plugins/madde/maemoconstants.h index 72ea16bc3f..2cbb0b1bc7 100644 --- a/src/plugins/madde/maemoconstants.h +++ b/src/plugins/madde/maemoconstants.h @@ -40,12 +40,6 @@ const char HarmattanOsType[] = "HarmattanOsType"; #define PREFIX "Qt4ProjectManager.MaemoRunConfiguration" -#ifdef Q_OS_WIN32 -#define EXEC_SUFFIX ".exe" -#else -#define EXEC_SUFFIX "" -#endif - static const char MAEMO_RC_ID_PREFIX[] = PREFIX ":"; static const QLatin1String LastDeployedHostsKey(PREFIX ".LastDeployedHosts"); diff --git a/src/plugins/madde/maemoglobal.cpp b/src/plugins/madde/maemoglobal.cpp index f8777d5b0e..29f07e2e7d 100644 --- a/src/plugins/madde/maemoglobal.cpp +++ b/src/plugins/madde/maemoglobal.cpp @@ -56,9 +56,7 @@ using namespace Utils; namespace Madde { namespace Internal { -namespace { -static const QLatin1String binQmake("/bin/qmake" EXEC_SUFFIX); -} // namespace +static const QString binQmake = QLatin1String("/bin/qmake" QTC_HOST_EXE_SUFFIX); bool MaemoGlobal::hasMaemoDevice(const Kit *k) { @@ -176,9 +174,7 @@ FileName MaemoGlobal::maddeRoot(const Kit *k) QString MaemoGlobal::targetRoot(const QString &qmakePath) { - const Qt::CaseSensitivity cs = HostOsInfo::isWindowsHost() - ? Qt::CaseInsensitive : Qt::CaseSensitive; - return QDir::cleanPath(qmakePath).remove(binQmake, cs); + return QDir::cleanPath(qmakePath).remove(binQmake, HostOsInfo::fileNameCaseSensitivity()); } QString MaemoGlobal::targetName(const QString &qmakePath) diff --git a/src/plugins/perforce/perforcesettings.cpp b/src/plugins/perforce/perforcesettings.cpp index bb659b81ec..729ddd4770 100644 --- a/src/plugins/perforce/perforcesettings.cpp +++ b/src/plugins/perforce/perforcesettings.cpp @@ -58,10 +58,7 @@ enum { defaultTimeOutS = 30, defaultLogCount = 1000 }; static QString defaultCommand() { - QString rc = QLatin1String("p4"); - if (Utils::HostOsInfo::isWindowsHost()) - rc.append(QLatin1String(".exe")); - return rc; + return QLatin1String("p4" QTC_HOST_EXE_SUFFIX); } namespace Perforce { diff --git a/src/plugins/projectexplorer/settingsaccessor.cpp b/src/plugins/projectexplorer/settingsaccessor.cpp index 5c53feb48c..b6553eecf1 100644 --- a/src/plugins/projectexplorer/settingsaccessor.cpp +++ b/src/plugins/projectexplorer/settingsaccessor.cpp @@ -2543,16 +2543,8 @@ void Version11Handler::addRunConfigurations(Kit *k, static QString targetRoot(const QString &qmakePath) { - Qt::CaseSensitivity cs; - QString binQmake; - if (Utils::HostOsInfo::isWindowsHost()) { - cs = Qt::CaseInsensitive; - binQmake = "/bin/qmake.exe"; - } else { - cs = Qt::CaseSensitive; - binQmake = "/bin/qmake"; - } - return QDir::cleanPath(qmakePath).remove(binQmake, cs); + return QDir::cleanPath(qmakePath).remove(QLatin1String("/bin/qmake" QTC_HOST_EXE_SUFFIX), + Utils::HostOsInfo::fileNameCaseSensitivity()); } static QString maddeRoot(const QString &qmakePath) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index ad0e446c30..4d34d413b5 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -444,16 +444,9 @@ void NodeInstanceServerProxy::readThirdDataStream() QString NodeInstanceServerProxy::qmlPuppetApplicationName() const { - QString appName; - if (hasQtQuick2(m_nodeInstanceView.data())) { - appName = QLatin1String("qml2puppet"); - } else { - appName = QLatin1String("qmlpuppet"); - } - if (Utils::HostOsInfo::isWindowsHost()) - appName += QLatin1String(".exe"); - - return appName; + if (hasQtQuick2(m_nodeInstanceView.data())) + return QLatin1String("qml2puppet" QTC_HOST_EXE_SUFFIX); + return QLatin1String("qmlpuppet" QTC_HOST_EXE_SUFFIX); } QString NodeInstanceServerProxy::macOSBundlePath(const QString &path) const diff --git a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp index be56367eca..941c7a567d 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/subcomponentmanager.cpp @@ -58,8 +58,8 @@ static inline QStringList importPaths() { // env import paths QByteArray envImportPath = qgetenv("QML_IMPORT_PATH"); if (!envImportPath.isEmpty()) { - const QChar sep = Utils::HostOsInfo::isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); - paths = QString::fromLatin1(envImportPath).split(sep, QString::SkipEmptyParts); + paths = QString::fromLatin1(envImportPath) + .split(Utils::HostOsInfo::pathListSeparator(), QString::SkipEmptyParts); } return paths; diff --git a/src/plugins/qmljseditor/qmljspreviewrunner.cpp b/src/plugins/qmljseditor/qmljspreviewrunner.cpp index ed37b59763..31df5c6c37 100644 --- a/src/plugins/qmljseditor/qmljspreviewrunner.cpp +++ b/src/plugins/qmljseditor/qmljspreviewrunner.cpp @@ -31,6 +31,7 @@ #include "qmljspreviewrunner.h" #include +#include #include #include @@ -47,7 +48,7 @@ QmlJSPreviewRunner::QmlJSPreviewRunner(QObject *parent) : { // prepend creator/bin dir to search path (only useful for special creator-qml package) const QString searchPath = QCoreApplication::applicationDirPath() - + Utils::SynchronousProcess::pathSeparator() + + Utils::HostOsInfo::pathListSeparator() + QString(qgetenv("PATH")); m_qmlViewerDefaultPath = Utils::SynchronousProcess::locateBinary(searchPath, QLatin1String("qmlviewer")); diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index abbd051f13..a8128b07db 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -655,8 +655,8 @@ static QStringList environmentImportPaths() QByteArray envImportPath = qgetenv("QML_IMPORT_PATH"); - const QChar pathSep = Utils::HostOsInfo::isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); - foreach (const QString &path, QString::fromLatin1(envImportPath).split(pathSep, QString::SkipEmptyParts)) { + foreach (const QString &path, QString::fromLatin1(envImportPath) + .split(Utils::HostOsInfo::pathListSeparator(), QString::SkipEmptyParts)) { QString canonicalPath = QDir(path).canonicalPath(); if (!canonicalPath.isEmpty() && !paths.contains(canonicalPath)) paths.append(canonicalPath); diff --git a/src/plugins/qnx/blackberryqtversion.cpp b/src/plugins/qnx/blackberryqtversion.cpp index 3e86121d4c..5c36420789 100644 --- a/src/plugins/qnx/blackberryqtversion.cpp +++ b/src/plugins/qnx/blackberryqtversion.cpp @@ -73,8 +73,8 @@ QMultiMap parseEnvironmentFile(const QString &fileName) QMapIterator it(fileContent); while (it.hasNext()) { it.next(); - const QChar sep = Utils::HostOsInfo::isWindowsHost() ? QLatin1Char(';') : QLatin1Char(':'); - const QStringList values = it.value().split(sep); + const QStringList values + = it.value().split(Utils::HostOsInfo::pathListSeparator()); QString key = it.key(); foreach (const QString &value, values) { const QString ownKeyAsWindowsVar = QLatin1Char('%') + key + QLatin1Char('%'); diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 5be14c1e85..7913f027fd 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -2270,8 +2270,7 @@ TargetInformation Qt4ProFileNode::targetInformation(QtSupport::ProFileReader *re result.executable = QDir::cleanPath(wd + QLatin1Char('/') + result.target); //qDebug() << "##### updateTarget sets:" << result.workingDir << result.executable; - if (Utils::HostOsInfo::isWindowsHost()) - result.executable += QLatin1String(".exe"); + Utils::HostOsInfo::appendExecutableSuffix(result.executable); result.valid = true; return result; } diff --git a/src/plugins/subversion/subversionsettings.cpp b/src/plugins/subversion/subversionsettings.cpp index 11b2b6c685..d07e09fe6b 100644 --- a/src/plugins/subversion/subversionsettings.cpp +++ b/src/plugins/subversion/subversionsettings.cpp @@ -50,10 +50,7 @@ enum { defaultTimeOutS = 30, defaultLogCount = 1000 }; static QString defaultCommand() { - QString rc = QLatin1String("svn"); - if (Utils::HostOsInfo::isWindowsHost()) - rc.append(QLatin1String(".exe")); - return rc; + return QLatin1String("svn" QTC_HOST_EXE_SUFFIX); } using namespace Subversion::Internal; -- GitLab