Add optional password for archive writer

This commit is contained in:
Georg Hagen
2025-02-05 23:23:23 +01:00
parent 0d2bcbbdf6
commit 3a32197cc3
2 changed files with 6 additions and 4 deletions

View File

@@ -11,10 +11,11 @@
#include <archive.h> #include <archive.h>
#include <archive_entry.h> #include <archive_entry.h>
#include <iostream> #include <iostream>
#include <units.h>
namespace OpenVulkano namespace OpenVulkano
{ {
ArchiveWriter::ArchiveWriter(const char* fileName, ArchiveConfiguration archiveConfiguration, const std::shared_ptr<spdlog::logger>& logger) ArchiveWriter::ArchiveWriter(const char* fileName, ArchiveConfiguration archiveConfiguration, const std::shared_ptr<spdlog::logger>& logger, const char* password)
: ArchiveBase(archive_write_new(), archive_entry_new(), logger) : ArchiveBase(archive_write_new(), archive_entry_new(), logger)
, m_archiveConfig(archiveConfiguration) , m_archiveConfig(archiveConfiguration)
, m_shouldCompress(&SimpleFileTypeShouldCompressChecker) , m_shouldCompress(&SimpleFileTypeShouldCompressChecker)
@@ -30,6 +31,7 @@ namespace OpenVulkano
std::string level = "compression-level=" + std::to_string(archiveConfiguration.compressionLevel); std::string level = "compression-level=" + std::to_string(archiveConfiguration.compressionLevel);
ChkErr(archive_write_set_options(m_archive, level.c_str())); ChkErr(archive_write_set_options(m_archive, level.c_str()));
} }
if (password) ChkErr(archive_write_set_passphrase(m_archive, password));
ChkErr(archive_write_open_filename(m_archive, fileName)); ChkErr(archive_write_open_filename(m_archive, fileName));
} }

View File

@@ -26,11 +26,11 @@ namespace OpenVulkano
std::function<bool(const FileDescription&)> m_shouldCompress; std::function<bool(const FileDescription&)> m_shouldCompress;
public: public:
ArchiveWriter(const char* fileName, const std::shared_ptr<spdlog::logger>& logger = nullptr) ArchiveWriter(const char* fileName, const std::shared_ptr<spdlog::logger>& logger = nullptr, const char* password = nullptr)
: ArchiveWriter(fileName, ArchiveConfiguration::FromFileName(fileName), logger) : ArchiveWriter(fileName, ArchiveConfiguration::FromFileName(fileName), logger, password)
{} {}
ArchiveWriter(const char* fileName, ArchiveConfiguration archiveConfiguration, const std::shared_ptr<spdlog::logger>& logger = nullptr); ArchiveWriter(const char* fileName, ArchiveConfiguration archiveConfiguration, const std::shared_ptr<spdlog::logger>& logger = nullptr, const char* password = nullptr);
~ArchiveWriter() override; ~ArchiveWriter() override;