#include "wx/os2/private.h"
#include "wx/apptrait.h"
+#include "wx/filename.h"
#include <ctype.h>
#ifdef __EMX__
wxChar* zSysname;
const wxChar* zDefaultHost = _T("noname");
- if ((zSysname = wxGetenv(_T("SYSTEM_NAME"))) == NULL)
+ if ((zSysname = wxGetenv(_T("SYSTEM_NAME"))) == NULL &&
+ (zSysname = wxGetenv(_T("HOSTNAME"))) == NULL)
{
::PrfQueryProfileString( HINI_PROFILE
,(PSZ)WX_SECTION
SData.PgmName = (char*)zShell;
sInputs = _T("/C ") + rCommand;
- SData.PgmInputs = (BYTE*)sInputs.c_str();
+ SData.PgmInputs = (BYTE*)sInputs.wx_str();
SData.TermQ = 0;
SData.Environment = 0;
SData.InheritOpt = SSF_INHERTOPT_SHELL;
return true;
}
-bool wxSetEnv(const wxString& variable, const wxChar *value)
+bool wxSetEnv(const wxString& variable, const char *value)
{
#if defined(HAVE_SETENV)
- return setenv(variable.mb_str(), value ? wxString(value).mb_str().data()
- : NULL, 1 /* overwrite */) == 0;
+ return setenv(variable.mb_str(), value, 1 /* overwrite */) == 0;
#elif defined(HAVE_PUTENV)
wxString s = variable;
if ( value )
#endif
}
+bool wxSetEnv(const wxString& variable, const wxString& value)
+{
+ return wxDoSetEnv(variable, value.mb_str());
+}
+
+bool wxUnsetEnv(const wxString& variable)
+{
+ return wxDoSetEnv(variable, NULL);
+}
+
void wxMilliSleep(
unsigned long ulMilliseconds
)
return (wxChar*)wxEmptyString; // No home known!
}
+bool wxGetDiskSpace(const wxString& path,
+ wxDiskspaceSize_t *pTotal,
+ wxDiskspaceSize_t *pFree)
+{
+ if (path.empty())
+ return false;
+
+ wxFileName fn(path);
+ FSALLOCATE fsaBuf = {0};
+ APIRET rc = NO_ERROR;
+ ULONG disknum = 0;
+
+ fn.MakeAbsolute();
+
+ if (wxDirExists(fn.GetFullPath()) == false)
+ return false;
+
+ disknum = 1 + wxToupper(fn.GetVolume().GetChar(0)) - _T('A');
+
+ rc = ::DosQueryFSInfo(disknum, // 1 = A, 2 = B, 3 = C, ...
+ FSIL_ALLOC, // allocation info
+ (PVOID)&fsaBuf,
+ sizeof(FSALLOCATE));
+
+ if (rc != NO_ERROR)
+ return false;
+ else
+ {
+ if(pTotal)
+ {
+ // to try to avoid 32-bit overflow, let's not multiply right away
+ // (num of alloc units)
+ *pTotal = fsaBuf.cUnit;
+ // * (num of sectors per alloc unit) * (num of bytes per sector)
+ (*pTotal) *= fsaBuf.cSectorUnit * fsaBuf.cbSector;
+ }
+ if(pFree)
+ {
+ *pFree = fsaBuf.cUnitAvail;
+ (*pFree) *= fsaBuf.cSectorUnit * fsaBuf.cbSector;
+ }
+ return true;
+ }
+}
+
wxString wxPMErrorToStr(ERRORID vError)
{
wxString sError;