]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/utilsexc.cpp
enter wxPendingEventLocker critical section in ProcessPendingEvents() (fixes 1720352)
[wxWidgets.git] / src / mac / carbon / utilsexc.cpp
index 3b4903212c6ba5dacc30fb2a2ba8925b8261ce01..6c82d0ca87310800d3ca616ce6007a5ad4ca6933 100644 (file)
@@ -1,41 +1,43 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        utilsexec.cpp
 // Purpose:     Execution-related utilities
-// Author:      AUTHOR
-// Modified by:
-// Created:     ??/??/98
+// Author:      Stefan Csomor
+// Modified by: 
+// Created:     1998-01-01
 // RCS-ID:      $Id$
-// Copyright:   (c) AUTHOR
-// Licence:    wxWindows licence
+// 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__
-#define wxEXECUTE_WIN_MESSAGE 10000
 
-long wxExecute(const wxString& command, bool sync, wxProcess *handler)
-{
-    // TODO
-    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(wxT("wxAddProcessCallback() function not ready"));
-   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__
+