diff options
| author | Josh Ferrell <josh@vector35.com> | 2020-01-23 15:23:07 -0500 |
|---|---|---|
| committer | Josh Ferrell <josh@vector35.com> | 2020-02-06 15:24:27 -0500 |
| commit | ec29fc6e601d91c10027ed9277a8bc89f8e5bc7d (patch) | |
| tree | 4df4e2040168932b27a085e1778a1c927c4dd30d | |
| parent | 53fecf0f3cd4557d284eb29a5a5ed96ba43f0b50 (diff) | |
Add clean saving
| -rw-r--r-- | binaryninjaapi.h | 16 | ||||
| -rw-r--r-- | binaryninjacore.h | 8 | ||||
| -rw-r--r-- | binaryview.cpp | 20 | ||||
| -rw-r--r-- | filemetadata.cpp | 16 | ||||
| -rw-r--r-- | python/filemetadata.py | 12 |
5 files changed, 36 insertions, 36 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index ba863efa..9c10b80b 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -897,16 +897,16 @@ __attribute__ ((format (printf, 1, 2))) void MarkFileSaved(); bool IsBackedByDatabase() const; - bool CreateDatabase(const std::string& name, BinaryView* data); + bool CreateDatabase(const std::string& name, BinaryView* data, bool clean = false); bool CreateDatabase(const std::string& name, BinaryView* data, - const std::function<void(size_t progress, size_t total)>& progressCallback); + const std::function<void(size_t progress, size_t total)>& progressCallback, bool clean = false); Ref<BinaryView> OpenExistingDatabase(const std::string& path); Ref<BinaryView> OpenExistingDatabase(const std::string& path, const std::function<void(size_t progress, size_t total)>& progressCallback); Ref<BinaryView> OpenDatabaseForConfiguration(const std::string& path); - bool SaveAutoSnapshot(BinaryView* data); + bool SaveAutoSnapshot(BinaryView* data, bool clean = false); bool SaveAutoSnapshot(BinaryView* data, - const std::function<void(size_t progress, size_t total)>& progressCallback); + const std::function<void(size_t progress, size_t total)>& progressCallback, bool clean = false); bool Rebase(BinaryView* data, uint64_t address); bool Rebase(BinaryView* data, uint64_t address, const std::function<void(size_t progress, size_t total)>& progressCallback); @@ -1452,11 +1452,11 @@ __attribute__ ((format (printf, 1, 2))) bool IsModified() const; bool IsAnalysisChanged() const; bool IsBackedByDatabase() const; - bool CreateDatabase(const std::string& path); + bool CreateDatabase(const std::string& path, bool clean = false); bool CreateDatabase(const std::string& path, - const std::function<void(size_t progress, size_t total)>& progressCallback); - bool SaveAutoSnapshot(); - bool SaveAutoSnapshot(const std::function<void(size_t progress, size_t total)>& progressCallback); + const std::function<void(size_t progress, size_t total)>& progressCallback, bool clean = false); + bool SaveAutoSnapshot(bool clean = false); + bool SaveAutoSnapshot(const std::function<void(size_t progress, size_t total)>& progressCallback, bool clean = false); void BeginUndoActions(); void AddUndoAction(UndoAction* action); diff --git a/binaryninjacore.h b/binaryninjacore.h index 04793b09..a2bc9b75 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -2206,16 +2206,16 @@ __attribute__ ((format (printf, 1, 2))) BINARYNINJACOREAPI void BNMarkFileSaved(BNFileMetadata* file); BINARYNINJACOREAPI bool BNIsBackedByDatabase(BNFileMetadata* file); - BINARYNINJACOREAPI bool BNCreateDatabase(BNBinaryView* data, const char* path); + BINARYNINJACOREAPI bool BNCreateDatabase(BNBinaryView* data, const char* path, bool clean); BINARYNINJACOREAPI bool BNCreateDatabaseWithProgress(BNBinaryView* data, const char* path, - void* ctxt, void (*progress)(void* ctxt, size_t progress, size_t total)); + void* ctxt, void (*progress)(void* ctxt, size_t progress, size_t total), bool clean); BINARYNINJACOREAPI BNBinaryView* BNOpenExistingDatabase(BNFileMetadata* file, const char* path); BINARYNINJACOREAPI BNBinaryView* BNOpenExistingDatabaseWithProgress(BNFileMetadata* file, const char* path, void* ctxt, void (*progress)(void* ctxt, size_t progress, size_t total)); BINARYNINJACOREAPI BNBinaryView* BNOpenDatabaseForConfiguration(BNFileMetadata* file, const char* path); - BINARYNINJACOREAPI bool BNSaveAutoSnapshot(BNBinaryView* data); + BINARYNINJACOREAPI bool BNSaveAutoSnapshot(BNBinaryView* data, bool clean); BINARYNINJACOREAPI bool BNSaveAutoSnapshotWithProgress(BNBinaryView* data, void* ctxt, - void (*progress)(void* ctxt, size_t progress, size_t total)); + void (*progress)(void* ctxt, size_t progress, size_t total), bool clean); BINARYNINJACOREAPI bool BNRebase(BNBinaryView* data, uint64_t address); BINARYNINJACOREAPI bool BNRebaseWithProgress(BNBinaryView* data, uint64_t address, void* ctxt, void (*progress)(void* ctxt, size_t progress, size_t total)); diff --git a/binaryview.cpp b/binaryview.cpp index 3c5991d0..b05f4d02 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -1117,34 +1117,34 @@ bool BinaryView::IsBackedByDatabase() const } -bool BinaryView::CreateDatabase(const string& path) +bool BinaryView::CreateDatabase(const string& path, bool clean) { auto parent = GetParentView(); if (parent) - return parent->CreateDatabase(path); - return m_file->CreateDatabase(path, this); + return parent->CreateDatabase(path, clean); + return m_file->CreateDatabase(path, this, clean); } bool BinaryView::CreateDatabase(const string& path, - const function<void(size_t progress, size_t total)>& progressCallback) + const function<void(size_t progress, size_t total)>& progressCallback, bool clean) { auto parent = GetParentView(); if (parent) - return parent->CreateDatabase(path); - return m_file->CreateDatabase(path, this, progressCallback); + return parent->CreateDatabase(path, clean); + return m_file->CreateDatabase(path, this, progressCallback, clean); } -bool BinaryView::SaveAutoSnapshot() +bool BinaryView::SaveAutoSnapshot(bool clean) { - return m_file->SaveAutoSnapshot(this); + return m_file->SaveAutoSnapshot(this, clean); } -bool BinaryView::SaveAutoSnapshot(const function<void(size_t progress, size_t total)>& progressCallback) +bool BinaryView::SaveAutoSnapshot(const function<void(size_t progress, size_t total)>& progressCallback, bool clean) { - return m_file->SaveAutoSnapshot(this, progressCallback); + return m_file->SaveAutoSnapshot(this, progressCallback, clean); } diff --git a/filemetadata.cpp b/filemetadata.cpp index a4c3e52d..a8fb8889 100644 --- a/filemetadata.cpp +++ b/filemetadata.cpp @@ -270,18 +270,18 @@ bool FileMetadata::IsBackedByDatabase() const } -bool FileMetadata::CreateDatabase(const string& name, BinaryView* data) +bool FileMetadata::CreateDatabase(const string& name, BinaryView* data, bool clean) { - return BNCreateDatabase(data->GetObject(), name.c_str()); + return BNCreateDatabase(data->GetObject(), name.c_str(), clean); } bool FileMetadata::CreateDatabase(const string& name, BinaryView* data, - const function<void(size_t progress, size_t total)>& progressCallback) + const function<void(size_t progress, size_t total)>& progressCallback, bool clean) { DatabaseProgressCallbackContext cb; cb.func = progressCallback; - return BNCreateDatabaseWithProgress(data->GetObject(), name.c_str(), &cb, DatabaseProgressCallback); + return BNCreateDatabaseWithProgress(data->GetObject(), name.c_str(), &cb, DatabaseProgressCallback, clean); } @@ -315,18 +315,18 @@ Ref<BinaryView> FileMetadata::OpenDatabaseForConfiguration(const string& path) } -bool FileMetadata::SaveAutoSnapshot(BinaryView* data) +bool FileMetadata::SaveAutoSnapshot(BinaryView* data, bool clean) { - return BNSaveAutoSnapshot(data->GetObject()); + return BNSaveAutoSnapshot(data->GetObject(), clean); } bool FileMetadata::SaveAutoSnapshot(BinaryView* data, - const function<void(size_t progress, size_t total)>& progressCallback) + const function<void(size_t progress, size_t total)>& progressCallback, bool clean) { DatabaseProgressCallbackContext cb; cb.func = progressCallback; - return BNSaveAutoSnapshotWithProgress(data->GetObject(), &cb, DatabaseProgressCallback); + return BNSaveAutoSnapshotWithProgress(data->GetObject(), &cb, DatabaseProgressCallback, clean); } diff --git a/python/filemetadata.py b/python/filemetadata.py index b18ef5b3..9e6e6fd1 100644 --- a/python/filemetadata.py +++ b/python/filemetadata.py @@ -325,13 +325,13 @@ class FileMetadata(object): def navigate(self, view, offset): return core.BNNavigate(self.handle, str(view), offset) - def create_database(self, filename, progress_func = None): + def create_database(self, filename, progress_func = None, clean = False): if progress_func is None: - return core.BNCreateDatabase(self.raw.handle, str(filename)) + return core.BNCreateDatabase(self.raw.handle, str(filename), clean) else: return core.BNCreateDatabaseWithProgress(self.raw.handle, str(filename), None, ctypes.CFUNCTYPE(None, ctypes.c_void_p, ctypes.c_ulonglong, ctypes.c_ulonglong)( - lambda ctxt, cur, total: progress_func(cur, total))) + lambda ctxt, cur, total: progress_func(cur, total)), clean) def open_existing_database(self, filename, progress_func = None): if progress_func is None: @@ -350,13 +350,13 @@ class FileMetadata(object): return None return binaryninja.binaryview.BinaryView(file_metadata = self, handle = view) - def save_auto_snapshot(self, progress_func = None): + def save_auto_snapshot(self, progress_func = None, clean = False): if progress_func is None: - return core.BNSaveAutoSnapshot(self.raw.handle) + return core.BNSaveAutoSnapshot(self.raw.handle, clean) else: return core.BNSaveAutoSnapshotWithProgress(self.raw.handle, None, ctypes.CFUNCTYPE(None, ctypes.c_void_p, ctypes.c_ulonglong, ctypes.c_ulonglong)( - lambda ctxt, cur, total: progress_func(cur, total))) + lambda ctxt, cur, total: progress_func(cur, total)), clean) def get_view_of_type(self, name): view = core.BNGetFileViewOfType(self.handle, str(name)) |
