17db96d56Sopenharmony_ci/* 27db96d56Sopenharmony_ci * doscript.c 37db96d56Sopenharmony_ci * PythonLauncher 47db96d56Sopenharmony_ci * 57db96d56Sopenharmony_ci * Created by Jack Jansen on Wed Jul 31 2002. 67db96d56Sopenharmony_ci * Copyright (c) 2002 __MyCompanyName__. All rights reserved. 77db96d56Sopenharmony_ci * 87db96d56Sopenharmony_ci */ 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci#import <Cocoa/Cocoa.h> 117db96d56Sopenharmony_ci#import <ApplicationServices/ApplicationServices.h> 127db96d56Sopenharmony_ci#import "doscript.h" 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciextern int 157db96d56Sopenharmony_cidoscript(const char *command) 167db96d56Sopenharmony_ci{ 177db96d56Sopenharmony_ci char *bundleID = "com.apple.Terminal"; 187db96d56Sopenharmony_ci AppleEvent evt, res; 197db96d56Sopenharmony_ci AEDesc desc; 207db96d56Sopenharmony_ci OSStatus err; 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci [[NSWorkspace sharedWorkspace] launchApplication:@"Terminal.app"]; 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci // Build event 257db96d56Sopenharmony_ci err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript, 267db96d56Sopenharmony_ci typeApplicationBundleID, 277db96d56Sopenharmony_ci bundleID, strlen(bundleID), 287db96d56Sopenharmony_ci kAutoGenerateReturnID, 297db96d56Sopenharmony_ci kAnyTransactionID, 307db96d56Sopenharmony_ci &evt, NULL, 317db96d56Sopenharmony_ci "'----':utf8(@)", strlen(command), 327db96d56Sopenharmony_ci command); 337db96d56Sopenharmony_ci if (err) { 347db96d56Sopenharmony_ci NSLog(@"AEBuildAppleEvent failed: %ld\n", (long)err); 357db96d56Sopenharmony_ci return err; 367db96d56Sopenharmony_ci } 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci // Send event and check for any Apple Event Manager errors 397db96d56Sopenharmony_ci err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout); 407db96d56Sopenharmony_ci AEDisposeDesc(&evt); 417db96d56Sopenharmony_ci if (err) { 427db96d56Sopenharmony_ci NSLog(@"AESendMessage failed: %ld\n", (long)err); 437db96d56Sopenharmony_ci return err; 447db96d56Sopenharmony_ci } 457db96d56Sopenharmony_ci // Check for any application errors 467db96d56Sopenharmony_ci err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc); 477db96d56Sopenharmony_ci AEDisposeDesc(&res); 487db96d56Sopenharmony_ci if (!err) { 497db96d56Sopenharmony_ci AEGetDescData(&desc, &err, sizeof(err)); 507db96d56Sopenharmony_ci NSLog(@"Terminal returned an error: %ld", (long)err); 517db96d56Sopenharmony_ci AEDisposeDesc(&desc); 527db96d56Sopenharmony_ci } else if (err == errAEDescNotFound) { 537db96d56Sopenharmony_ci err = noErr; 547db96d56Sopenharmony_ci } else { 557db96d56Sopenharmony_ci NSLog(@"AEGetPArmDesc returned an error: %ld", (long)err); 567db96d56Sopenharmony_ci } 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ci return err; 597db96d56Sopenharmony_ci} 60