cf12defd28
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
104 lines
3.0 KiB
C++
104 lines
3.0 KiB
C++
/* This file is part of the KDE libraries
|
|
SPDX-FileCopyrightText: 2002 Laurence Anderson <l.d.anderson@warwick.ac.uk>
|
|
|
|
SPDX-License-Identifier: LGPL-2.0-or-later
|
|
*/
|
|
#ifndef KAR_H
|
|
#define KAR_H
|
|
|
|
#include <karchive.h>
|
|
|
|
/**
|
|
* @class KAr kar.h KAr
|
|
*
|
|
* KAr is a class for reading archives in ar format. Writing
|
|
* is not supported. Reading archives that contain files bigger than
|
|
* INT_MAX - 32 bytes is not supported.
|
|
* @short A class for reading ar archives.
|
|
* @author Laurence Anderson <l.d.anderson@warwick.ac.uk>
|
|
*/
|
|
class KARCHIVE_EXPORT KAr : public KArchive
|
|
{
|
|
Q_DECLARE_TR_FUNCTIONS(KAr)
|
|
|
|
public:
|
|
/**
|
|
* Creates an instance that operates on the given filename.
|
|
*
|
|
* @param filename is a local path (e.g. "/home/holger/myfile.ar")
|
|
*/
|
|
explicit KAr(const QString &filename);
|
|
|
|
/**
|
|
* Creates an instance that operates on the given device.
|
|
* The device can be compressed (KCompressionDevice) or not (QFile, etc.).
|
|
* @param dev the device to read from
|
|
*/
|
|
explicit KAr(QIODevice *dev);
|
|
|
|
/**
|
|
* If the ar file is still opened, then it will be
|
|
* closed automatically by the destructor.
|
|
*/
|
|
~KAr() override;
|
|
|
|
protected:
|
|
/*
|
|
* Writing is not supported by this class, will always fail.
|
|
* @return always false
|
|
*/
|
|
bool doPrepareWriting(const QString &name,
|
|
const QString &user,
|
|
const QString &group,
|
|
qint64 size,
|
|
mode_t perm,
|
|
const QDateTime &atime,
|
|
const QDateTime &mtime,
|
|
const QDateTime &ctime) override;
|
|
|
|
/*
|
|
* Writing is not supported by this class, will always fail.
|
|
* @return always false
|
|
*/
|
|
bool doFinishWriting(qint64 size) override;
|
|
|
|
/*
|
|
* Writing is not supported by this class, will always fail.
|
|
* @return always false
|
|
*/
|
|
bool doWriteDir(const QString &name,
|
|
const QString &user,
|
|
const QString &group,
|
|
mode_t perm,
|
|
const QDateTime &atime,
|
|
const QDateTime &mtime,
|
|
const QDateTime &ctime) override;
|
|
|
|
bool doWriteSymLink(const QString &name,
|
|
const QString &target,
|
|
const QString &user,
|
|
const QString &group,
|
|
mode_t perm,
|
|
const QDateTime &atime,
|
|
const QDateTime &mtime,
|
|
const QDateTime &ctime) override;
|
|
|
|
/**
|
|
* Opens the archive for reading.
|
|
* Parses the directory listing of the archive
|
|
* and creates the KArchiveDirectory/KArchiveFile entries.
|
|
*
|
|
*/
|
|
bool openArchive(QIODevice::OpenMode mode) override;
|
|
bool closeArchive() override;
|
|
|
|
protected:
|
|
void virtual_hook(int id, void *data) override;
|
|
|
|
private:
|
|
class KArPrivate;
|
|
KArPrivate *const d;
|
|
};
|
|
|
|
#endif
|