1/* This file is part of the KDE libraries
2 Copyright (C) 2002 Laurence Anderson <l.d.anderson@warwick.ac.uk>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License version 2 as published by the Free Software Foundation.
7
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details.
12
13 You should have received a copy of the GNU Library General Public License
14 along with this library; see the file COPYING.LIB. If not, write to
15 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16 Boston, MA 02110-1301, USA.
17*/
18#ifndef KAR_H
19#define KAR_H
20
21#include <karchive.h>
22
23/**
24 * KAr is a class for reading archives in ar format. Writing
25 * is not supported.
26 * @short A class for reading ar archives.
27 * @author Laurence Anderson <l.d.anderson@warwick.ac.uk>
28 */
29class KDECORE_EXPORT KAr : public KArchive
30{
31public:
32 /**
33 * Creates an instance that operates on the given filename.
34 *
35 * @param filename is a local path (e.g. "/home/holger/myfile.ar")
36 */
37 KAr( const QString& filename );
38
39 /**
40 * Creates an instance that operates on the given device.
41 * The device can be compressed (KFilterDev) or not (QFile, etc.).
42 * @param dev the device to read from
43 */
44 KAr( QIODevice * dev );
45
46 /**
47 * If the ar file is still opened, then it will be
48 * closed automatically by the destructor.
49 */
50 virtual ~KAr();
51
52protected:
53
54 /*
55 * Writing not supported by this class, will always fail.
56 * @return always false
57 */
58 virtual bool doPrepareWriting( const QString& name, const QString& user, const QString& group, qint64 size,
59 mode_t perm, time_t atime, time_t mtime, time_t ctime );
60
61 /*
62 * Writing not supported by this class, will always fail.
63 * @return always false
64 */
65 virtual bool doFinishWriting( qint64 size );
66
67 /*
68 * Writing not supported by this class, will always fail.
69 * @return always false
70 */
71 virtual bool doWriteDir( const QString& name, const QString& user, const QString& group,
72 mode_t perm, time_t atime, time_t mtime, time_t ctime );
73
74 virtual bool doWriteSymLink( const QString &name, const QString &target,
75 const QString &user, const QString &group, mode_t perm, time_t atime, time_t mtime, time_t ctime );
76
77 /**
78 * Opens the archive for reading.
79 * Parses the directory listing of the archive
80 * and creates the KArchiveDirectory/KArchiveFile entries.
81 *
82 */
83 virtual bool openArchive( QIODevice::OpenMode mode );
84 virtual bool closeArchive();
85
86protected:
87 virtual void virtual_hook( int id, void* data );
88private:
89 class KArPrivate;
90 KArPrivate* const d;
91};
92
93#endif
94