]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/utilsexc.cpp
Quit application menu item needs special handling like the Preferences item. [ patch...
[wxWidgets.git] / src / mac / carbon / utilsexc.cpp
index 229ad654f783b4b81e323dd908140f965f5bf120..6c82d0ca87310800d3ca616ce6007a5ad4ca6933 100644 (file)
@@ -2,41 +2,42 @@
 // Name:        utilsexec.cpp
 // Purpose:     Execution-related utilities
 // Author:      Stefan Csomor
 // 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
 /////////////////////////////////////////////////////////////////////////////
 
 // Created:     1998-01-01
 // RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // 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__
 
 #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__
+