diff options
| author | Josh Ferrell <josh@vector35.com> | 2025-11-24 21:10:38 -0500 |
|---|---|---|
| committer | Josh Ferrell <josh@vector35.com> | 2025-11-24 21:12:32 -0500 |
| commit | 31d963f7eb2d3615b0d0ab6ced87d06142d83883 (patch) | |
| tree | e5d930f9992ef430bf460ca52acdee62d863e968 /rust/src | |
| parent | 0f1261500334e3aafb867ef397b11fef7ff201c4 (diff) | |
Add APIs for getting files in a project folder
Diffstat (limited to 'rust/src')
| -rw-r--r-- | rust/src/project.rs | 9 | ||||
| -rw-r--r-- | rust/src/project/folder.rs | 17 |
2 files changed, 22 insertions, 4 deletions
diff --git a/rust/src/project.rs b/rust/src/project.rs index 6c0366c0..f2743e80 100644 --- a/rust/src/project.rs +++ b/rust/src/project.rs @@ -587,6 +587,15 @@ impl Project { unsafe { Array::new(result, count, ()) } } + /// Retrieve a list of files in the project in a given folder. + pub fn files_in_folder(&self, folder: Option<&ProjectFolder>) -> Array<ProjectFile> { + let folder_ptr = folder.map(|f| f.handle.as_ptr()).unwrap_or(null_mut()); + let mut count = 0; + let result = + unsafe { BNProjectGetFilesInFolder(self.handle.as_ptr(), folder_ptr, &mut count) }; + unsafe { Array::new(result, count, ()) } + } + /// Delete a file from the project pub fn delete_file(&self, file: &ProjectFile) -> bool { unsafe { BNProjectDeleteFile(self.handle.as_ptr(), file.handle.as_ptr()) } diff --git a/rust/src/project/folder.rs b/rust/src/project/folder.rs index 1ab33bc8..e14b84a8 100644 --- a/rust/src/project/folder.rs +++ b/rust/src/project/folder.rs @@ -1,12 +1,14 @@ use crate::progress::{NoProgressCallback, ProgressCallback}; +use crate::project::file::ProjectFile; use crate::project::Project; -use crate::rc::{CoreArrayProvider, CoreArrayProviderInner, Guard, Ref, RefCountable}; +use crate::rc::{Array, CoreArrayProvider, CoreArrayProviderInner, Guard, Ref, RefCountable}; use crate::string::{BnString, IntoCStr}; use binaryninjacore_sys::{ BNFreeProjectFolder, BNFreeProjectFolderList, BNNewProjectFolderReference, BNProjectFolder, - BNProjectFolderExport, BNProjectFolderGetDescription, BNProjectFolderGetId, - BNProjectFolderGetName, BNProjectFolderGetParent, BNProjectFolderGetProject, - BNProjectFolderSetDescription, BNProjectFolderSetName, BNProjectFolderSetParent, + BNProjectFolderExport, BNProjectFolderGetDescription, BNProjectFolderGetFiles, + BNProjectFolderGetId, BNProjectFolderGetName, BNProjectFolderGetParent, + BNProjectFolderGetProject, BNProjectFolderSetDescription, BNProjectFolderSetName, + BNProjectFolderSetParent, }; use std::ffi::c_void; use std::fmt::Debug; @@ -100,6 +102,13 @@ impl ProjectFolder { ) } } + + /// Get the files contained in this folder + pub fn files(&self) -> Array<ProjectFile> { + let mut count = 0; + let result = unsafe { BNProjectFolderGetFiles(self.handle.as_ptr(), &mut count) }; + unsafe { Array::new(result, count, ()) } + } } impl PartialEq for ProjectFolder { |
