summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rust/src/filemetadata.rs16
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,