# HG changeset patch # User Chris Cannam # Date 1290253219 0 # Node ID b522aaa2c053507e3140b314dbdc5944136d6937 # Parent d575a8f76a53fc5cf2af32907467fdb920fc5c8c * Further minor win32 fix diff -r d575a8f76a53 -r b522aaa2c053 common.cpp --- a/common.cpp Sat Nov 20 10:11:00 2010 +0000 +++ b/common.cpp Sat Nov 20 11:40:19 2010 +0000 @@ -21,6 +21,7 @@ #include #include #include +#include #include @@ -34,8 +35,14 @@ QString findExecutable(QString name) { + bool found = false; if (name != "") { if (name[0] != '/') { +#ifdef Q_OS_WIN32 + QChar pathSep = ';'; +#else + QChar pathSep = ':'; +#endif name = QFileInfo(name).fileName(); QString path = QProcessEnvironment::systemEnvironment().value("PATH"); @@ -46,22 +53,25 @@ DEBUG << "... adding /usr/local/bin just in case (fix and add settings dlg please)" << endl; #endif -#ifdef Q_OS_WIN32 - QChar pathSep = ';'; -#else - QChar pathSep = ':'; -#endif QStringList elements = path.split(pathSep, QString::SkipEmptyParts); foreach (QString element, elements) { - QString full = QString("%1/%2").arg(element).arg(name); + QString full = QDir(element).filePath(name); QFileInfo fi(full); if (fi.exists() && fi.isFile() && fi.isExecutable()) { name = full; + found = true; break; } } } } +#ifdef Q_OS_WIN32 + if (!found) { + if (!name.endsWith(".exe")) { + return findExecutable(name + ".exe"); + } + } +#endif return name; } diff -r d575a8f76a53 -r b522aaa2c053 hgrunner.cpp --- a/hgrunner.cpp Sat Nov 20 10:11:00 2010 +0000 +++ b/hgrunner.cpp Sat Nov 20 11:40:19 2010 +0000 @@ -90,10 +90,13 @@ QString HgRunner::getHgBinaryName() { QSettings settings; - QString hg = settings.value("hgbinary", "hg").toString(); - if (hg == "") hg = "hg"; - hg = findExecutable(hg); - settings.setValue("hgbinary", hg); + QString hg = settings.value("hgbinary", "").toString(); + if (hg == "") { + hg = findExecutable("hg"); + } + if (hg != "hg") { + settings.setValue("hgbinary", hg); + } return hg; }