mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from Carbon.Res import *
 | |
| from Carbon.Resources import *
 | |
| import MacOS
 | |
| 
 | |
| READ = 1
 | |
| WRITE = 2
 | |
| smAllScripts = -3
 | |
| 
 | |
| def raw_input(prompt):
 | |
|     import sys
 | |
|     sys.stdout.write(prompt)
 | |
|     sys.stdout.flush()
 | |
|     return sys.stdin.readline()
 | |
| 
 | |
| def copyres(src, dst):
 | |
|     """Copy resource from src file to dst file."""
 | |
| 
 | |
|     cur = CurResFile()
 | |
|     ctor, type = MacOS.GetCreatorAndType(src)
 | |
|     input = FSpOpenResFile(src, READ)
 | |
|     try:
 | |
|         FSpCreateResFile(dst, ctor, type, smAllScripts)
 | |
|     except:
 | |
|         raw_input("%s already exists...  CR to write anyway! " % dst)
 | |
|     output = FSpOpenResFile(dst, WRITE)
 | |
|     UseResFile(input)
 | |
|     ntypes = Count1Types()
 | |
|     for itype in range(1, 1+ntypes):
 | |
|         type = Get1IndType(itype)
 | |
|         nresources = Count1Resources(type)
 | |
|         for ires in range(1, 1+nresources):
 | |
|             res = Get1IndResource(type, ires)
 | |
|             res.LoadResource()
 | |
|             id, type, name = res.GetResInfo()
 | |
|             size = res.SizeResource()
 | |
|             attrs = res.GetResAttrs()
 | |
|             print(id, type, name, size, hex(attrs))
 | |
|             res.DetachResource()
 | |
|             UseResFile(output)
 | |
|             try:
 | |
|                 res2 = Get1Resource(type, id)
 | |
|             except (RuntimeError, Res.Error) as msg:
 | |
|                 res2 = None
 | |
|             if res2:
 | |
|                 print("Duplicate type+id, not copied")
 | |
|                 print (res2.size, res2.data)
 | |
|                 print(res2.GetResInfo())
 | |
|                 if res2.HomeResFile() == output:
 | |
|                     'OK'
 | |
|                 elif res2.HomeResFile() == input:
 | |
|                     'BAD!'
 | |
|                 else:
 | |
|                     print('Home:', res2.HomeResFile())
 | |
|             else:
 | |
|                 res.AddResource(type, id, name)
 | |
|                 #res.SetResAttrs(attrs)
 | |
|                 res.WriteResource()
 | |
|             UseResFile(input)
 | |
|     UseResFile(cur)
 | |
|     CloseResFile(output)
 | |
|     CloseResFile(input)
 | |
| 
 | |
| copyres('::python.ยน.rsrc', '::foo.rsrc')
 | 
