darwin: resource_path()
							parent
							
								
									223032f0ce
								
							
						
					
					
						commit
						39cfb1d6a6
					
				|  | @ -1,6 +1,8 @@ | |||
| module darwin | ||||
| 
 | ||||
| #include <Cocoa/Cocoa.h> | ||||
| #include <CoreFoundation/CoreFoundation.h> | ||||
| 
 | ||||
| #flag -framework Cocoa | ||||
| 
 | ||||
| struct C.NSString { } | ||||
|  | @ -17,3 +19,22 @@ pub fn nsstring(s string) *C.NSString { | |||
| 		//encoding: NSUTF8StringEncoding,		freeWhenDone: false)
 | ||||
| } | ||||
| 
 | ||||
| // returns absolute path to folder where your resources should / will reside
 | ||||
| // for .app packages: .../my.app/Contents/Resources
 | ||||
| // for cli: .../parent_folder/Resources
 | ||||
| pub fn resource_path() string { | ||||
| 
 | ||||
| 	main_bundle := C.CFBundleGetMainBundle() | ||||
| 	resource_dir_url := C.CFBundleCopyResourcesDirectoryURL(main_bundle) | ||||
| 	assert !isnil(resource_dir_url) | ||||
| 	buffer_size := 4096 | ||||
| 	mut buffer := malloc(buffer_size) | ||||
| 	buffer[0] = 0 | ||||
| 	conv_result := C.CFURLGetFileSystemRepresentation(resource_dir_url, true, buffer, buffer_size) | ||||
| 	assert conv_result | ||||
| 	result := string(buffer) | ||||
| 	C.CFRelease(resource_dir_url) | ||||
| 	free(buffer) | ||||
| 	return result | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue