|
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 |
|
14 extern int |
|
15 doscript(const char *command) |
|
16 { |
|
17 char *bundleID = "com.apple.Terminal"; |
|
18 AppleEvent evt, res; |
|
19 AEDesc desc; |
|
20 OSStatus err; |
|
21 |
|
22 [[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"]; |
|
23 |
|
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: %d\n", err); |
|
35 return err; |
|
36 } |
|
37 |
|
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: %d\n", 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: %d", err); |
|
51 AEDisposeDesc(&desc); |
|
52 } else if (err == errAEDescNotFound) { |
|
53 err = noErr; |
|
54 } else { |
|
55 NSLog(@"AEGetPArmDesc returned an error: %d", err); |
|
56 } |
|
57 |
|
58 return err; |
|
59 } |