darwin: resource_path()
							parent
							
								
									223032f0ce
								
							
						
					
					
						commit
						39cfb1d6a6
					
				|  | @ -1,6 +1,8 @@ | ||||||
| module darwin | module darwin | ||||||
| 
 | 
 | ||||||
| #include <Cocoa/Cocoa.h> | #include <Cocoa/Cocoa.h> | ||||||
|  | #include <CoreFoundation/CoreFoundation.h> | ||||||
|  | 
 | ||||||
| #flag -framework Cocoa | #flag -framework Cocoa | ||||||
| 
 | 
 | ||||||
| struct C.NSString { } | struct C.NSString { } | ||||||
|  | @ -17,3 +19,22 @@ pub fn nsstring(s string) *C.NSString { | ||||||
| 		//encoding: NSUTF8StringEncoding,		freeWhenDone: false)
 | 		//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