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 | */ |
29 | class KDECORE_EXPORT KAr : public KArchive |
30 | { |
31 | public: |
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 | |
52 | protected: |
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 | |
86 | protected: |
87 | virtual void virtual_hook( int id, void* data ); |
88 | private: |
89 | class KArPrivate; |
90 | KArPrivate* const d; |
91 | }; |
92 | |
93 | #endif |
94 | |