// Name: utilsexec.cpp
// Purpose: Execution-related utilities
// Author: Stefan Csomor
-// Modified by:
+// Modified by:
// Created: 1998-01-01
// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include "wx/utils.h"
-#ifdef __DARWIN__
-#include "wx/unix/execute.h"
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include "wx/wxprec.h"
+#ifndef WX_PRECOMP
+ #include "wx/log.h"
+ #include "wx/utils.h"
+#endif //ndef WX_PRECOMP
#ifndef __DARWIN__
-#define wxEXECUTE_WIN_MESSAGE 10000
-long wxExecute(const wxString& command, int flags, wxProcess *handler)
-{
- // TODO
- wxFAIL_MSG( _T("wxExecute() not yet implemented") );
- return 0;
-}
-#endif
+#include "wx/mac/private.h"
+#include "LaunchServices.h"
-#ifdef __DARWIN__
-int wxAddProcessCallback(wxEndProcessData *proc_data, int fd)
+long wxExecute(const wxString& command, int flags, wxProcess *WXUNUSED(handler))
{
- wxFAIL_MSG( _T("wxAddProcessCallback() not yet implemented") );
- return 0;
+ wxASSERT_MSG( flags == wxEXEC_ASYNC,
+ wxT("wxExecute: Only wxEXEC_ASYNC is supported") );
+
+ FSRef fsRef ;
+ OSErr err = noErr ;
+ err = wxMacPathToFSRef( command , &fsRef ) ;
+ if ( noErr == err )
+ {
+ err = LSOpenFSRef( &fsRef , NULL ) ;
+ }
+
+ // 0 means execution failed. Returning non-zero is a PID, but not
+ // on Mac where PIDs are 64 bits and won't fit in a long, so we
+ // return a dummy value for now.
+ return ( err == noErr ) ? -1 : 0;
}
-#endif
+
+#endif //ndef __DARWIN__
+