diff options
Diffstat (limited to 'rust/src/repository')
| -rw-r--r-- | rust/src/repository/manager.rs | 7 | ||||
| -rw-r--r-- | rust/src/repository/plugin.rs | 11 |
2 files changed, 11 insertions, 7 deletions
diff --git a/rust/src/repository/manager.rs b/rust/src/repository/manager.rs index 42d8aa42..cf0118ad 100644 --- a/rust/src/repository/manager.rs +++ b/rust/src/repository/manager.rs @@ -8,6 +8,7 @@ use binaryninjacore_sys::{ BNRepositoryManagerGetDefaultRepository, BNRepositoryManagerGetRepositories, }; use std::fmt::Debug; +use std::path::Path; use std::ptr::NonNull; /// Keeps track of all the repositories and keeps the `enabled_plugins.json` @@ -28,7 +29,7 @@ impl RepositoryManager { Ref::new(Self { handle }) } - pub fn new<S: IntoCStr>(plugins_path: S) -> Ref<Self> { + pub fn new(plugins_path: &str) -> Ref<Self> { let plugins_path = plugins_path.to_cstr(); let result = unsafe { BNCreateRepositoryManager(plugins_path.as_ptr()) }; unsafe { Self::ref_from_raw(NonNull::new(result).unwrap()) } @@ -59,7 +60,7 @@ impl RepositoryManager { /// * `repository_path` - path to where the repository will be stored on disk locally /// /// Returns true if the repository was successfully added, false otherwise. - pub fn add_repository<U: IntoCStr, P: IntoCStr>(&self, url: U, repository_path: P) -> bool { + pub fn add_repository(&self, url: &str, repository_path: &Path) -> bool { let url = url.to_cstr(); let repo_path = repository_path.to_cstr(); unsafe { @@ -67,7 +68,7 @@ impl RepositoryManager { } } - pub fn repository_by_path<P: IntoCStr>(&self, path: P) -> Option<Repository> { + pub fn repository_by_path(&self, path: &Path) -> Option<Repository> { let path = path.to_cstr(); let result = unsafe { BNRepositoryGetRepositoryByPath(self.handle.as_ptr(), path.as_ptr()) }; diff --git a/rust/src/repository/plugin.rs b/rust/src/repository/plugin.rs index 82309e79..e0ab9679 100644 --- a/rust/src/repository/plugin.rs +++ b/rust/src/repository/plugin.rs @@ -5,6 +5,7 @@ use crate::VersionInfo; use binaryninjacore_sys::*; use std::ffi::c_char; use std::fmt::Debug; +use std::path::PathBuf; use std::ptr::NonNull; use std::time::{Duration, SystemTime, UNIX_EPOCH}; @@ -112,17 +113,19 @@ impl RepositoryPlugin { } /// Relative path from the base of the repository to the actual plugin - pub fn path(&self) -> String { + pub fn path(&self) -> PathBuf { let result = unsafe { BNPluginGetPath(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) } /// Optional sub-directory the plugin code lives in as a relative path from the plugin root - pub fn subdir(&self) -> String { + pub fn subdir(&self) -> PathBuf { let result = unsafe { BNPluginGetSubdir(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) } /// Dependencies required for installing this plugin |
