OSDN Git Service

Some improvements to init_process() function.
authorLoRd_MuldeR <mulder2@gmx.de>
Sun, 2 Oct 2016 15:32:40 +0000 (17:32 +0200)
committerLoRd_MuldeR <mulder2@gmx.de>
Sun, 2 Oct 2016 15:32:40 +0000 (17:32 +0200)
include/MUtils/Global.h
src/Global.cpp

index e25957d..3bd3a5a 100644 (file)
@@ -76,7 +76,7 @@ namespace MUtils
        MUTILS_API const QString& temp_folder(void);
 
        //Process Utils
-       MUTILS_API void init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir = true, const QString &extraPath = QString());
+       MUTILS_API void init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir = true, const QStringList *const extraPaths = NULL);
 
        //Random
        MUTILS_API void seed_rand(void);
index 26fd3bf..0c6260a 100644 (file)
@@ -37,6 +37,7 @@
 #include <QProcess>
 #include <QTextCodec>
 #include <QPair>
+#include <QListIterator>
 
 //CRT
 #include <cstdlib>
@@ -391,7 +392,7 @@ static void prependToPath(QProcessEnvironment &env, const QString &value)
        env.insert(PATH, path.isEmpty() ? value : QString("%1;%2").arg(value, path));
 }
 
-void MUtils::init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir, const QString &extraPath)
+void MUtils::init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir, const QStringList *const extraPaths)
 {
        //Environment variable names
        static const char *const s_envvar_names_temp[] =
@@ -427,9 +428,14 @@ void MUtils::init_process(QProcess &process, const QString &wokringDir, const bo
 
        //Setup PATH variable
        prependToPath(env, tempDir);
-       if (!extraPath.isEmpty())
+       if (extraPaths && (!extraPaths->isEmpty()))
        {
-               prependToPath(env, QDir::toNativeSeparators(extraPath));
+               QListIterator<QString> iter(*extraPaths);
+               iter.toBack();
+               while (iter.hasPrevious())
+               {
+                       prependToPath(env, QDir::toNativeSeparators(iter.previous()));
+               }
        }
        
        //Setup QPorcess object