[2] | 1 | /*
|
---|
| 2 | * doscript.c
|
---|
| 3 | * PythonLauncher
|
---|
| 4 | *
|
---|
| 5 | * Created by Jack Jansen on Wed Jul 31 2002.
|
---|
| 6 | * Copyright (c) 2002 __MyCompanyName__. All rights reserved.
|
---|
| 7 | *
|
---|
| 8 | */
|
---|
| 9 |
|
---|
| 10 | #import <Cocoa/Cocoa.h>
|
---|
| 11 | #import <ApplicationServices/ApplicationServices.h>
|
---|
| 12 | #import "doscript.h"
|
---|
| 13 |
|
---|
[391] | 14 | extern int
|
---|
[2] | 15 | doscript(const char *command)
|
---|
| 16 | {
|
---|
[391] | 17 | char *bundleID = "com.apple.Terminal";
|
---|
| 18 | AppleEvent evt, res;
|
---|
| 19 | AEDesc desc;
|
---|
| 20 | OSStatus err;
|
---|
[2] | 21 |
|
---|
[391] | 22 | [[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"];
|
---|
[2] | 23 |
|
---|
[391] | 24 | // Build event
|
---|
| 25 | err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
|
---|
| 26 | typeApplicationBundleID,
|
---|
| 27 | bundleID, strlen(bundleID),
|
---|
| 28 | kAutoGenerateReturnID,
|
---|
| 29 | kAnyTransactionID,
|
---|
| 30 | &evt, NULL,
|
---|
| 31 | "'----':utf8(@)", strlen(command),
|
---|
| 32 | command);
|
---|
| 33 | if (err) {
|
---|
| 34 | NSLog(@"AEBuildAppleEvent failed: %ld\n", (long)err);
|
---|
| 35 | return err;
|
---|
| 36 | }
|
---|
[2] | 37 |
|
---|
[391] | 38 | // Send event and check for any Apple Event Manager errors
|
---|
| 39 | err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
|
---|
| 40 | AEDisposeDesc(&evt);
|
---|
| 41 | if (err) {
|
---|
| 42 | NSLog(@"AESendMessage failed: %ld\n", (long)err);
|
---|
| 43 | return err;
|
---|
| 44 | }
|
---|
| 45 | // Check for any application errors
|
---|
| 46 | err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc);
|
---|
| 47 | AEDisposeDesc(&res);
|
---|
| 48 | if (!err) {
|
---|
| 49 | AEGetDescData(&desc, &err, sizeof(err));
|
---|
| 50 | NSLog(@"Terminal returned an error: %ld", (long)err);
|
---|
| 51 | AEDisposeDesc(&desc);
|
---|
| 52 | } else if (err == errAEDescNotFound) {
|
---|
| 53 | err = noErr;
|
---|
| 54 | } else {
|
---|
| 55 | NSLog(@"AEGetPArmDesc returned an error: %ld", (long)err);
|
---|
| 56 | }
|
---|
[2] | 57 |
|
---|
[391] | 58 | return err;
|
---|
[2] | 59 | }
|
---|