diff options
| -rw-r--r-- | rust/src/filemetadata.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/rust/src/filemetadata.rs b/rust/src/filemetadata.rs index 7d385a4c..3dd9ed1b 100644 --- a/rust/src/filemetadata.rs +++ b/rust/src/filemetadata.rs @@ -22,12 +22,12 @@ use binaryninjacore_sys::{ BNFreeFileMetadata, BNGetCurrentOffset, BNGetCurrentView, + BNGetFileMetadataDatabase, BNGetFileViewOfType, BNGetFilename, + BNGetProjectFile, BNIsAnalysisChanged, BNIsBackedByDatabase, - //BNSetFileMetadataNavigationHandler, - BNGetFileMetadataDatabase, BNIsFileModified, BNMarkFileModified, BNMarkFileSaved, @@ -39,17 +39,18 @@ use binaryninjacore_sys::{ BNRevertUndoActions, BNSaveAutoSnapshot, BNSetFilename, - BNUndo, + BNUndo }; use binaryninjacore_sys::{BNCreateDatabaseWithProgress, BNOpenExistingDatabaseWithProgress}; use crate::binaryview::BinaryView; use crate::database::Database; +use crate::project::ProjectFile; use crate::rc::*; use crate::string::*; -use std::ptr; +use std::ptr::{self, NonNull}; #[derive(PartialEq, Eq, Hash)] pub struct FileMetadata { @@ -207,6 +208,13 @@ impl FileMetadata { } } + pub fn get_project_file(&self) -> Option<ProjectFile> { + unsafe { + let res = NonNull::new(BNGetProjectFile(self.handle))?; + Some(ProjectFile::from_raw(res)) + } + } + pub fn create_database<S: BnStrCompatible>( &self, filename: S, |
