9#include <QtCore/QByteArray>
10#include <QtCore/QFile>
11#include <QtCore/QIODevice>
12#include <QtCore/QLoggingCategory>
13#include <QtCore/QString>
14#include <QtCore/QStringList>
70 struct archive*
handle()
const {
return _archive; }
73 struct archive*
release() {
auto *a = _archive; _archive =
nullptr;
return a; }
76 bool isOpen()
const {
return _archive !=
nullptr; }
91 struct archive *_archive =
nullptr;
93 QByteArray _resourceData;
94 QIODevice *_device =
nullptr;
105la_ssize_t
deviceReadCallback(
struct archive *a,
void *clientData,
const void **buffer);
111la_int64_t
deviceSkipCallback(
struct archive *a,
void *clientData, la_int64_t request);
123la_int64_t
deviceSeekCallback(
struct archive *a,
void *clientData, la_int64_t offset,
int whence);
153bool extractAnyArchive(
const QString &archivePath,
const QString &outputDirectoryPath,
155 qint64 maxBytes = 0);
168 qint64 maxBytes = 0);
176 const QString &outputPath);
190 const QString &outputDirectoryPath);
199bool extractByPattern(
const QString &archivePath,
const QStringList &patterns,
200 const QString &outputDirectoryPath,
201 QStringList *extractedFiles =
nullptr);
236bool extractWithFilter(
const QString &archivePath,
const QString &outputDirectoryPath,
239 qint64 maxBytes = 0);
253 qint64 maxBytes = 0);
273 qint64 maxBytes = 0);
289 qint64 maxBytes = 0);
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
Shared type definitions for compression/archive operations.
std::function< void(int)> ProgressCallback
RAII wrapper for libarchive reader with automatic cleanup.
bool open(const QString &path, ReaderMode mode=ReaderMode::AllFormats)
bool isOpen() const
Check if archive is open.
struct archive * handle() const
Get the underlying archive handle.
QString formatName() const
QString filterName() const
struct archive * release()
Release ownership of archive handle (caller must free)
ArchiveReader & operator=(const ArchiveReader &)=delete
ArchiveReader(const ArchiveReader &)=delete
std::function< bool(const ArchiveEntry &entry)> EntryFilter
std::function< bool(qint64 bytesProcessed, qint64 totalBytes)> ProgressCallback
constexpr quint32 kDefaultFilePermissions
Default Unix permissions for extracted files (rw-r–r–)
QGCCompression::EntryFilter EntryFilter
ArchiveStats getArchiveStats(const QString &archivePath)
bool extractMultipleFiles(const QString &archivePath, const QStringList &fileNames, const QString &outputDirectoryPath)
QString lastDetectedFormatName()
bool extractWithFilter(const QString &archivePath, const QString &outputDirectoryPath, EntryFilter filter, ProgressCallback progress, qint64 maxBytes)
la_int64_t deviceSkipCallback(struct archive *, void *clientData, la_int64_t request)
QGCCompression::ProgressCallback ProgressCallback
QString lastDetectedFilterName()
ReaderMode
Mode for ArchiveReader format support.
@ AllFormats
Support all archive formats (ZIP, TAR, 7z, etc.)
@ RawFormat
Raw format for single-file decompression (.gz, .xz, etc.)
bool decompressSingleFile(const QString &inputPath, const QString &outputPath, ProgressCallback progress, qint64 maxBytes)
bool extractFromDevice(QIODevice *device, const QString &outputDirectoryPath, ProgressCallback progress, qint64 maxBytes)
QGCCompression::ArchiveEntry ArchiveEntry
QStringList listArchiveEntries(const QString &archivePath)
la_ssize_t deviceReadCallback(struct archive *, void *clientData, const void **buffer)
bool extractSingleFile(const QString &archivePath, const QString &fileName, const QString &outputPath)
bool openArchiveForReading(struct archive *a, const QString &filePath, QByteArray &resourceData)
QByteArray decompressDataFromDevice(QIODevice *device, qint64 maxBytes)
QList< ArchiveEntry > listArchiveEntriesDetailed(const QString &archivePath)
la_int64_t deviceSeekCallback(struct archive *, void *clientData, la_int64_t offset, int whence)
bool extractArchiveAtomic(const QString &archivePath, const QString &outputDirectoryPath, ProgressCallback progress, qint64 maxBytes)
QByteArray extractFileToMemory(const QString &archivePath, const QString &fileName)
QByteArray decompressDataFromMemory(const QByteArray &data, qint64 maxBytes)
ArchiveEntry toArchiveEntry(struct archive_entry *entry)
bool validateArchive(const QString &archivePath)
bool fileExistsInArchive(const QString &archivePath, const QString &fileName)
bool decompressFromDevice(QIODevice *device, const QString &outputPath, ProgressCallback progress, qint64 maxBytes)
bool extractAnyArchive(const QString &archivePath, const QString &outputDirectoryPath, ProgressCallback progress, qint64 maxBytes)
int deviceCloseCallback(struct archive *, void *)
QGCCompression::ArchiveStats ArchiveStats
QByteArray extractFileDataFromDevice(QIODevice *device, const QString &fileName)
bool extractByPattern(const QString &archivePath, const QStringList &patterns, const QString &outputDirectoryPath, QStringList *extractedFiles)
Metadata for a single entry in an archive.
Summary statistics for an archive.