summaryrefslogtreecommitdiff
path: root/rust/src/repository.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src/repository.rs')
-rw-r--r--rust/src/repository.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/rust/src/repository.rs b/rust/src/repository.rs
index 8d9a8f40..a29be323 100644
--- a/rust/src/repository.rs
+++ b/rust/src/repository.rs
@@ -3,6 +3,7 @@ mod plugin;
use std::ffi::c_char;
use std::fmt::Debug;
+use std::path::{Path, PathBuf};
use std::ptr::NonNull;
use binaryninjacore_sys::*;
@@ -38,10 +39,11 @@ impl Repository {
}
/// String local path to store the given plugin repository
- pub fn path(&self) -> String {
+ pub fn path(&self) -> PathBuf {
let result = unsafe { BNRepositoryGetRepoPath(self.handle.as_ptr()) };
assert!(!result.is_null());
- unsafe { BnString::into_string(result as *mut c_char) }
+ let result_str = unsafe { BnString::into_string(result as *mut c_char) };
+ PathBuf::from(result_str)
}
/// List of RepoPlugin objects contained within this repository
@@ -52,18 +54,18 @@ impl Repository {
unsafe { Array::new(result, count, ()) }
}
- pub fn plugin_by_path<S: IntoCStr>(&self, path: S) -> Option<Ref<RepositoryPlugin>> {
+ pub fn plugin_by_path(&self, path: &Path) -> Option<Ref<RepositoryPlugin>> {
let path = path.to_cstr();
let result = unsafe { BNRepositoryGetPluginByPath(self.handle.as_ptr(), path.as_ptr()) };
NonNull::new(result).map(|h| unsafe { RepositoryPlugin::ref_from_raw(h) })
}
- // TODO: Make this a PathBuf?
/// String full path the repository
- pub fn full_path(&self) -> String {
+ pub fn full_path(&self) -> PathBuf {
let result = unsafe { BNRepositoryGetPluginsPath(self.handle.as_ptr()) };
assert!(!result.is_null());
- unsafe { BnString::into_string(result as *mut c_char) }
+ let result_str = unsafe { BnString::into_string(result as *mut c_char) };
+ PathBuf::from(result_str)
}
}