From 172511fabc0c94d249a52f6bc117772d91e438ae Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Mon, 29 Jan 2024 14:11:37 -0500 Subject: Add creation timestamp to ProjectFile --- binaryninjaapi.h | 5 +++-- binaryninjacore.h | 8 +++++--- project.cpp | 14 ++++++++++---- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/binaryninjaapi.h b/binaryninjaapi.h index 4dc1ac07..79295b6e 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -2635,6 +2635,7 @@ namespace BinaryNinja { Ref GetFolder() const; void SetFolder(Ref folder); bool Export(const std::string& destination) const; + int64_t GetCreationTimestamp() const; }; @@ -2675,9 +2676,9 @@ namespace BinaryNinja { void 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, 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 = {}); Ref CreateFile(const std::vector& contents, Ref folder, const std::string& name, const std::string& description, const std::function& progressCallback = {}); - Ref CreateFileUnsafe(const std::vector& contents, Ref folder, const std::string& name, const std::string& description, const std::string& id, const std::function& progressCallback = {}); + Ref CreateFileUnsafe(const std::vector& contents, Ref folder, const std::string& name, const std::string& description, const std::string& id, int64_t creationTimestamp, const std::function& progressCallback = {}); std::vector> GetFiles() const; Ref GetFileById(const std::string& id) const; Ref GetFileByPathOnDisk(const std::string& path); diff --git a/binaryninjacore.h b/binaryninjacore.h index 9d4294b4..204390ec 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -37,7 +37,7 @@ // 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 47 +#define BN_CURRENT_CORE_ABI_VERSION 48 // 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 @@ -3334,11 +3334,11 @@ extern "C" BINARYNINJACOREAPI BNProjectFile* BNProjectCreateFileFromPath(BNProject* project, const char* path, BNProjectFolder* folder, const char* name, const char* description, void* ctxt, bool (*progress)(void* ctxt, size_t progress, size_t total)); - BINARYNINJACOREAPI BNProjectFile* BNProjectCreateFileFromPathUnsafe(BNProject* project, const char* path, BNProjectFolder* folder, const char* name, const char* description, const char* id, void* ctxt, + BINARYNINJACOREAPI BNProjectFile* BNProjectCreateFileFromPathUnsafe(BNProject* project, const char* path, BNProjectFolder* folder, const char* name, const char* description, const char* id, int64_t creationTimestamp, void* ctxt, bool (*progress)(void* ctxt, size_t progress, size_t total)); BINARYNINJACOREAPI BNProjectFile* BNProjectCreateFile(BNProject* project, const uint8_t* contents, size_t contentsSize, BNProjectFolder* folder, const char* name, const char* description, void* ctxt, bool (*progress)(void* ctxt, size_t progress, size_t total)); - BINARYNINJACOREAPI BNProjectFile* BNProjectCreateFileUnsafe(BNProject* project, const uint8_t* contents, size_t contentsSize, BNProjectFolder* folder, const char* name, const char* description, const char* id, void* ctxt, + BINARYNINJACOREAPI BNProjectFile* BNProjectCreateFileUnsafe(BNProject* project, const uint8_t* contents, size_t contentsSize, BNProjectFolder* folder, const char* name, const char* description, const char* id, int64_t creationTimestamp, void* ctxt, bool (*progress)(void* ctxt, size_t progress, size_t total)); BINARYNINJACOREAPI BNProjectFile** BNProjectGetFiles(BNProject* project, size_t* count); BINARYNINJACOREAPI BNProjectFile* BNProjectGetFileById(BNProject* project, const char* id); @@ -3375,6 +3375,8 @@ extern "C" BINARYNINJACOREAPI void BNProjectFileSetFolder(BNProjectFile* file, BNProjectFolder* folder); BINARYNINJACOREAPI BNProject* BNProjectFileGetProject(BNProjectFile* file); BINARYNINJACOREAPI bool BNProjectFileExport(BNProjectFile* file, const char* destination); + BINARYNINJACOREAPI int64_t BNProjectFileGetCreationTimestamp(BNProjectFile* file); + // ProjectFolder object BINARYNINJACOREAPI BNProjectFolder* BNNewProjectFolderReference(BNProjectFolder* folder); diff --git a/project.cpp b/project.cpp index b456d66c..f6e6b49c 100644 --- a/project.cpp +++ b/project.cpp @@ -418,11 +418,11 @@ Ref Project::CreateFileFromPath(const std::string& path, Ref Project::CreateFileFromPathUnsafe(const std::string& path, Ref folder, const std::string& name, const std::string& description,const std::string& id, const std::function& progressCallback) +Ref Project::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) { ProgressContext cb; cb.callback = progressCallback; - BNProjectFile* file = BNProjectCreateFileFromPathUnsafe(m_object, path.c_str(), folder ? folder->m_object : nullptr, name.c_str(), description.c_str(), id.c_str(), &cb, ProgressCallback); + BNProjectFile* file = BNProjectCreateFileFromPathUnsafe(m_object, path.c_str(), folder ? folder->m_object : nullptr, name.c_str(), description.c_str(), id.c_str(), creationTimestamp, &cb, ProgressCallback); if (file == nullptr) return nullptr; return new ProjectFile(file); @@ -440,11 +440,11 @@ Ref Project::CreateFile(const std::vector& contents, Ref

Project::CreateFileUnsafe(const std::vector& contents, Ref folder, const std::string& name, const std::string& description,const std::string& id, const std::function& progressCallback) +Ref Project::CreateFileUnsafe(const std::vector& contents, Ref folder, const std::string& name, const std::string& description, const std::string& id, int64_t creationTimestamp, const std::function& progressCallback) { ProgressContext cb; cb.callback = progressCallback; - BNProjectFile* file = BNProjectCreateFileUnsafe(m_object, contents.data(), contents.size(), folder ? folder->m_object : nullptr, name.c_str(), description.c_str(), id.c_str(), &cb, ProgressCallback); + BNProjectFile* file = BNProjectCreateFileUnsafe(m_object, contents.data(), contents.size(), folder ? folder->m_object : nullptr, name.c_str(), description.c_str(), id.c_str(), creationTimestamp, &cb, ProgressCallback); if (file == nullptr) return nullptr; return new ProjectFile(file); @@ -609,6 +609,12 @@ bool ProjectFile::Export(const std::string& destination) const } +int64_t ProjectFile::GetCreationTimestamp() const +{ + return BNProjectFileGetCreationTimestamp(m_object); +} + + ProjectFolder::ProjectFolder(BNProjectFolder* folder) { m_object = folder; -- cgit v1.3.1