OSDN Git Service

Make sure the TEMP path is *not* replaced when running the web-update tool, as this...
authorLoRd_MuldeR <mulder2@gmx.de>
Mon, 25 Nov 2013 01:20:44 +0000 (02:20 +0100)
committerLoRd_MuldeR <mulder2@gmx.de>
Mon, 25 Nov 2013 01:20:44 +0000 (02:20 +0100)
src/Config.h
src/Dialog_Update.cpp
src/Global.h
src/Global_Utils.cpp

index 893420e..d64ae53 100644 (file)
@@ -35,7 +35,7 @@
 #define VER_LAMEXP_MINOR_LO                                    9
 #define VER_LAMEXP_TYPE                                                Alpha
 #define VER_LAMEXP_PATCH                                       8
-#define VER_LAMEXP_BUILD                                       1472
+#define VER_LAMEXP_BUILD                                       1473
 #define VER_LAMEXP_CONFG                                       1348
 
 ///////////////////////////////////////////////////////////////////////////////
index 312c4a2..05f4849 100644 (file)
@@ -387,7 +387,7 @@ void UpdateDialog::applyUpdate(void)
                QStringList args;
                QEventLoop loop;
 
-               lamexp_init_process(process, QFileInfo(m_binaryUpdater).absolutePath());
+               lamexp_init_process(process, QFileInfo(m_binaryUpdater).absolutePath(), false);
 
                connect(&process, SIGNAL(error(QProcess::ProcessError)), &loop, SLOT(quit()));
                connect(&process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));
@@ -409,6 +409,7 @@ void UpdateDialog::applyUpdate(void)
                        m_updaterProcess = lamexp_process_id(&process);
                        loop.exec(QEventLoop::ExcludeUserInputEvents);
                }
+
                m_updaterProcess = NULL;
                QApplication::restoreOverrideCursor();
 
index b271e8b..b1e4bd4 100644 (file)
@@ -175,7 +175,7 @@ const lamexp_os_version_t &lamexp_get_os_version(void);
 void lamexp_init_console(const QStringList &argv);
 void lamexp_init_error_handlers(void);
 int lamexp_init_ipc(void);
-void lamexp_init_process(QProcess &process, const QString &wokringDir);
+void lamexp_init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir = true);
 bool lamexp_init_qt(int argc, char* argv[]);
 bool lamexp_install_translator(const QString &language);
 bool lamexp_install_translator_from_file(const QString &qmFile);
index 499f914..b38b0b1 100644 (file)
@@ -192,38 +192,45 @@ void lamexp_temp_folder_clear(void)
 /*
  * Setup QPorcess object
  */
-void lamexp_init_process(QProcess &process, const QString &wokringDir)
+void lamexp_init_process(QProcess &process, const QString &wokringDir, const bool bReplaceTempDir)
 {
        //Environment variable names
-       static const char *const s_envvar_names[] =
+       static const char *const s_envvar_names_temp[] =
+       {
+               "TEMP", "TMP", "TMPDIR", "HOME", "USERPROFILE", "HOMEPATH", NULL
+       };
+       static const char *const s_envvar_names_remove[] =
        {
                "WGETRC", "SYSTEM_WGETRC", "HTTP_PROXY", "FTP_PROXY", "NO_PROXY", "GNUPGHOME", "LC_ALL", "LC_COLLATE", "LC_CTYPE", "LC_MESSAGES", "LC_MONETARY", "LC_NUMERIC", "LC_TIME", "LANG", NULL
        };
 
-       const QString tempDir = QDir::toNativeSeparators(lamexp_temp_folder2());
-
+       //Initialize environment
        QProcessEnvironment env = process.processEnvironment();
        if(env.isEmpty()) env = QProcessEnvironment::systemEnvironment();
 
-       //Setup TEMP directory
-       env.insert("TEMP", tempDir);
-       env.insert("TMP", tempDir);
-       env.insert("TMPDIR", tempDir);
-       env.insert("HOME", tempDir);
-       env.insert("USERPROFILE", tempDir);
-       env.insert("HOMEPATH", tempDir);
+       //Clean a number of enviroment variables that might affect our tools
+       for(size_t i = 0; s_envvar_names_remove[i]; i++)
+       {
+               env.remove(QString::fromLatin1(s_envvar_names_remove[i]));
+               env.remove(QString::fromLatin1(s_envvar_names_remove[i]).toLower());
+       }
 
-       //Setup PATH variable
-       const QString path = env.value("PATH", QString());
-       env.insert("PATH", path.isEmpty() ? tempDir : QString("%1;%2").arg(tempDir, path));
+       const QString tempDir = QDir::toNativeSeparators(lamexp_temp_folder2());
 
-       //Clean a number of enviroment variables that might affect our tools
-       for(size_t i = 0; s_envvar_names[i]; i++)
+       //Replace TEMP directory in environment
+       if(bReplaceTempDir)
        {
-               env.remove(QString::fromLatin1(s_envvar_names[i]));
-               env.remove(QString::fromLatin1(s_envvar_names[i]).toLower());
+               for(size_t i = 0; s_envvar_names_temp[i]; i++)
+               {
+                       env.insert(s_envvar_names_temp[i], tempDir);
+               }
        }
+
+       //Setup PATH variable
+       const QString path = env.value("PATH", QString()).trimmed();
+       env.insert("PATH", path.isEmpty() ? tempDir : QString("%1;%2").arg(tempDir, path));
        
+       //Setup QPorcess object
        process.setWorkingDirectory(wokringDir);
        process.setProcessChannelMode(QProcess::MergedChannels);
        process.setReadChannel(QProcess::StandardOutput);