mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| """mpwsystem -
 | |
| A simple example of how to use Apple Events to implement a "system()"
 | |
| call that invokes ToolServer on the command.
 | |
| 
 | |
| Contributed by Daniel Brotsky <dev@brotsky.com>.
 | |
| 
 | |
| (renamed from aesystem to mpwsystem by Jack)
 | |
| 
 | |
| system(cmd, infile = None, outfile = None, errfile = None)
 | |
| 
 | |
| 1. Every call to system sets "lastStatus" and "lastOutput" to the 
 | |
| status and output
 | |
| produced by the command when executed in ToolServer.  (lastParameters 
 | |
| and lastAttributes
 | |
| are set to the values of the AppleEvent result.)
 | |
| 
 | |
| 2. system returns lastStatus unless the command result indicates a MacOS error,
 | |
| in which case os.Error is raised with the errnum as associated value.
 | |
| 
 | |
| 3. You can specify ToolServer-understandable pathnames for 
 | |
| redirection of input,
 | |
| output, and error streams.  By default, input is Dev:Null, output is captured
 | |
| and returned to the caller, diagnostics are captured and returned to 
 | |
| the caller.
 | |
| (There's a 64K limit to how much can be captured and returned this way.)"""
 | |
| 
 | |
| import os
 | |
| import aetools
 | |
| 
 | |
| try: server
 | |
| except NameError: server = aetools.TalkTo("MPSX", 1)
 | |
| 
 | |
| lastStatus = None
 | |
| lastOutput = None
 | |
| lastErrorOutput = None
 | |
| lastScript = None
 | |
| lastEvent = None
 | |
| lastReply = None
 | |
| lastParameters = None
 | |
| lastAttributes = None
 | |
| 
 | |
| def system(cmd, infile = None, outfile = None, errfile = None):
 | |
| 	global lastStatus, lastOutput, lastErrorOutput
 | |
| 	global lastScript, lastEvent, lastReply, lastParameters, lastAttributes
 | |
| 	cmdline = cmd
 | |
| 	if infile: cmdline += " <" + infile
 | |
| 	if outfile: cmdline += " >" + outfile
 | |
| 	if errfile: cmdline += " " + str(chr(179)) + errfile
 | |
| 	lastScript = "set Exit 0\r" + cmdline + "\rexit {Status}"
 | |
| 	lastEvent = server.newevent("misc", "dosc", {"----" : lastScript})
 | |
| 	(lastReply, lastParameters, lastAttributes) = server.sendevent(lastEvent)
 | |
| 	if lastParameters.has_key('stat'): lastStatus = lastParameters['stat']
 | |
| 	else: lastStatus = None
 | |
| 	if lastParameters.has_key('----'): lastOutput = lastParameters['----']
 | |
| 	else: lastOutput = None
 | |
| 	if lastParameters.has_key('diag'): lastErrorOutput = lastParameters['diag']
 | |
| 	else: lastErrorOutput = None
 | |
| 	if lastParameters['errn'] != 0:
 | |
| 		raise os.Error, lastParameters['errn']
 | |
| 	return lastStatus
 | |
| 	
 | |
| if __name__ == '__main__':
 | |
| 	sts = system('alert "Hello World"')
 | |
| 	print 'system returned', sts
 | |
| 	
 | |
| 	
 | 
