summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2020-01-23 15:23:07 -0500
committerJosh Ferrell <josh@vector35.com>2020-02-06 15:24:27 -0500
commitec29fc6e601d91c10027ed9277a8bc89f8e5bc7d (patch)
tree4df4e2040168932b27a085e1778a1c927c4dd30d
parent53fecf0f3cd4557d284eb29a5a5ed96ba43f0b50 (diff)
Add clean saving
-rw-r--r--binaryninjaapi.h16
-rw-r--r--binaryninjacore.h8
-rw-r--r--binaryview.cpp20
-rw-r--r--filemetadata.cpp16
-rw-r--r--python/filemetadata.py12
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))