summaryrefslogtreecommitdiff
path: root/rust/src
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2025-11-24 21:10:38 -0500
committerJosh Ferrell <josh@vector35.com>2025-11-24 21:12:32 -0500
commit31d963f7eb2d3615b0d0ab6ced87d06142d83883 (patch)
treee5d930f9992ef430bf460ca52acdee62d863e968 /rust/src
parent0f1261500334e3aafb867ef397b11fef7ff201c4 (diff)
Add APIs for getting files in a project folder
Diffstat (limited to 'rust/src')
-rw-r--r--rust/src/project.rs9
-rw-r--r--rust/src/project/folder.rs17
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 {