// headers
// ----------------------------------------------------------------------------
-#include <pwd.h>
-
// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/wfstream.h"
#include "wx/unix/execute.h"
+#include "wx/unix/private.h"
+
+#include <pwd.h>
#if wxUSE_STREAMS
#endif // __BSD__/!__BSD__
#define wxStatfs statfs
+
+ #ifndef HAVE_STATFS_DECL
+ // some systems lack statfs() prototype in the system headers (AIX 4)
+ extern "C" int statfs(const char *path, struct statfs *buf);
+ #endif
#endif // HAVE_STATFS
#ifdef HAVE_STATVFS
#define WXEXECUTE_NARGS 127
+#if defined(__DARWIN__)
+long wxMacExecute(wxChar **argv,
+ int flags,
+ wxProcess *process);
+#endif
+
long wxExecute( const wxString& command, int flags, wxProcess *process )
{
- wxCHECK_MSG( !command.IsEmpty(), 0, wxT("can't exec empty command") );
+ wxCHECK_MSG( !command.empty(), 0, wxT("can't exec empty command") );
+ wxLogDebug(wxString(wxT("Launching: ")) + command);
#if wxUSE_THREADS
// fork() doesn't mix well with POSIX threads: on many systems the program
} while(*cptr);
argv[argc] = NULL;
+ long lRc;
+#if defined(__DARWIN__)
+ // wxMacExecute only executes app bundles.
+ // It returns an error code if the target is not an app bundle, thus falling
+ // through to the regular wxExecute for non app bundles.
+ lRc = wxMacExecute(argv, flags, process);
+ if( lRc != ((flags & wxEXEC_SYNC) ? -1 : 0))
+ return lRc;
+#endif
+
// do execute the command
- long lRc = wxExecute(argv, flags, process);
+ lRc = wxExecute(argv, flags, process);
// clean up
argc = 0;
return system(wxString::Format(_T("init %c"), level).mb_str()) == 0;
}
+wxPowerType wxGetPowerType()
+{
+ // TODO
+ return wxPOWER_UNKNOWN;
+}
+
+wxBatteryState wxGetBatteryState()
+{
+ // TODO
+ return wxBATTERY_UNKNOWN_STATE;
+}
// ----------------------------------------------------------------------------
// wxStream classes to support IO redirection in wxExecute
const int fd = m_file->fd();
fd_set readfds;
- FD_ZERO(&readfds);
- FD_SET(fd, &readfds);
+
+ wxFD_ZERO(&readfds);
+ wxFD_SET(fd, &readfds);
+
switch ( select(fd + 1, &readfds, NULL, NULL, &tv) )
{
case -1:
// wxExecute: the real worker function
// ----------------------------------------------------------------------------
-#ifdef __VMS
- #pragma message disable codeunreachable
-#endif
-
-long wxExecute(wxChar **argv,
- int flags,
- wxProcess *process)
+long wxExecute(wxChar **argv, int flags, wxProcess *process)
{
// for the sync execution, we return -1 to indicate failure, but for async
// case we return 0 which is never a valid PID
return traits->WaitForChild(execData);
}
+#if !defined(__VMS) && !defined(__INTEL_COMPILER)
return ERROR_RETURN_CODE;
-}
-
-#ifdef __VMS
- #pragma message enable codeunreachable
#endif
+}
#undef ERROR_RETURN_CODE
#undef ARGS_CLEANUP
const wxChar* wxGetHomeDir( wxString *home )
{
- *home = wxGetUserHome( wxString() );
+ *home = wxGetUserHome( wxEmptyString );
wxString tmp;
- if ( home->IsEmpty() )
+ if ( home->empty() )
*home = wxT("/");
#ifdef __VMS
tmp = *home;