static const wxChar hexArray[] = wxT("0123456789ABCDEF");
// Convert 2-digit hex number to decimal
-int wxHexToDec(const wxString& buf)
+int wxHexToDec(const wxString& str)
{
- int firstDigit, secondDigit;
-
- if (buf.GetChar(0) >= wxT('A'))
- firstDigit = buf.GetChar(0) - wxT('A') + 10;
- else
- firstDigit = buf.GetChar(0) - wxT('0');
-
- if (buf.GetChar(1) >= wxT('A'))
- secondDigit = buf.GetChar(1) - wxT('A') + 10;
- else
- secondDigit = buf.GetChar(1) - wxT('0');
-
- return (firstDigit & 0xF) * 16 + (secondDigit & 0xF );
+ char buf[2];
+ buf[0] = str.GetChar(0);
+ buf[1] = str.GetChar(1);
+ return wxHexToDec((const char*) buf);
}
// Convert decimal integer to 2-character hex string
void wxPlatform::ClearPlatforms()
{
- delete sm_customPlatforms;
- sm_customPlatforms = NULL;
+ wxDELETE(sm_customPlatforms);
}
/// Function for testing current platform
#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);
}
// ----------------------------------------------------------------------------