darwin: resource_path()

pull/2179/head
Tony Kostanjsek 2019-09-30 22:29:14 +02:00 committed by Alexander Medvednikov
parent 223032f0ce
commit 39cfb1d6a6
1 changed files with 21 additions and 0 deletions

View File

@ -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
}