#endif // 0
+// ----------------------------------------------------------------------------
+// Environment
+// ----------------------------------------------------------------------------
+
+bool wxGetEnvMap(wxEnvVariableHashMap *map)
+{
+ wxCHECK_MSG( map, false, wxS("output pointer can't be NULL") );
+
+#if defined(__VISUALC__)
+ wxChar **env = _tenviron;
+#else // non-MSVC
+ // Not sure if other compilers have _tenviron so use the (more standard)
+ // ANSI version only for them.
+ char ** env = environ;
+#endif
+
+ if ( env )
+ {
+ wxString name,
+ value;
+ while ( *env )
+ {
+ const wxString var(*env);
+
+ name = var.BeforeFirst(wxS('='), &value);
+
+ (*map)[name] = value;
+
+ env++;
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
// ----------------------------------------------------------------------------
// wxExecute
// ----------------------------------------------------------------------------
static long wxDoExecuteWithCapture(const wxString& command,
wxArrayString& output,
wxArrayString* error,
- int flags)
+ int flags,
+ const wxExecuteEnv *env)
{
// create a wxProcess which will capture the output
wxProcess *process = new wxProcess;
process->Redirect();
- long rc = wxExecute(command, wxEXEC_SYNC | flags, process);
+ long rc = wxExecute(command, wxEXEC_SYNC | flags, process, env);
#if wxUSE_STREAMS
if ( rc != -1 )
return rc;
}
-long wxExecute(const wxString& command, wxArrayString& output, int flags)
+long wxExecute(const wxString& command, wxArrayString& output, int flags,
+ const wxExecuteEnv *env)
{
- return wxDoExecuteWithCapture(command, output, NULL, flags);
+ return wxDoExecuteWithCapture(command, output, NULL, flags, env);
}
long wxExecute(const wxString& command,
wxArrayString& output,
wxArrayString& error,
- int flags)
+ int flags,
+ const wxExecuteEnv *env)
{
- return wxDoExecuteWithCapture(command, output, &error, flags);
+ return wxDoExecuteWithCapture(command, output, &error, flags, env);
}
// ----------------------------------------------------------------------------