From 3f38812a5d5c6e568da8036cccda38835d05a33c Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Wed, 14 Feb 2024 16:32:56 -0500 Subject: Make Project::Delete{File,Folder} return bool --- binaryninjaapi.h | 4 ++-- binaryninjacore.h | 8 ++++---- project.cpp | 8 ++++---- python/project.py | 10 ++++++---- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 55fd672c..c9804c25 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2674,7 +2674,7 @@ namespace BinaryNinja { std::vector> GetFolders() const; Ref GetFolderById(const std::string& id) const; void PushFolder(Ref folder); - void DeleteFolder(Ref folder, const std::function& progressCallback = {}); + bool DeleteFolder(Ref folder, const std::function& progressCallback = {}); Ref CreateFileFromPath(const std::string& path, Ref folder, const std::string& name, const std::string& description, const std::function& progressCallback = {}); Ref CreateFileFromPathUnsafe(const std::string& path, Ref folder, const std::string& name, const std::string& description, const std::string& id, int64_t creationTimestamp, const std::function& progressCallback = {}); @@ -2684,7 +2684,7 @@ namespace BinaryNinja { Ref GetFileById(const std::string& id) const; Ref GetFileByPathOnDisk(const std::string& path); void PushFile(Ref file); - void DeleteFile_(Ref file); + bool DeleteFile_(Ref file); void RegisterNotification(ProjectNotification* notify); void UnregisterNotification(ProjectNotification* notify); diff --git a/binaryninjacore.h b/binaryninjacore.h index 2c010328..92bd8a55 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -37,14 +37,14 @@ // Current ABI version for linking to the core. This is incremented any time // there are changes to the API that affect linking, including new functions, // new types, or modifications to existing functions or types. -#define BN_CURRENT_CORE_ABI_VERSION 52 +#define BN_CURRENT_CORE_ABI_VERSION 53 // Minimum ABI version that is supported for loading of plugins. Plugins that // are linked to an ABI version less than this will not be able to load and // will require rebuilding. The minimum version is increased when there are // incompatible changes that break binary compatibility, such as changes to // existing types or functions. -#define BN_MINIMUM_CORE_ABI_VERSION 52 +#define BN_MINIMUM_CORE_ABI_VERSION 53 #ifdef __GNUC__ #ifdef BINARYNINJACORE_LIBRARY @@ -3405,7 +3405,7 @@ extern "C" BINARYNINJACOREAPI BNProjectFile* BNProjectGetFileByPathOnDisk(BNProject* project, const char* path); BINARYNINJACOREAPI void BNProjectPushFile(BNProject* project, BNProjectFile* file); - BINARYNINJACOREAPI void BNProjectDeleteFile(BNProject* project, BNProjectFile* file); + BINARYNINJACOREAPI bool BNProjectDeleteFile(BNProject* project, BNProjectFile* file); BINARYNINJACOREAPI BNProjectFolder* BNProjectCreateFolderFromPath(BNProject* project, const char* path, BNProjectFolder* parent, const char* description, void* ctxt, bool (*progress)(void* ctxt, size_t progress, size_t total)); @@ -3414,7 +3414,7 @@ extern "C" BINARYNINJACOREAPI BNProjectFolder** BNProjectGetFolders(BNProject* project, size_t* count); BINARYNINJACOREAPI BNProjectFolder* BNProjectGetFolderById(BNProject* project, const char* id); BINARYNINJACOREAPI void BNProjectPushFolder(BNProject* project, BNProjectFolder* folder); - BINARYNINJACOREAPI void BNProjectDeleteFolder(BNProject* project, BNProjectFolder* folder, void* ctxt, + BINARYNINJACOREAPI bool BNProjectDeleteFolder(BNProject* project, BNProjectFolder* folder, void* ctxt, bool (*progress)(void* ctxt, size_t progress, size_t total)); BINARYNINJACOREAPI void BNProjectBeginBulkOperation(BNProject* project); diff --git a/project.cpp b/project.cpp index 018b6e14..54e873dc 100644 --- a/project.cpp +++ b/project.cpp @@ -399,11 +399,11 @@ void Project::PushFolder(Ref folder) } -void Project::DeleteFolder(Ref folder, const std::function& progressCallback) +bool Project::DeleteFolder(Ref folder, const std::function& progressCallback) { ProgressContext cb; cb.callback = progressCallback; - BNProjectDeleteFolder(m_object, folder->m_object, &cb, ProgressCallback); + return BNProjectDeleteFolder(m_object, folder->m_object, &cb, ProgressCallback); } @@ -492,9 +492,9 @@ void Project::PushFile(Ref file) } -void Project::DeleteFile_(Ref file) +bool Project::DeleteFile_(Ref file) { - BNProjectDeleteFile(m_object, file->m_object); + return BNProjectDeleteFile(m_object, file->m_object); } diff --git a/python/project.py b/python/project.py index 02a4155c..d9b9880d 100644 --- a/python/project.py +++ b/python/project.py @@ -547,14 +547,15 @@ class Project: folder = ProjectFolder(handle) return folder - def delete_folder(self, folder: ProjectFolder, progress_func: ProgressFuncType = _nop): + def delete_folder(self, folder: ProjectFolder, progress_func: ProgressFuncType = _nop) -> bool: """ Recursively delete a folder from the project :param folder: Folder to delete recursively :param progress_func: Progress function that will be called as objects get deleted + :return: True if the folder was deleted, False otherwise """ - core.BNProjectDeleteFolder(self._handle, folder._handle, None, _wrap_progress(progress_func)) + return core.BNProjectDeleteFolder(self._handle, folder._handle, None, _wrap_progress(progress_func)) def create_file_from_path(self, path: AsPath, folder: Optional[ProjectFile], name: str, description: str = "", progress_func: ProgressFuncType = _nop) -> ProjectFile: """ @@ -646,13 +647,14 @@ class Project: file = ProjectFile(handle) return file - def delete_file(self, file: ProjectFile): + def delete_file(self, file: ProjectFile) -> bool: """ Delete a file from the project :param file: File to delete + :return: True if the file was deleted, False otherwise """ - core.BNProjectDeleteFile(self._handle, file._handle) + return core.BNProjectDeleteFile(self._handle, file._handle) @contextmanager def bulk_operation(self): -- cgit v1.3.1