| /* | 
 |  *  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; | 
 | } |