symbian-qemu-0.9.1-12/python-2.6.1/Mac/PythonLauncher/doscript.m
author Gareth Stockwell <gareth.stockwell@accenture.com>
Wed, 22 Sep 2010 15:40:40 +0100
branchgraphics-phase-3
changeset 111 345f1c88c950
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Fixes to syborg-graphicswrapper.vcproj These changes allow syborg-graphicswrapper to link against the hostthreadadapter and khronosapiwrapper libraries built by the graphics.simulator component. The .vcproj file uses relative paths, which requires that the following three packages are laid out as follows: os/ graphics adapt/ graphics.simulator qemu

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