@@ -34,4 +34,5 @@ extern {
|
||||
pub fn CFBundleCopyExecutableURL(bundle: CFBundleRef) -> CFURLRef;
|
||||
pub fn CFBundleCopyPrivateFrameworksURL(bundle: CFBundleRef) -> CFURLRef;
|
||||
pub fn CFBundleCopySharedSupportURL(bundle: CFBundleRef) -> CFURLRef;
|
||||
pub fn CFBundleCopyBundleURL(bundle: CFBundleRef) -> CFURLRef;
|
||||
}
|
||||
|
||||
@@ -9,8 +9,10 @@
|
||||
|
||||
//! Core Foundation Bundle Type
|
||||
|
||||
pub use core_foundation_sys::bundle::*;
|
||||
use core_foundation_sys::base::kCFAllocatorDefault;
|
||||
pub use core_foundation_sys::bundle::*;
|
||||
use core_foundation_sys::url::kCFURLPOSIXPathStyle;
|
||||
use std::path::PathBuf;
|
||||
|
||||
use base::{CFType, TCFType};
|
||||
use url::CFURL;
|
||||
@@ -79,6 +81,24 @@ impl CFBundle {
|
||||
}
|
||||
}
|
||||
|
||||
/// Bundle's own location
|
||||
pub fn bundle_url(&self) -> Option<CFURL> {
|
||||
unsafe {
|
||||
let bundle_url = CFBundleCopyBundleURL(self.0);
|
||||
if bundle_url.is_null() {
|
||||
None
|
||||
} else {
|
||||
Some(TCFType::wrap_under_create_rule(bundle_url))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Bundle's own location
|
||||
pub fn path(&self) -> Option<PathBuf> {
|
||||
let url = self.bundle_url()?;
|
||||
Some(PathBuf::from(url.get_file_system_path(kCFURLPOSIXPathStyle).to_string()))
|
||||
}
|
||||
|
||||
pub fn private_frameworks_url(&self) -> Option<CFURL> {
|
||||
unsafe {
|
||||
let fw_url = CFBundleCopyPrivateFrameworksURL(self.0);
|
||||
|
||||
Reference in New Issue
Block a user