From f95056eacd7d6432805779773dc122ea7684df11 Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Mon, 14 Oct 2024 15:59:26 -0400 Subject: Implement FileMetadata::get_project_file in rust --- rust/src/filemetadata.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'rust/src') 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 { + unsafe { + let res = NonNull::new(BNGetProjectFile(self.handle))?; + Some(ProjectFile::from_raw(res)) + } + } + pub fn create_database( &self, filename: S, -- cgit v1.3.1