X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ea92b4d7792987769774ac381685dae15c70454..222702b112dcc7bebe018d6f4d66fe469fefd02c:/src/unix/utilsunx.cpp?ds=inline diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 0a9c8e538d..4d670f4ea0 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -237,9 +237,16 @@ int wxKill(long pid, wxSignal sig, wxKillError *rc, int flags) #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.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 @@ -306,8 +313,18 @@ long wxExecute( const wxString& command, int flags, wxProcess *process ) } 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; @@ -435,7 +452,7 @@ bool wxPipeInputStream::CanRead() const #ifdef __VMS #pragma message disable codeunreachable #endif - + long wxExecute(wxChar **argv, int flags, wxProcess *process) @@ -587,7 +604,7 @@ long wxExecute(wxChar **argv, } execvp (*mb_argv, mb_argv); - + fprintf(stderr, "execvp("); // CS changed ppc to ppc_ as ppc is not available under mac os CW Mach-O for ( char **ppc_ = mb_argv; *ppc_; ppc_++ )