symbian-qemu-0.9.1-12/python-2.6.1/Mac/PythonLauncher/doscript.m
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Mac/PythonLauncher/doscript.m	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,59 @@
+/*
+ *  doscript.c
+ *  PythonLauncher
+ *
+ *  Created by Jack Jansen on Wed Jul 31 2002.
+ *  Copyright (c) 2002 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+#import <Cocoa/Cocoa.h>
+#import <ApplicationServices/ApplicationServices.h>
+#import "doscript.h"
+
+extern int 
+doscript(const char *command)
+{
+	char *bundleID = "com.apple.Terminal";
+	AppleEvent evt, res;
+	AEDesc desc;
+	OSStatus err;
+
+	[[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"];
+
+	// Build event
+	err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
+	                         typeApplicationBundleID,
+	                         bundleID, strlen(bundleID),
+	                         kAutoGenerateReturnID,
+	                         kAnyTransactionID,
+	                         &evt, NULL,
+	                         "'----':utf8(@)", strlen(command),
+	                         command);
+	if (err) {
+		NSLog(@"AEBuildAppleEvent failed: %d\n", err);
+		return err;
+	}
+
+	// Send event and check for any Apple Event Manager errors
+	err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
+	AEDisposeDesc(&evt);
+	if (err) {
+		NSLog(@"AESendMessage failed: %d\n", err);
+		return err;
+	}
+	// Check for any application errors
+	err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc);
+	AEDisposeDesc(&res);
+	if (!err) {
+		AEGetDescData(&desc, &err, sizeof(err));
+		NSLog(@"Terminal returned an error: %d", err);
+		AEDisposeDesc(&desc);
+	} else if (err == errAEDescNotFound) {
+		err = noErr;
+	} else {
+		NSLog(@"AEGetPArmDesc returned an error: %d", err);
+	}
+
+	return err;
+}